미래연구소 딥러닝 2주 차 예습
Computer Science/Deep Learning

미래연구소 딥러닝 2주 차 예습

728x90

미래연구소 http://futurelab.creatorlink.net/



미래연구소에서 딥러닝을 수강 할 때, 수업 전에 유튜브에서 '모두를 위한 Deep Learning'을 들으며 예습하면 도움이 많이 된다.

튜터분께서 다음 주에 예습 겸 들어오면 좋을 강의 번호를 알려주신다.





모두를 위한 Deep Learning lec04

https://www.youtube.com/watch?v=kPxpJY6fRkY&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=9&t=0s


이전 시간에 Hypothesis인 $H(x)=Wx+b$이라는 것을 배웠다.

$x$가 1개 일 때는 $H(x)=Wx+b$이지만,

$x$가 다수일 때, 예를 들어 $x$가 3개 일 때는

$H(x_{1},x_{2},x_{3})=W_{1}x_{1}+W_{2}x_{2}+W_{3}x_{3}+b$로 나타낸다.

이에 더 나아가 $x$가 n개 일 때는

$H(x_{1},x_{2},x_{3},\dots,x_{n})=W_{1}x_{1}+W_{2}x_{2}+W_{3}x_{3}+\cdots+x_{n}+b$이다.


이때 cost function을 구해보자.

$x$가 3일 때는

$cost(W,b)=\frac{1}{m}\sum_{I=1}^{m} (H(x_{1}^{(i)},x_{2}^{(i)},x_{3}^{(i)})-y^{(i)})^{2}$ 인 것을 이전 시간에 배운 cost function에 대입해보면 쉽게 알 수 있다.


위의 Hypothesis 함수를 보면 n이 많아질수록 작성하는 법이 복잡해지는 것을 볼 수 있다.

그럴 때는 행렬(Matrix)를 이용한다.

$W_{1}x_{1}+W_{2}x_{2}+W_{3}x_{3}+\cdots+x_{n}$은

$\begin{pmatrix}x_{1}&x_{2}&x_{3}\end{pmatrix}\cdot\begin{pmatrix}w_{1}\\ w_{2}\\ w_{3}\end{pmatrix}=\begin{pmatrix}x_{1}w_{1}+x_{2}x_{2}+x_{3}x_{3}\end{pmatrix}$로 표현 가능하다.


이처럼 Hypothesis 함수를 matrix로 표현할 때는 $H(X)=XW$로 표현한다.

대문자로 표기하며 $X$가 앞에 오는 형태이다.


$x$의 instance가 여러 개 일 때는

$$\begin{pmatrix}x_{11}&x_{12}&x_{13}\\ x_{21}&x_{22}&x_{23}\\ x_{31}&x_{32}&x_{33}\\ x_{41}&x_{42}&x_{43}\\ x_{51}&x_{52}&x_{53}\end{pmatrix}\cdot\begin{pmatrix}w_{1}\\ w_{2}\\ w_{3}\end{pmatrix}=\begin{pmatrix}x_{11}w_{1}+x_{12}x_{2}+x_{13}x_{3}\\ x_{21}w_{1}+x_{22}x_{2}+x_{23}x_{3}\\ x_{31}w_{1}+x_{32}x_{2}+x_{33}x_{3}\\ x_{41}w_{1}+x_{42}x_{2}+x_{43}x_{3}\\ x_{51}w_{1}+x_{52}x_{2}+x_{53}x_{3}\end{pmatrix}$$

와 같이 표시 가능하다.


보통 $X$에 해당하는 Matrix와 $H(x)$에 해당하는 Matrix는 주어진다.

$\begin{bmatrix}5&3\end{bmatrix}\begin{bmatrix}?&?\end{bmatrix}=\begin{bmatrix}5&1\end{bmatrix}$

우리는 $W$(weight)의 크기를 결정해야 한다. 이를 $W$의 shape이라고 한다.

$\begin{bmatrix}5&3\end{bmatrix}$에서 5는 instance의 개수, 3은 variable이며 $\begin{bmatrix}5&1\end{bmatrix}$에서의 5도 마찬가지로 instance이고 1은 $Y$(label)이다.

$W$은 $X$의 variable과 $H(X)$의 $Y$를 통해 $\begin{bmatrix}3&1\end{bmatrix}$이라는 것을 알 수 있다.

위의 Matrix들이 왜 이렇게 되는지는 선형대수학의 기초 지식만 있으면 알 수 있다.


instance의 값은 우리가 데이터를 계속 입력해줌에 따라 가변 하는 것이기 때문에 $\begin{bmatrix}n&3\end{bmatrix}\begin{bmatrix}3&1\end{bmatrix}=\begin{bmatrix}n&1\end{bmatrix}$처럼 $n$으로 표기 가능하다.

실제 구현에서 numpy에서는 $n$을 '-1'로 표시하고,

