ML - 05. 오차 역전파(Back-Propagation)
오차 역전파(Back-Propagation)
모델이 학습할 수 있도록 가중치를 변경하는 방법으로 층과 층 사이의 가중치를 어떻게 조정 할 지에 대한 이론임
이전 강의에서 배운 MLP, 활성화 함수, 비용 함수, 가중치 업데이트를 전부 사용함
용어
Feed-Forword : 순전파
Back-Propagation : 역전파
Predict Result : 예측값
Real(Train) Result : 학습하려는 값
붉은색 점선
Input Layer부터 최종 예측값(Predict Result)까지를 순전파(Feed-Forword)라고함
검은색 점선
예측값(Predict Result)과 학습값(Train Result)으로 비용 함수를 계산하여 해당 값을 토대로 각 측에 있는 가중치와 바이어스를 업데이트하는 과정을 역전파(Back-Propagation)라고 함
역전파를 하기 전에 가중치 및 바이어스를 업데이트 하기 위해 경사하강법을 사용
Err에 대한 가중치와 바이어스의 미분값을 구해야함
마지막 Hidden Layer에서 OutputLayer까지의 순전파를 도식화하면 아래의 그림과 같음
① w(가중치)와 x(인풋값)을 곱함
② 그 곱한 값들을 전부 다 더함(시그마)
③ 시그마와 b(바이어스)를 더함
④ 결과 값을 sigmoid(활성화 함수)에 넣음
⑤ 결과 값(예측값)과 학습값(train)으로 비용함수(MSE)를 계산
⑥ 비용(오차율)
위 예시에서 w와 b를 갱신해야 하기때문에 나머지 값들에 대해서는 관심없음
순전파를 거꾸로 진행하여 역전파를 살펴보면 아래의 그림과 같음
y는 갱신할 이유가 없기때문에 ②에만 관심을 둠
여기까지 진행하면 Err에 대한 b의 편미분 값⑤을 구할 수 있음
여기까지 진행하면 Err에 대한 w의 편미분 값⑦을 구할 수 있음
해당과정을 연쇄법칙(chain rule)을 적용하면 아래의 수식과 같음
위의 역전파로 2 Layer의 가중치 w20(노랑), w21(주황)의 가중치까지 갱신했다고 가정한다면
2 Layer에서 1 Layer로의 역전파를 통해 1 Layer의 가중치 w10(노랑), w11(주황)의 가중치를 갱신해야함
위 그림처럼 x2(1)에 모이는 모든 역전파의 합이 x2(1)에서 A(total)로 역전파가됨
이후 과정은 맨위의 역전파과정과 동일하게 진행(Err대신 A(total)로 적용)
ML 라이브러리를 사용하겠지만 코드로 구현하고 싶을 경우
순전파에서 진행되는 함수의 편미분값만 계속 곱해주면 됨
이 과정을 train data갯수만큼 진행하면 1epoch(에포크) 1번 학습했다라고 함