본문 바로가기
파이썬(Python), 머신러닝, 딥러닝

(딥러닝 with 파이썬) 오차역전파 / 활성화 함수

by 굳세라(goodsarah) 2022. 8. 2.
728x90
반응형

1. 오차역전파(Back propagation)

 

 인간의 지능은 뇌에서 뉴런들의 작용으로 인해 형성된 것처럼, 인공지능도 이와 같은 원리로 개발되지 않을까하는 생각으로 출발한 퍼셉트론(Perceptron)

 단일 퍼셉트론이 해결하지 못한 XOR 문제를 해결한 다층퍼셉트론(Multi Layer Perceptron)으로 인공지능의 겨울을 극복하게 되었다. 

 

 이때, 작은 문제가 생기게 된다. 그것은 바로 다층신경망에서의 경사하강법을 적용하는 방법이다.

 경사 하강법은 임의의 가중치를 선언하고 결괏값을 이용해 오차를 구한 후 이 오차가 최소인 지점으로 계속해서 조금씩 이동시키는 것이다. 

 하지만, 위에서 언급한 것은 입력층과 출력층만 존재한 단일 퍼셉트론일때 가능한 것이다. 

 

 은닉층(Hidden layer)이 생기면서, 은층의 갯수(n)만큼 경사하강법을 추가적으로 실행하여야 하므로, 

총 n+1번의 경사하강법을 실행해야한다. 

 

 위의 예에서 알아보면,

 

 출력층에서 도출된 값과 실제 값을 비교하여 오차를 구하고, 이 오차를 최소화 할 수 있는 방향으로 학습률(Learning rate)를 고려하여 이동시킬수 있는 가중치를 수정한다. 이때 수정된 가중치는 은닉층에서 출력층으로 전파되는 가중치이므로, 입력층에서 은닉층으로 전파되는 가중치와 편향은 그 역방향으로 한번 더 수정되어야 한다. 

 

 이를 위해선, 각 단계에 맞는 가중치에 대해 오차 공식을 편미분하여 최소값을 구하면 되는데, 여기서 문제가 생긴다.

 단일 퍼셉트론의 경우 출력층의 결과와 실제 값을 비교하여 오차를 얻었으나, 은닉층은 겉으로 드러나지 않으므로 그 값을 알 수가 없다. 이 문제는 출력층의 오차를 활용하는 방법을 이용하면 된다. 즉, 합성함수의 편미분을 이용하는 방법인데

 

입력층에서 은닉층으로 전달되는 함수가 f 라 하고, 은닉층에서 출력층으로 전달되는 함수를 g라고 하며, 가중치를 w라고 한다면

 

f(g(w)에 대해 각 노드에 맞는 가중치 (w11, w12, w13, w21 .....)에 대해 편미분을 하여 그 최소값을 구하면 된다.

 

개념은 이정도로 알아두고, 자세한 수학 공식에 대해서는 다음 포스팅에서 알아보도록 하자

 

2. 활성화함수(Activation function)

 은닉층(또는 다수의 은닉층)에 의해 생기는 구조에 대해, 오차 역전파를 적용하는 방법을 통해 가중치와 편향을 업데이틑 하는 방법에 대해서 알아보았다. 

 

 경사하강법을 적용하는 방법이기에 적절한 학습률만 적용되고 충분한 수의 반복시행이 적용된다면 최적의 가중치와 편향을 구할 수 있을 것으로 생각되지만, 여기에는 한가지의 조건이 더 필요하다. 그것은 바로 적절한 활성화 함수를 적용하는 것이다. 

 초기에 많이 적용된 활성화 함수는 시그모이드 함수이다. 시그모이드 함수 값은  전 구간에서 미분이 가능하기며, -1 ~ 1 사이의 함수값을 가지고 있기에 최초 딥러닝을 적용할 때 많이 사용되었다. 하지만, 여기에는 문제가 하나 발생한다.

 

 그것은 바로 기울기 소실문제(Vanishing gradient problem)이다. 시그모이드 함수를 미분하게 되면 아래와 같은 결과가 나오게 되는데, 함수 값이 0 ~ 0.25 범위에서 나오게 된다. 

 

 

이로 인해 바로 기울기 소실이 발생하는 것이다. 은닉층의 갯수가 많아질수록 / 반복시행횟수가 커질수록  각 시행마다 곱해지는 기울기의 값은 1보다 작은 값이 곱해지고 점차 0에 가까워져서 기울기가 소실되는 문제가 발생한다. 

 

 이를 해결하기위해 여러가지 활성화 함수들이 제안되었고, 그 중에서도 ReLU는 간단하면서도 많이 사용되는 함수이다.

 

 ReLU는 Rectified Liniear Unit의 줄임말로, 가로축이 0 이하에서는 함수값이 0이며, 가로축이 0 이상에서는 y=x 함수를 따르는 함수를 말한다.

 ReLU 함수를 미분하게되면, 0보다 작은 값에서는 미분값이 0 / 0보다 큰 값에서는 미분값이 1이되기때문에 1보다 큰 가중치들에 대해서는 시행을 반복하더라도 역전파로 인해 소실이 되는 경우는 발생하지 않게 된다.

 

 ReLU 를 시작으로 다양하고 유용한 활성화함수들이 데이터과학자들에 의해서 제시되었고 그 목록은 아래와 같다. 

 

728x90
반응형

댓글