Back-propagation

 

역전파 알고리즘 Back Propagation-Algorithm

주어진 문제를 해결하기 위해서 구성한 수많은 모델에서

①가중치를 무작위로 설정한 뒤 결괏값을 도출하고,

②이를 정답과 비교하여 다시 가중치를 조정하는 과정.

 

쉽게 말해 피드백이라고 생각하면 좋다.

맛있는 음식을 만드는 과정이 Forward pass (순전파)

음식을 먹은 뒤 손님의 반응을 보며 어떤 점을 수정해야 하는지 Back pass(역전파)

대표사진 삭제

TensorFlow 소스코드를 그래프로 표현한 형태

출처 : http://download.tensorflow.org/paper/whitepaper2015.pdf

 

 

마지막 층 : C
Cost Function 을 정의


이 층에 정답을 함께 넣고, (결과값과 정답을 비교해야 하므로 ) 다시 첫 번째 층으로 Back Propagation 을 실행!
네 번째 층 : ReLU
ReLU함수를 동작시킨다


*ReLU : 활성화함수(Activation Function)중 하나
0보다 입력이 작거나 같으면 0을 출력,
0보다 크면 입력된 값을 출력.


*Activation Function 활성화 함수 :
데이터를 비선형으로 만들기 위해 사용하는 함수


 복잡한 과정을 거쳐야 훈련이 되는데,
선형함수를 사용할 경우 과정이 단조롭기 때문에 활성화함수를 넣어 과정을 복잡하게 만든다고 생각하면 된다.
세 번째 층 : Add
Add 에서 b를 더한다
(b는 프로그램 내부지정)


Y=ax+b 라는 식에서 b 를 더하는 느낌 !
두 번째 층 : MatMul
MatMul이 동작하는 부분
MatMul = MatrixMultiply
첫 번째 층 : W,X


W는 프로그램 내부지정
X는 학습데이터를 넣어줄 *Placeholder
(*Placeholder : 나중에 값을 입력하고 싶을 때 사용.
말 그래도 Place (공간을) Holder(확보하고 있는))

 

* 첫 번째 층부터 읽어야 Back Propagation의 과정을 그대로 따라갈 수 있다


- While Back Propagation ?

C -> ... -> ReLU-> Add->MatMul 의 과정을 거치는데, 이 과정에서 층마다 편미분이 수행된다.

Gradient Descent 로 문제를 풀려고 하면, 각각의 변화율 자체를 자동으로 미분하여 뒤로 보내야 한다.

(미분을 한 뒤 뒤로 보내야만 계산량이 줄어들어 더 빠른 속도로 모델을 학습시킬 수 있기 때문)

 

 

 

 

- Why Back Propagation ?

Cost Function 을 최소화하기 위해서

& Gradient Descent의 값을 최소화 하기 위함.

 

Gradient Descent 가 무슨 일을 하는가 ? => 가중치 업데이트 (Weight Update)를 수행

레이어를 통과할 때마다, 입력값과 그에 따른 결과 (곱 형태) 가 다음 레이어의 입력 값으로 전달된다.

이 과정을 몇 번 거치면 최종 결과를 얻을 수 있다.

 

 

 

결론 :

신경망(Neural Network)의 가중치가

역전파(BackPropagation)를 통해 업데이트 된다!

 

 

'ML DL > TensorFlow 기초' 카테고리의 다른 글

TensorFlow 메커니즘 기초  (0) 2021.07.03