역전파 알고리즘이란?
다층 퍼셉트론(MLP)에 사용하는 학습 알고리즘이다. 입력이 주어지면 순방향으로 계산하여 최종 출력값을 계산한 후에 실제 출력과 우리가 원하는 출력 간의 오차를 계산한다. 이 오차를 역방향으로 전파하면서 오차를 줄이는 방향으로 가중치를 변경하는 것이 역전파(Back-Propagation)알고리즘이다. 가중치를 역방향으로 업데이트하는 이유는 계산의 복잡성을 줄이기 위한 것이다. 이때 사용되는 공식이 Chain-Rule이다.
Chain Rule(합성함수의 미분) 공식
손실 함수의 식은 아래와 같다.
이때 가중치를 변경하기 위한 식은 아래와 같다.
여기서 손실함수를 가중치로 미분한 값 앞에 있는 변수는 학습률로, 하이퍼 파라미터이다. 보통 0.01정도를 사용한다.
가중치를 변경하기 위해 우리가 구해야 하는 것은 아래와 같다.
즉, 손실함수를 각 가중치로 미분한 값을 구한다.
<Back Propagation Simple Example>
Chain Rule을 적용해서 역순으로 미분값을 계산하는 예제이다.
우리가 구하고자 하는 것은 함수를 x,y,z로 미분한 값이다. 이를 구하기 위해 중간에 q라는 변수를 만들었다. Chain Rule을 이용하여, 먼저 주어진 함수 f = qz를 q로 미분한 값을 구한다. 그리고 나서 q를 x, y로 미분하였다. 이러한 과정을 그림으로 표현 하면 아래와 같다.
미분값을 역순으로 계산해 나가는 또다른 예제이다.
연산 하나 하나를 쪼개서 위의 예시처럼 계산 할 수도 있지만 아래와 같이 여러 계산 절차를 한번에 묶어서 미분 할 수도 있다. 하나 하나 쪼개서 계산할 경우 미분 과정 자체가 간단해 진다는 장점이 있는 반면 여러번 미분을 해야하는 반면에 여러 절차를 묶어서 한번에 미분하는 경우에는 미분 자체는 조금 더 복잡해 지지만 미분 횟수가 줄어든다는 장점이 있다. 적절한 방법을 사용하면 된다.
Back Propagation에서 각 연산자들이 어떤 역할을 하는지 자세하게 알아보자.
먼저 add gate는 gradient를 distribute하는 역할을 한다. 예를 들어 x + y를 x에 대해 미분한다고 하면 그 값은 1이기 때문에 incoming gradient가 그대로 전달 된다. max gate는 gradient를 route하는 역할을 한다.
max함수는 z, w중에서 더 큰 값을 고르는데, 이를 z에 대해 미분하면(더 큰 값) 2가 되고, 이를 w에 대해 미분하면 0이다. 따라서 w에는 incoming gradient에 0이 곱해져서 최종적으로 0이 출력된다. gradient가 1쪽으로만 흐르므로 routing이라고 하는 것이다.
마지막으로 muliplicaiton gate는 gradient를 switch하는 역할을 한다. f = xy라는 식이 있다고 했을 때 이를 x에 대해 미분하면 y이고, 이를 y에 대해 미분하면 x가 되기 때문이다. 따라서 서로가 gradient가 되어 incoming gradient와 곱해진다.
만약 incoming gradient가 위의 그림과 같이 2개라면 그 두개를 더한 값을 최종 incoming gradient로 간주한다.
'바닥부터 시작하는 인공지능' 카테고리의 다른 글
GAN을 이용한 Synthetic medical data를 이용한 class imbalance의 해소가 classification model의 정확도에 미치는 영향 알아보기 (0) | 2021.10.21 |
---|---|
[cs231n assignment1] Implementing Two-Layer Neural Network (0) | 2021.05.27 |
[인공지능프로젝트]응급환자를 위한 즉석 X-ray진단 서비스: 배경지식 학습과 모델 뼈대 구축 (0) | 2021.05.11 |
[CS231N] Lecture3: Loss Functions and Optimization(1) 정리 (0) | 2021.04.28 |
[CS231N]Lecture2: Image Classification Pipeline(2) 정리 (0) | 2021.04.20 |