1. 퍼셉트론(Perceptron)


 언젠가 후배와 SF영화 이야기를 하다가 컴퓨터로 인간의 뇌를 모방하여 가상뇌를 구현했다는 소리를 들었었다. 어떻게 뉴런 하나하나를 만들어서 뇌를 모방했을까? 반신만의 했었는데 지금 내 눈앞에 있네 ㅋ 하나의 퍼셉트론은 인간의 뇌의 뉴런 하나에 해당한다고 이해하면 된다. 수많은 뉴런들이 우리의 뇌를 구성하고 있듯 딥러닝을 이해하기 위한 가장 기본적인 개념인 퍼셉트론에 대해 아라보자. 




 퍼셉트론 하나로만 이루어진 모델을 단층 퍼셉트론(Single Layer Perceptron)이라고 하며 이는 입력을 두 부류로 나누는 것이다. 단층 퍼셉트론은 선 하나로만 데이터의 경계를 구분지을 수 있다. 어려운 말로 선형분류  

 중학교때 배운 직선 방정식을 떠올려보면 $y=ax+b$라는 익숙한 방정식을 떠올릴 것이다. 그럼 고등학교에서 배운 평면 방적식은 어떤가? $y=ax+by+cz+d$이다. 직선 방정식에 $z$차원이 추가되니 직선이 3차원으로 쌓여 평면을 이룬 것이다. 앞으로 우리는 3차원 이상의 다차원 공간에서 함수를 정의할 것이다. 이렇게 n개의 일차변수들로 이루어진 함수를 초평면(Hyper Plane)이라고 한다. 

 아래는 단일 퍼셉트론의 예시이다. $x_{0}, ..., x_{n-1}$는 입력데이터이고 이것을 행렬로 표현(벡터화, Vectorization)하면 $x$라 할수있다. 우리가 얻어야할 파라미터 $w_{0}, ..., w_{n-1}$는 각각 $x$의 원소에 곱해져야 한다. 파라미터 또한 벡터화 하여 $w$로 표기할 수 있다.