TensorFlow에서는 'None'으로 표시한다.


물론 $Y$값도 여러 개로 둘 수 있다.

$\begin{bmatrix}n&3\end{bmatrix}\begin{bmatrix}?&?\end{bmatrix}=\begin{bmatrix}n&2\end{bmatrix}$처럼.

이때 $W$는 $\begin{bmatrix}3&2\end{bmatrix}$




모두를 위한 Deep Learning lec5-1


학습을 한다는 것은 우리가 가지고 있는 데이터를 이용해서 $cost(W)$를 최소화하는 $W$를 찾아내는 것이다.
$W$를 구하기 위해서 Gradient Descent 알고리즘을 사용한다.

Gradient Descent 알고리즘은 $W := W-\alpha\frac{\Delta}{\Delta W}cost(W)$

위의 식은 $cost(W)$이며, 이를 미분 해서 기울기를 구해,

기울기가 0이 되는 곳을 구하면 cost가 최소인 곳을 찾을 수 있다.


$\alpha$는 빨간 색 점의 간격을 결정하며 'learning rate'라고도 부른다.

$\alpha$가 크면 빨리 최소점에 도달할 수 있지만, 정확한 점에 도달하기 힘들며, 

$\alpha$가 작으면 최소점에는 좀 늦게 도달할 수 있지만, 정확한 점에 도달할 수 있게 된다.


Binary Classification

Binary(Logistic) classification은 classification algorithm들 중에서 정확도가 굉장히 좋은 알고리즘으로 알려져 있다.

Binary classification은 0 아니면 1이기 때문에 linear regression에서 사용하는 $H(x)=Wx+b$ 모델이 좋고 간단하긴 하지만 이 함수를 0과 1 사이의 수로 압축해주는 함수가 있었으면 좋겠다는 생각을 했다.

그래서 나온 방법이 기존의 $Wx+b$를 $z=Wx+b$라고 하고

$g(z)=\frac{1}{1+e^{-z}}$함수를 사용하는 방법이다.


$g(z)$함수의 형태는 

sigmoid function

이 함수를 sigmoid function (logistic funtion)이라고 부른다.

$z$가 커질수록 $g(z)$은 1에 가까워지지만 1이 되진 않는다.

마찬가지로 $z$가 작아질수록 $g(z)$은 0에 가까워질 뿐 0이 되진 않는다.

따라서 Binary Classification의 Hypothesis는

$H(X)=\frac{1}{1+e^{W^{T}X}}$로 주어진다.




모두를 위한 Deep Learning lec 5-2


regression에서의 cost function은 2차 함수와 같은 형태인데,
Binary classification의 cost function은 다항 함수와 같은 형태(극점이 여러 개 일 수 있음)이다.
이 경우 Gradient Descent를 하게 되면 시작점이 어딘 지에 따라 끝나는 점이 달라질 수 있다.

regressiondml 경우


Binary classification의 경우

여기서 파란색 점은 Local minimum(근처에서의 최소점)이고,

초록색 점은 Global minimum(전체에서의 최소점)이다.


우리가 찾고자 하는 것은 global minimum.

따라서 위와 같은 형태(cost function)에서 바로 Gradient Descent 알고리즘을 사용할 경우 나쁘게 동작할 수 있기 때문에 사용할 수 없다.

그래서 $H(x)$를 변형하며 cost function도 변형해 주어야 한다.



$C(H(x), y)=\begin{cases}-log(H(x)): y=1 \\-log(1-H(x)): y=0\end{cases}$

이 함수는 변형한 cost function이다.


이 함수를 그래프로 나타내보았다. 

$y=1$


$y=0$


cost 함수는 예측값과 틀렸을 때 더 큰 값을 가지게 된다.


따라서 우리가 예측을 $y=1$이라고 했을 때,

실제값이 $H(x)=1$이라면 위의 식에 의해서 $cost(1)$은 0이다.

반대로 $H(x)=0$이라면 $cost(0)$은 무한대로 커지게 된다.


$y=0$일 때는,

$H(x)=0$이라면 $cost(0)$은 0이지만

$H(x)=1$이면 $cost(1)$은 무한대로 커진다.

위의 사실들은 그래프를 통해 확인할 수 있다.


이렇게 되면 시작점이 어디든 최저점을 찾을 수 있으므로 Gradient Descent 알고리즘을 사용할 수 있게 된다.


이를 TensorFlow 같은 곳에서 쉽게 프로그래밍 하기 위해서

$C(H(x), y)=-ylog(H(x))-(1-y)log(1-H(x))$로 식을 세워 준다.


이 식은 $y=1$일 때 자연스럽게 $C(H(x), y)=-log(H(x))$이 되고,

$y=0$일 때 $C(H(x), y)=-log(1-H(x))$이 된다.


이제 이 cost function에 Gradient Descent 알고리즘을 사용하여 minimize cost 하면 된다.

728x90