머신러닝 다시 시작하기 - 4

머신러닝 다시 시작하기 - 4

머신러닝 다시 시작하기-4

참고 게시글

머신러닝에 대한 간략한 요약을 1, 2, 3을 통해 해보았다. 머신러닝 중 요즘 핫해진 뉴럴 네트워크를 공부해보도록 하겠다. 뉴럴 네트워크가 어떤 필요에 의해 탄생했는 지는 각설하고 바로 간단한 개념으로 들어가겠다. 어떤 방향으로 나아갈 지 고민이다. 머신러닝은 모델링, 학습, 평가 단계로 진행했지만 딥러닝은 아래와 같이 간단하게 진행해보겠다.

  1. Modeling
  2. Cost function
  3. propagation (foward / back)

참고 게시글의 내용과 많이 겹치겠지만 좀 더 복잡한 식이 나올 예정이다.

1. Modeling

딥러닝의 모델링은 필자도 자세하게 모르겠지만 잘못 생각하고 있다가 이번에 새롭게 알게 된 내용을 정리하고자 한다. 기존의 여러 강의를 듣거나 독학을 할 경우 충분히 헷갈릴 수 있는 부분이기 때문에 도움이 되길 바란다.

layers
(출처 : https://i.ytimg.com/vi/n7DNueHGkqE/maxresdefault.jpg)

1-1) 각 노드는 값을 가진다.

자세히 공부하기 전에는 각 노드의 값은 알 수 없는 줄 알았다. Input Layer와 Output Layer의 값만 보고 Hidden Layer의 값은 알 수 없는 채 정확도만 알 수 있는 줄 알고 있었다.

하지만 각 Hidden Layer의 노드는 hθ(x)h_\theta(x)의 결과값을 갖고 있다. 그리고 Layers 사이에 검은색 선마다 θ\theta 값을 갖고 있는데 흔히 아는 가중치 값을 갖고 있다.

a1(2)=g(Θ10(1)x0+Θ11(1)x1+Θ12(1)x2)a2(2)=g(Θ20(1)x0+Θ21(1)x1+Θ22(1)x2)a3(2)=g(Θ30(1)x0+Θ31(1)x1+Θ32(1)x2)hΘ(x)=a1(4)=g(Θ10(3)a0(3)+Θ11(3)a1(3)+Θ12(3)a2(3)+Θ13(3)a3(3))a_1^{(2)} = g(\Theta_{10}^{(1)}x_0 + \Theta_{11}^{(1)}x_1 + \Theta_{12}^{(1)}x_2)\newline a_2^{(2)} = g(\Theta_{20}^{(1)}x_0 + \Theta_{21}^{(1)}x_1 + \Theta_{22}^{(1)}x_2)\newline a_3^{(2)} = g(\Theta_{30}^{(1)}x_0 + \Theta_{31}^{(1)}x_1 + \Theta_{32}^{(1)}x_2 )\newline \newline {\vdots} \newline h_\Theta(x) = a_1^{(4)} = g(\Theta_{10}^{(3)}a_0^{(3)} + \Theta_{11}^{(3)}a_1^{(3)} + \Theta_{12}^{(3)}a_2^{(3)} + \Theta_{13}^{(3)}a_3^{(3)}) \newline

위 식에 대해 간단히 얘기해보자면, a1(2)a_1^{(2)}에서 1은 그 레이어의 첫번째 노드라는 의미고, 2는 두번째 레이어라는 뜻이다. 즉, 두 번째 노드의 첫 번째 노드의 값이라는 뜻이다.

Θ10(1)\Theta_{10}^{(1)}에서 (1)은 뉴럴 네트워크에서 위 그림 중 선들이 의미하는 것은 가중치 값들인데 그 중 첫번째 가중치의 행렬을 뜻한다. 그 행렬 중 두번째 레이어 중 첫 번째(=1) 노드와 첫번째 레이어 중 첫번째(=0) 노드가 연결된 선의 가중치 값을 의미한다. 첫 번째가 의미하는 값이 Input은 0이고 Hidden은 1로 왜 다르냐면, Hidden Layers 부터는 a0a_0값은 주로 Bias 값으로 처리하기 때문이다.

마지막으로 g 함수는 Activation Function을 의미한다. 이건 나중에 설명하겠다.

1-2) 은닉층의 갯수

왜 Hidden Layer의 갯수를 늘리면 정확도가 증가하지 않는가? Neural Network Faq 문서에 의하면, 은닉층의 갯수는 2개 초과하면서 정확도가 점점 내려간다고 한다. 그 이유는 은닉층의 갯수가 많아질 수록 local minimum 문제에서 빠져나오기 힘들다고 추정할 뿐이다. 아직 미지의 구간이다.

그리고 은닉층 노드의 갯수는 동일하게 하는 것이 정석인듯 하다. 즉 위 그림처럼 1 은닉층과 2 은닉층의 노드 갯수가 동일하다.

1-3) 활성화 함수

레이어에서 레이어로 나아갈 때 각 값은 활성화 함수를 지난다. 정확히 얘기하면 Input 값에서 가중치 w(=θ\theta) 값을 곱한 값을 z라 하고 위에서 적은 노드의 값 a(j+1)=g(z(j))a^{(j+1)}=g(z^{(j)})로 계산되어 진다. g 함수가 활성화 함수이다.

위 설명을 수식으로 표현하면 아래와 같다.
z(j+1)=Θ(j)a(j)z^{(j+1)}=Θ^{(j)}a^{(j)}

왜 굳이 활성화함수를 추가하는가? 선형함수인 h(x)=cx를 활성화함수로 사용한 3층 네트워크를 떠올려 보자. 이를 식으로 나타내면 y(x)=h(h(h(x)))가 된다. 이는 실은 y(x)=ax와 똑같은 식이다. a=c3이라고만 하면 끝이죠. 즉, 은닉층이 없는 네트워크로 표현할 수 있다. 뉴럴네트워크에서 층을 쌓는 혜택을 얻고 싶다면 활성화함수로는 반드시 비선형 함수를 사용해야 한다.

댓글

이 블로그의 인기 게시물

윈도우 설치에서 파티션 설정 오류(NTFS)

[exploit writing] 1_스택 기반 오버플로우 (1) First

하둡 설치 오류 정리