$$x=\{x_{0}, ..., x_{n-1}\}, w=\{w_{0}, ..., w_{n-1}\}$$

 $b$는 편향(Bias)이다. 입력 $x$를 파라미터 ($w, b$)로 변형을 시켜 활성화 함수(Activation Function) $\sigma$를 거치며 $\hat{y}$를 출력한다. Activation Function에 대한 자세한 설명은 다음 포스트에서 하겠다. 

 


 주어진 입력 $x$으로 학습된 파라미터 $w$를 이용하여 $wx+b>0$이라면 Class 1이 할당되고, $wx+b<0$이라면 Class 2에 할당되도록 할 수 있겠다. 이제 선형분류라는 용어가 직관적으로 다가올 것이다. 그러면 최적의 $w$를 찾아보자.


 그러면 종이를 한장씩 꺼내서 간단한 예제를 풀어봅시다. 지난 포스트(#03)를 이해하지 못했다면 따라오지 못할 수 있다. 활성화 함수 $\sigma$가 무식하게 생겨서 겁을 먹을 수 있지만 관대한 눈길로 넘어가주자. Training data는 $m$개의 데이터와 특징 $x$와 정답 $y$로 이루어진 테이블이다. 



Step 1. 손실함수 정의


 전체 학습데이터에 대한 비용($J$)은 하나의 데이터에 대한 손실함수 ($L$)의 평균으로 정의할 수 있다. 전체 시스템은 데이터의 수 만큼(문제의 수) 총 $m$번의 학습이 진행될 것이다. 현재의 $w$을 사용하여 도출해 낸 결과 $\hat{y}$과 실제 정답 $y$와의 오차를 평균 낸 것이다. 손실함수 $L$은 교차 엔트로피 오차를 사용하였다. 위의 문제는 여자($\hat{y}=0$)인지 남자인지($\hat{y}=1$) 두개의 클래스(Label)를 결정짓기 위한 것이므로 Cross entropy가 좋다.


$$J=\frac{1}{m}\sum _{ i=0 }^{ m-1 }{ L(y^{i}, \hat{y}^{i}) } $$

$$L= −ylog(\hat{y})−(1−y)log(1−\hat{y})  $$


Step 2. 미분식 풀기


 경사하강법(Gradient Descendent)을 하기 위해 손실함수($L$)에 대해 파라미터로 미분한 $\frac { dL }{ dw } $와 $\frac { dL }{ db } $를 구해야 한다. (여기서 $i$는 학습 횟수 $i$번째 학습)

$$\overset { i+1 }{ w } =\overset { i }{ w } -\alpha\nabla \frac { dL }{ d\overset { i }w }, \overset { i+1 }{ b } =\overset { i }{ b } -\alpha\nabla \frac { dL }{ d\overset { i }b } $$

 하지만 함수 $L$ 안에서는 $w$가 보이지 않는다. 이때 필요한 것이 고등학교 미분시간에 배운 연쇄법칙(Chain Rule)이다. (여기서 $i$는 데이터의 인덱스 쉽게말해 순번)

$$ \frac { dL }{ dw } =\frac { d{ L } }{ d\hat { y }^{ i }  } \frac { d\hat { y }^{ i }  }{ dw } = \frac { d{ L } }{ d\hat { y }^{ i }  } \frac { d\hat { y }^{ i }  }{ dz^{ i } } \frac { dz^{ i } }{ dw } $$

$$\frac { d{ L } }{ dB  } = ... =\frac { d{ L } }{ d\hat { y^{ i } }  } \frac { d\hat { y }^{ i }  }{ dz^{ i } } \frac { dz^{ i } }{ dB } $$


 위와 같이 미분식을 정리했다면 미분식을 하나하나 전개해보도록 하자. 

$$\frac { dL }{ d\hat { y^{i} }  }=-\frac { y^{ i } }{ \hat { y } ^{ i } } +\frac { 1-y^{ i } }{ 1-\hat { y } ^{ i } } $$

$$\frac { d\hat { y^{i} }  }{ dz^{i} }=\sigma(z^{i})(1-\sigma(z^{i}))=\hat{y}^{i}(1-\hat{y}^{i}) $$

$$ \frac { dz^{i} }{ dw }=x^{i}, \frac { dz^{i} }{ dB }=1 $$


 $\sigma$의 미분은 아래에 있으니 심심하신 분들은 한번 안보고 풀어보시길ㅋ



 이제 모두 합쳐보쟈. 행렬식으로 표현할 수도 있다. 행렬식으로 정리할때의 장점은 다음 실습 포스트에서 설명하겠다. 


$$\frac { dL }{ dw }=\frac { 1 }{ m }\sum {(\hat{y}^{i}-y^{i})x^{i}} = \frac { 1 }{ m }X^{T}(\hat{Y}-Y)$$

$$\frac { dL }{ dB }=\frac { 1 }{ m }\sum {(\hat{y}^{i}-y^{i})x^{i}} = \frac { 1 }{ m }(\hat{Y}-Y)$$


 이렇게 $\frac { dL }{ dw }$와 $\frac { dL }{ dB }$를 구했다면 여러번 반복(Iteration)하면서 Gradient Descendent 공식에 맞도록 $w$와 $b$를 Update해주면 된다. 여러~번 반복하다보면 수렴할텐데 그러면 학습이 완료된 것으로 판단하고 학습이 잘 되었는지 시험(Test)을 치뤄야 한다. 당연히 시험에는 정답($y$)이 없다. 아래의 임의의 행인의 키와 몸무게로 성별을 판별하는 Test를 진행할 수 있다. 물론 최종 출력물인 $\hat{y}$의 값은 sigmoid함수를 통과하면서 $0$~$1$사이의 float값이 나오는데 0.5를 기준으로 $\hat{y} > 0.5$이면 여자($\hat{y}=0$), $\hat{y}<=0.5$이면 남자($\hat{y}=1$)라고 해준다. Threshold 라고 함





동영상 강의: 준비중...

+ Recent posts