Broccoli's House

#4-(1) 오차역전파법 : 소개 본문

공부/딥러닝

#4-(1) 오차역전파법 : 소개

김콜리 2018. 3. 11. 17:56

※ 이 글의 내용은 O'REILLY의 <밑바닥부터 시작하는 딥러닝> 책을 기반으로 한다.




오차역전파법 : 소개



  • 오차역전파법
 - 오차역전파법(Back Propagation) : 신경망 학습에서, 신경망의 가중치(weight)에 대한 손실 함수의 기울기를 구하기 위해 미분을 사용했다. 미분 계산은 단순하고 구현하기 쉽지만, 시간이 오래걸리는 단점이 존재한다.  초기 가중치에서의 손실 함수를 계산하고 그것을 미분하여 다음 가중치 계산에 사용하는데, 뉴런이 많아져 각 노드의 매개변수(가중치, 편향)가 많아지면 그 모든 매개변수를 학습시키기란 매우 어렵다는 것이다. 이것을 효율적으로 하기 위한 것이 오차역전파 알고리즘이다.



 - 학습이란 각 뉴런의 매개변수(가중치, 편향)에 의해 계산된 최종 출력을 토대로 손실함수(데이터의 레이블과 실제 출력 간의 오차)를 구하고, 그 손실함수를 최소화하는 방향으로 각 뉴런의 매개변수(가중치, 편향)를 변화시켜나가는 것이다. 학습이 완료되었다는 것은, 학습 모델이 손실함수가 최소화되도록 모든 뉴런에서 각각의 매개변수 값을 찾았다는 것이다. 즉 매개변수(가중치)의 값 자체는 학습 모델의 출력에 영향을 미치고, 학습 모델의 출력은 매개변수의 변화량에 영향을 미치는 것이다. 

 - 수식적으로 생각해보면, 학습하는 과정에서 다음 매개변수(가중치)의 값을 구할 때 손실함수를 가중치에 대해 미분한 값을 현재의 가중치에서 빼준다. 손실함수를 가중치에 대해 미분한 값은 수식적으로 가중치의 변화에 따른 손실함수의 변화로 생각할 수 있고, 바꿔말하면 이것은 손실함수에 현재의 가중치가 얼마나 많은 영향을 끼치는가 정도로 해석할 수 있다. 단일 퍼셉트론일 때는, 뉴런이 하나이므로 매개변수 가중치도 하나이다. 단일 퍼셉트론의 출력에는 하나의 가중치 값이 출력에 100% 영향을 끼치기 때문에, 손실함수의 최소화를 하기 위한 가중치의 변화 계산도 단순해진다. 그러나 뉴런이 많아지고, 층이 깊어지면 얘기가 달라진다. 각 뉴런이 모두 각각의 가중치를 가지고 있기 때문에, 출력에 대한 각각 가중치의 영향력을 알아야만 각 가중치의 다음 값이 결정이 된다. 


 - 위의 그림에서 가중치 값은 출력에 영향을 주고 출력은 가중치 변화량에 영향을 주는데, 가중치가 여러 개라면 각각의 가중치가 출력에 얼마나 영향을 끼치는가를 알아야 그 가중치의 변화량이 결정되는 것이다. 예를 들어 두 개의 뉴런(가중치)을 가진 모델이 있을 때를 생각해본다. 두 뉴런의 가중치는 출력에 끼치는 영향력이 각각 다르다고 가정한다. 출력의 오차가 크면 영향력이 큰 가중치를 변화시켜 오차를 크게 줄일 수 있을 것이다. 출력의 오차가 작다면 영향력이 큰 가중치는 거의 변화시키지 않고, 영향력이 작은 가중치를 변화시켜 오차를 서서히 줄일 수 있을 것이다. 즉, 출력에 대한 각 가중치의 영향력에 따라 각 가중치의 변화량도 달라지는 것이다. 이것이 우리가 학습 시에 출력에 대한 가중치의 영향력의 정량적 값을 알아야 하는 이유이다.


 - 출력에 대한 영향력을 알기 위하여 오차역전파법(Back Propagation)을 사용한다. 이 알고리즘은 학습 시에 입력부터 출발하여 각 노드의 매개변수를 통한 계산 후 출력으로 나오는 순전파(Forward Propagation)와 반대로 출력으로부터 입력까지 연쇄법칙(Chain Rule)을 통해 거슬러 올라간다. 이 연쇄법칙을 이용하면 출력에 대한 각 노드 매개변수의 미분 값이 계산되는데, 이 미분 값이 바로 특정 매개변수가 전체 출력에 주는 영향력이 되는 것이다.  

Comments