중급/ㄴML

ML - 05. 오차 역전파(Back-Propagation)

RKAN 2021. 9. 2. 14:14

오차 역전파(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번 학습했다라고 함