역전파 알고리즘 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 |
---|