Back propagation(역전파)는 Data의 Forward propagation(순전파) 이후 모델을 Optimizer(최적화)

하는 모델의 학습 방법 알고리즘이다.

 

데이터를 인풋에 대해 모델들이 출력을 최적화 하기 위해 데이터의 중요도를 업데이트 하는 방법이다.

 

기본 개념은 입력된 데이터가 Cost에 얼마나 영향을 미치는지 알아보고,

입력된 데이터의 영향력에 따라 입력된 데이터의 중요도를 결정하는 파라미터를 수정하는 방법이다.

 

내용을 이하기 위해서 다음과 같은 기초배경 지식이 필요하다.

 

기초배경

linear algebra

Perceptron

Cost Funtion

Forward Propagation

Optimizer

 

단위 Perceptron(퍼셉트론)에서의 입력과 Weigth의 곱으로 기울기를 입력대비 출력으로 나타내며,

단위 Perceptron(퍼셉트론)의 Weigth를 수정 함으로서 입력을 변화시키지 않고 입력에 대한 중요도를

수정하는 일이다.

 

Deep learning 모델의 Architecture는 단위 Perceptron(퍼셉트론)의 집합으로 각 Weigth에 대해서

중요도를 업데이트 해야한다.

 

아래는 손으로 직접 작성한 간단한 예시이다.

L-2은 Input Layer로 별다른 연산을 수행하지 않는다.

L-1은 Hidden Layer 이다.

L은 마지막 Output Layer 이다.

 

W 는 각 가중치를 의미하고,

아래 0과 1은 각 노드넘버이다.

W의 앞의 0 또는 1은 이전 레이어의 노드 넘버이다.

W의 뒤의 0 또는 1은 다음 레이어의 노드 넘버이다.

 

W(L-1)00의 경우 L-2 layer의 0번 노드에서 0번 노드로 이어지는 L-1 넘버의 가중치이다.

W(L)11의 경우 L-1 laeyer의 1번 노드에서 0번 노드로 이어지는 L-1 넘버의 가중치이다.

z(L-1)는 Activation 을 거치지 않은 이전 변수의 연산 출력이다.

a(L-1)는 Z(L-1)이 Activation 을 거쳐 나오는 출력이다.

아래 그림은 위의 모델 Architecture의 관계를 표시한 그림이다.

 

W와 a의 곱을 z로 나타내고 z의 합이 Activation을 거친다.

여기까지가 Perceptron 하나에 해당한다.

 

Forward propagation은 다음의 순서로 연산된다.

왼쪽 심볼의 값을 받아 최종 오른쪽 a(L)의 값으로 최종 모델 출력이되며

Y와 함께 C0를 통해 Cost funtion에서 Global Cost를 구한다.

 

 

다음은 위에 표현한 입출력 관계를 통해 입출력의 영향을 다음 이미지 처럼 표현할 수 있다. 

C0 의 Global Cost와 각 Weith의 변화량 관계의 내적표현식이다.

 

개념 아이디어에서 처럼 입력 차원의 중요도와 출력과 라벨 사이의 cost에 얼마나 영향력에 따라.

중요도를 업데이트 하기 때문에 다음과 같이 표현될 수 있다.

 

(수식은 복잡해 보이지만, 미분을 구하는 것으로 크게 어렵지 않으면서 많이 귀찮다.)

 

 

이 식을 통해 예상할 수 있는 것은 각 Perceptron의 입력(x)과 Weigth(w)과의 곱과 Bias(y)의 합으로

wx+y 연산을 수행하기 때문에 Perceptron에 대해서 w, x에 대한 변화량은 반대인 x, w가 될 것이고, bias는 출력에 대한

shift combination 일 것이다.

 

위 단순화 된 미분 값 계산식을 보면 공통으로 들어있는 값들 을 확인 할 수 있다.

MSE의 미분 값인 Globel Cost이 그것인데, Globel Cost의 변화량에 각 Weigth 들이 영향을 주며 영향력 을 계산하는

식이며, 아래와 같이 단순하게 표현 할 수 있다.

 

 

식을 파해처보면 각 항들이 곱으로 이루어져 있고 Globel Cost가 공통이므로,

Globel Cost와 곱하는 앞의 모든 항들은 Globel Cost에서 각 Weigth가 주는 영향의 Scale로 이해할 수 있다.

 

아래 그림은 필요한 초기 변수들의 값이다.

 

위의 예에서 Weigth가 Globel Cost의  영향을 주는 Scale로 생각하고, 공통 값인 Globel Cost의 값이 이전 레이어에

1만큼 영향을 받기 때문에 1로 가정한다면, 아래 그림과 같이 단순화하여 각 local Cost를 구할 수 있다.

 

위 그림 속 X는 곱연산 +는 합연산이다.

검은 숫자는 Forward Propagation의 단계별 연산 출력 값이고

빨간 숫자는 back Propagation의 단계별 연산 출력 값으로 Local Cost 값의 비율이된다.

파란 숫자는 1step의 Back Propagation 이후의 결과로 다시 Forward를 진행 한 값이다.

 

다음으로 Globel Cost를 구하고 Weith의 인접한 Back Propagation에 곱하여 나온 것이 Local Cost가 되고,

해당 Local Cost에 대해서 Optimizer를 수행하여 나온 결과를 업데이트 하면된다.

 

필자는 불만이 많은 사람(필자는 손이 두 개이므로 라이터를 2개씩 지니고 다닌다.)이므로 가장 단순한 SGD 방식으로 Optimizer를 수행하여 1step의 결과만 손으로 적었다.

 

이처럼 데이터간의 관계분석을 통해 원하는 값을 도출할 때 나오는 최적의 각 Perceptron의 Parameter 값인

Weigth와 bias는 출력은 각 Feature들의 상관관계를 나타내는 곡선으로 나타낼 때에 데이터에 대한 통계분석의

결과물로 이해 할 수 있다.

 

이를 Machine learning(ML) 알고리즘으로 수행하면 각 분야 연구자들의 연구시간을 빠르게 단축 시켜

노고와 오류를 줄일 수 있을 것이고, 각 Feature가 주어젔을 때 통계적인 결과를 예상해 볼 수 있을 것이다.

 

해당 과정은 linear regression라는 regression analysis 방법으로 ML에는 통용한다.

+ Recent posts