Regression vs Classification
Regression
Classification
목표
연속적인 수치 예측
이산적인 클래스 예측
평가지표
MSE, MAE 등
정확도, 정밀도, 재현율, F1-Measure 등
예시
주택 가격 예측, 기온 변화 예측
이메일이 스팸인지, 이미지가 고양이인지 개인지 분류
문제파악 -> 데이터 확보 -> 가설 함수 -> 가중치 값 찾기 -> 오차 함수 -> 수학 공식 결정 -> 최솟값을 만드는 가충치 검색 방법 찾기 -> (신경망일 경우) 역전파 알고리즘 -> 정규화
1. 훈련 모델
2. 손실 함수
3. 최적화
Underfitting & Overfitting
훈련 모델 (Training Function)
비모수 모델 (Nonparametric Model)
$N$ : 학습데이터에 대한 갯수
$y_i$ : 정답값
$\hat{f}(x_i)$ : 예측값
Mean Absolute Error (MAE)
$$ \frac{1}{N} \sum_{i=1}^{N} \vert y_i - \hat{f}(x_i) \vert$$
(Root) Mean Squared Error (MSE/RMSE)
$$ \frac{1}{N} \sum_{i=1}^{N} [y_i - \hat{f}(x_i)]^2$$
$$ H(p, q) = \sum_i p_i log_2 \frac{1}{q_i} $$
$$ = - \sum_i p_i log_2 q_i$$
$$ H(p, q) = -\int p(x) log q(x)dx$$
$$ y \in {0, 1}$$
$$ H(y, \hat{y}) = -ylog\hat{y} - (1 - y)log(1 - \hat{y})$$
경사 하강법 (Gradient Descent)
기울기 소실 문제 (Vanishing Gradient Problem)
배치 경사 하강법 (Batch Gradient Descent)
확률적 경사 하강법 (Stochatic Gradient Desent)
L1 정규화 (Lasso Regression)
$$Loss = MSE + \lambda\sum\vert w_i \vert$$
L2 정규화 (Ridge Regression)
$$Loss = MSE + \lambda\sum w_i^2$$
모든 가중치를 작게 만드는 효과가 있음.
가중치가 0에 가깝도록 조정하여 모델의 복잡성을 줄임.
Support Vector Machine (SVM)
Precision-Recall Tradeoff
AUC (Area Under the Curve)
L1 정규화 (Lasso Regression)
$$Loss = MSE + \lambda\sum\vert w_i \vert$$
L2 정규화 (Ridge Regression)
$$Loss = MSE + \lambda\sum w_i^2$$
모든 가중치를 작게 만드는 효과가 있음.
가중치가 0에 가깝도록 조정하여 모델의 복잡성을 줄임.
수학과 신호처리, 컴퓨터 비전에 널리 사용되는 연산.
두 함수나 신호를 결합하여 새로운 함수나 신호를 생성하는데 사용.
합성곱 신경망 (CNN)에서는 이미지나 시계열 데이터를 처리하는 핵심적인 기술.
이동 시킬 함수를 한번 뒤집음.
교환법칙 성립.
$$ (k * f)(t) = \int_{-\infty}^{\infty} f(s) k(-s + t) ds = \int_{-\infty}^{\infty} f(-s+t)k(s)ds $$
$$ (k * f)(n) = \sum_{-\infty}^{\infty} f(s) k(-s + n) ds = \sum_{-\infty}^{\infty} f(-s + n)k(s)ds $$
교차 상관 연산 (Cross-Colrelation)
이동 시킬 함수를 안 뒤집음. \
$$ (k * f)(t) = \int_{-\infty}^{\infty} f(s) k(s + t) ds = \int_{-\infty}^{\infty} f(s - t)k(s)ds $$
$$ (k * f)(n) = \sum_{-\infty}^{\infty} f(s) k(s + n) ds = \sum_{-\infty}^{\infty} f(s - n)k(s)ds $$
$x(n) = ( x_0, x_1, x_2, x_3, x_4 )$
$k(n) = ( k_0, k_1, k_2)$
$$ (k*x)(n) = \sum_{s=-\infty}^{\infty} x(s) k(s + n)$$
$$ = ... + x(-1)k(-1 + n) + x(0)k(n) + x(1)k(1 + n) + x(2)k(2 + n) + ... $$
의미있는 n 값은 ${-4, -3, -2, -1, 0, 1, 2}$ 뿐이다
$$(k*x)(-4) = x_4k_0 $$
$$(k*x)(-3) = x_3k_0 + x_4k_1 $$
$$(k*x)(-2) = x_2k_0 + x_3k_2 + x_4k_1 $$
$$(k*x)(-1) = x_1k_0 + x_2k_1 + x_3k_2 $$
$$(k*x)(0) = x_0k_0 + x_1k_1 + x_2k_2$$
$$(k*x)(1) = x_0k_1 + x_1k_2 $$
$$(k*x)(2) = x_0k_2 $$
$(k*x)(-5) = ... + x_{4}k_{-1} + x_{5}k_0 + ...$
$k_{-1}$ 와 $x_{5}$ 는 정의 되어 있지 않음.
즉, n = -5일때는 k와 x가 겹치는 부분이 없음. ( 의미 없음 )
합성곱 연산은 신호 x(n)을 고정시키고 필터 k(n)을 오른쪽에서 왼쪽으로 밀면 이해하기 쉽다
$$ (k*x)(m, n) = \sum_{q=-\infty}^{\infty}\sum_{s=-\infty}^{\infty} s(m+q, n+s)k(q, s)$$
4 X 4 행렬 $A$ 와 3 X 3 커널 K사이의 (뒤집지 않은)합성곱 연산.
$$ A * K = \left(\begin{array}{cc} a_{00} & a_{01} & a_{02} & a_{03} \\
a_{10} & a_{11} & a_{12} & a_{13} \\
a_{20} & a_{21}^* & a_{22} & a_{23} \\
a_{30} & a_{31} & a_{32} & a_{33} \end{array} \right) *
\left(\begin{array}{cc} k_{00} & k_{01} & k_{02} \\
k_{10} & k_{11} & k_{12} \\
k_{20} & k_{21} & k_{22} \end{array} \right) $$
$z_{21}$ 항 구하기 ( $a_{21}$ 주위로 3 X 3 행렬과 커널 k의 곱)
$$ z_{21} = a_{10}k_{00} + a_{11}k_{01} + a_{12}k_{02} + a_{20}k_{10} + a_{21}k_{11} + a_{22}k_{12} + a_{30}k_{20} + a_{31}k_{21} + a_{32}k_{22} $$
$$Z = \left(\begin{array}{cc} z_{11} & z_{12} \\
z_{21} & z_{22} \end{array} \right)$$
출력 행렬이 원본 이미지와 동일한 크기를 갖고 싶다면?
원본 이미지에 0으로 패딩하기.
$$ A_{padded} = \left(\begin{array}{cc} 0 & 0 & 0 & 0 & 0 & 0 \
0 & a_{00} & a_{01} & a_{02} & a_{03} & 0 \
0 & a_{10} & a_{11} & a_{12} & a_{13} & 0 \
0 & a_{20} & a_{21} & a_{22} & a_{23} & 0 \\
0 & a_{30} & a_{31} & a_{32} & a_{33} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 \end{array} \right) $$
Reflection - 경계픽셀과 동일한 값을 그 아래층으로 추가하는 방법
Wrap-Around
multiple channels
이미지 처리 및 컴퓨터 비전에서 이미지에 특정한 변환을 적용하기 위해 사용되는 행렬(커널)
주로 엣지 검출, 블러링, 샤프닝, 노이즈 제거 에 사용.
합성곱 연산을 통해 생성되는 출력 데이터.
이미지나 입력 데이터에서 특정 특징을 추출한 결과물.
CNN에서 주로 사용하는 차원 축소 기법.
특징 추출 후의 피처맵에 적용.
전체 피처맵을 하나의 값으로 압축.
보통 Network 마지막을 담당하며, 분류나 회기 문제에 적합한 형태로 만듦.
계산량 절감 - 피처맵의 크기를 줄여 계산량이 감소함.
불변성 증가 - 이미지가 작은 이동이나 변형에 영향을 덜 받음.
과적합 방지 - 중요한 특징만 남겨서, 모델의 과적합을 방지할 수 있음.
정보손실 - 가장자리가 중요한 출력값일 때, 그 정보가 사라짐.
공간 정보 상실 - 객체의 정확한 위치정보가 상실.
완전 연결층(FC, Fully Connected Layer)
최종적으로 나온 Feature Map을 입력으로 받아 레이블을 예측함.
$$ c^1v_1 + c^2v_2 + ... + c^nv_n = 0, c^i \in R, some ; c^i \not = 0$$
라고 한다면, 벡터 $v_1, v_2, ... , v_3$ 는 $Linearly; Dependent$ 하다.
아니라면, $Linearly; Independent$ 하다.
행렬식과 Linearly Dependent 간의 관계
$$ c^1v_1 + c^2v_2 + c^3v_3 = 0$$
위와 같은 선형 시스템이 있다고 한다면 아래 행렬식으로 표현 가능하고
$$ \to \left(\begin{array}{cc}v1 & v2 & v3\end{array}\right) \left(\begin{array}{cc} c^1 \\
c^2 \\
c^3 \end{array}\right) = 0$$
$v_i$ 의 행렬을 M으로 표기할 수 있다.
$$ M := \left(\begin{array}{cc}v1 & v2 & v3\end{array}\right)$$
$$\to M \left(\begin{array}{cc}c^1 \\
c^2 \\
c^3\end{array}\right) = 0$$
위 식에서 행렬 M에 대해 역행렬이 존재할 경우, Linear Dependent 하다.
그리고 행렬식 $det(M) = 0$ 인 경우, 역행렬이 존재한다.
$det(M) \not ={0}$ 이면 $Linearly; Independent$ 하다
역행렬을 구할때 왜 행렬식이 0이 되면 안될까?
역행렬을 구하는 수식은 아래와 같다.
$$ A^{-1} = \frac{1}{det(A)}adj(A)$$
행렬식이 0이 되어서 1/0가 된다면 이를 를 정의할 수 없음.
$c^1v_1 + c^2v_2 + c^3v_3$ 를 $Linear; Combination$ 이라고 한다
$V$ 를 벡터 공간이라고 하고, $S$ 집합이 $Linearly; Independent$ 하고 $V = spanS$ 일 때,
$S$ 집합을 V의 $basis$ (기저)라고 한다.
$basis$ 인 $S$ 가 유한 개의 원소를 가지고 있다면, $V$ 를 $finite-dimensional$ 이라고 하고,
$S$ 원소의 개수를 $V$ 의 $dimension$ 이라고 한다.
$S$ 가 벡터 공간 $V$ 의 $basis$ 고, $T$ 가 $Linearly; Independent$ 벡터 집합이면,
$T$ 의 벡터 개수($m$ )는 항상 $S$ 의 벡터 개수($n$ )보다 작거나 같다.
$$ m \leq n$$
유한 차원의 벡터 공간 $V$ 에 대해서, 무작위의 두 $basis$ 의 벡터 개수는 같다.
$Ax=0$ 를 만족하는 모든 벡터 $x$ 의 집합.
$$ Null(A) = {x \in R^n | Ax = 0 }$$
예시 ( Q 행렬 A의 $null; space$ 는? )
$$ A = \left(\begin{array}{cc} 1 & 2\\
3 & 4\end{array}\right)$$
$$ Ax = 0 $$
$$ \to \left(\begin{array}{cc} 1 & 2\\
3 & 4\end{array}\right)\left(\begin{array}{cc} x_1\ x_2\end{array}\right) = \left(\begin{array}{cc} 0\\
0\end{array}\right)$$
$$\to Null(A) = {t \left[\begin{array}{cc} -2\\
1\end{array}\right] | t \in R }$$
$null; space$ 는 $\left[\begin{array}{cc} -2\
1\end{array}\right]$ 의 방향으로 펼쳐진 1차원 선형 공간.
$null; space$ 의 차원
$$ A \in R^{m \times n}$$
$$ rank(A) + nullity(A) = n$$
주어진 행렬이 갖는 선형 독립적인 행 또는 열의 최대 개수.
행 rank와 열 rank는 항상 같음.
RREF( Reduced Row Echelon Form)으로 변환하여 0이 아닌 행의 개수를 센다.
$$ A = \left[\begin{array}{cc} 1 & 2 & 3\\
4 & 5 & 6\\
7 & 8 & 9 \end{array}\right]$$
가우스 소거법 적용
$$ A \sim \left[\begin{array}{cc} 1 & 2 & 3\\
0 & -3 & -6\\
0 & 0 & 0 \end{array}\right]$$
0 이 아닌 행/열 은 2개
$$ rank = 2 $$
$$ A \in R^{m \times n}$$
$$ rank(A) + nullity(A) = n$$
정방 행렬에서 랭크가 최대일 경우 가역적이다.
가역적(invertible) - 역행렬이 존재한다.
특이 행렬(Singular Matrix) - 역행렬이 존재하지 않는 행렬. ( 행렬식 = 0 )
정방 행렬에서 랭크가 최대가 아니라면 역행렬이 존재 하지 않는다.
차원축소시 랭크와 작거나 같은 차원으로 축소 가능하다.
Eigen Vector & Eigen Value
Principal Component Anlysis (PCA)
불확실성이나 무질서를 수치적으로 표현한 개념.
가능한 모든 사건이 균일한 확률로 일어날 때 최대값을 갖음. ( 불확실성이 높음 )
정보이론에서 많이 쓰이는 개념.
$$ H = \sum (사건발생확률)log_2(\frac{1}{사전발생확률}) \ = \sum_i p_i log_2(\frac{1}{p_i}) \ = -\sum_i p_i log_2(p_i)$$
$H_1$ - 균일한 분포 ( 불확실성이 높음. )
A(0.25) B(0.25) C(0.25) D(0.25)
$$ H_1 = p_a log(\frac{1}{p_a}) + p_b log(\frac{1}{p_b}) + p_c log(\frac{1}{p_c}) + p_d log(\frac{1}{p_d}) \ = \frac{1}{4}log(4) * 4 \ = 2 $$
$H_2$ - 불확실성이 낮음.
A(0.5) B(0.125) C(0.125) D(0.25)
$$ H_2 = p_a log_2(\frac{1}{p_a}) + p_b log_2(\frac{1}{p_b}) + p_c log_2(\frac{1}{p_c}) + p_d log_2(\frac{1}{p_d})$$
$$ = \frac{1}{2}log_2(2) + \frac{1}{8}log_2(8) + \frac{1}{8}log_2(8) + \frac{1}{4}log_2(4)$$
$$ = 1.75 $$
$H_1$ 이 $H_2$ 보다 값이 높음.
가장 균일한게 Entropy가 가장 높음
어떤 문제에 대해 특정 전략을 쓸 때 예상되는 기댓값.
확률 분포 $p$ 를 정답이라고 하고 확률분포 $q$ 를 학습모델이라고 했을 때
전략 $q$ 의 확률분포가 $p$ 와 같을때 Cross Entropy의 값은 최소가 된다.
이러한 성질을 이용해서 학습데이터 ($q_i$ , $p_i$ ) 쌍을 이용해서 최적화 문제에 적용 할 수 있다.
$$ H(p, q) = \sum_i p_i log_2 \frac{1}{q_i} $$
$$ = - \sum_i p_i log_2 q_i$$
$$ H(p, q) = -\int p(x) log q(x)dx$$
Binary Classification에서
$$ y \in {0, 1}$$
$$ H(y, \hat{y}) = -ylog\hat{y} - (1 - y)log(1 - \hat{y})$$
$q$ 가 $p$ 가 다를때 기댓값이 다른 예시
참 확률( 목표 확률 ) : $p = [0.5, 0.125, 0.125, 0.25]$
전략 (학습 확률) : $q = [0.5, 0.125, 0.125, 0.25]$
$$ H_1 = p_1 log_2(\frac{1}{q_1}) + p_2 log_2(\frac{1}{q_2}) + p_3 log_2(\frac{1}{q_3}) + p_4 log_2(\frac{1}{q_4})$$
$$ = \frac{1}{2}log_2(2) + \frac{1}{8}log_2(8) + \frac{1}{8}log_2(8) + \frac{1}{4}log_2(4)$$
$$ = 1.75 $$
전략 (학습 확률) : $q = [0.25, 0.25, 0.25, 0.25]$
$$ H_2 = p_1 log_2(\frac{1}{q_1}) + p_2 log_2(\frac{1}{q_2}) + p_3 log_2(\frac{1}{q_3}) + p_4 log_2(\frac{1}{q_4})$$
$$ = \frac{1}{2}log_2(4) + \frac{1}{8}log_2(4) + \frac{1}{8}log_2(4) + \frac{1}{4}log_2(4)$$
$$ = 2 $$
$q$ 와 $p$ 가 같을 때, Cross-Entropy는 최솟값을 갖는다
$$ H_1 > H_2 $$
KL divergence (Kullback-Leibler divergence)
쿨백-라이블러 발산(Kullback–Leibler divergence, KLD)은 두 확률분포의 차이를 계산하는 데에 사용하는 함수로, 어떤 이상적인 분포에 대해, 그 분포를 근사하는 다른 분포를 사용해 샘플링을 한다면 발생할 수 있는 정보 엔트로피 차이를 계산한다. 상대 엔트로피(relative entropy), 정보 획득량(information gain), 인포메이션 다이버전스(information divergence)라고도 한다.
Bayes 정리라는 수학적 정리를 기반으로 만든 분류 알고리즘.
단순하고 효율성이 좋음.
확률적 해석을 해서 불확실성을 평가하는데 좋음.
다중 클래스 분류에도 쉽게 적용 가능
텍스트 분류 (예: 스팸 필터링), 추천 시스템, 감정 분석 등의 다양한 분야에서 널리 사용.
$$ P(C|X) = \frac{P(X|C) P(C)}{P(X)}$$
식
명칭
설명
예시
$P(C | X)$
사후 확률
데이터 X에서 클래스 C의 사후 확률
$P(스팸 | "무료", "돈", "기회")$
$P(X|C)$
조건부 확률
어떤 사건이 발생했을때, 다른 사건이 발생할 확률
$P("무료" | 스팸)$
$P(C)$
사전 확률
데이터 없이도 알고 있는 확률
$P(스팸) = 0.4$
$P(X)$
전체 확률
데이터 X의 전체 확률
보통 전체니깐 1
$$ P(X|C) = P(x_1|C) \cdot P(x_2|C) \cdot \cdot \cdot P(x_n|C)$$
$$ = \prod_{i=1}^{n}P(x_i|C)$$
$\hat{C}$ 가 가장 큰 $C$ 로 분류.
$$ \hat{C} = \underset{c}{argmax}P(C|X) = \underset{c}{argmax} P(X|C) \cdot P(C)$$
독립성 가정 - 단어간 상관관계 무시
특성의 분포 - feature들이 동일한 분포를 가진다고 가정
희소 데이터 문제 - training set 에 없는 특성이 나온다면?
복잡한 관계 모델링 부족 - 많은 변수가 상호작용하면 문제가 될 수 있음.
불균형 데이터 문제 - $스팸:정상 = 1: 9$ 인경우 다 정상이라고 하면 정확도 90%