Reference
https://iai.postech.ac.kr/teaching/machine-learning
https://iai.postech.ac.kr/teaching/deep-learning
위 링크의 강의 내용에 기반하여 중요하거나 이해가 어려웠던 부분들을 정리하여 작성하였고,
모든 강의 슬라이드의 인용은 저작권자의 허가를 받았습니다.
또한, 모든 내용은 아래 Notion에서 더 편하게 확인하실 수 있습니다.
>>노션 링크<<
Keywords
- Optimization
- Loss Function, Gradient Descent
- Backpropagation
Training(Fitting) ANN: Optimization

Neural Network를 training하는 과정
⇒ MLP 구조의 weight, bias들을 training data로부터 learn(estimate)하겠다.
이러한 Optimization의 관점에서 바라보았을 때, 3가지 정의해야 할 부분이,
Objective function / decision variable: weight (and bias) / constraint 이다.
그냥 간단하게 말해서, 앞에서 했던 것과 동일하게
를 minimize하겠다는 것이다.
여기에서 objective function인와 unknown인 는 당연히 우리가 정의해줘야 하는 것이고.
(+에 대한 constraint는 일반적으로 ANN에서 존재하지 않는다. 마지막 줄에서 constraint에 대한 것이 없는 이유가 그것.)

ANN에서는 그러한 Objective Function을 Loss Function(Cost Function)이라고 할 것이며,
여기서 Loss Function은 target value(원래의 y, output값)과 prediction(예측된 y, output값) 사이의 error를 측정하는 함수이다.
결국 그러한 Loss Function을 minimize하는 것이 목적.
위에서 볼 수 있듯, Squared loss와 Cross entropy라는 Loss Function의 예시를 이미 학습하였다.
두 경우 모두,

그리고 NN을 training, Optimizing 하는 방법으로는, Gradient Descent를 이용할 것.
앞에서 이미 학습했으므로 따로 언급하지 않겠다.

ANN에서의 Gradient Descent에 대해 생각해 보자면,
모든 weight에 대한 Gradient (
→ training에 걸리는 시간이 너무 길어진다!
따라서, ANN의 구조적인 특징들을 이용하여 이를 효율적으로 계산할 것이다. (Back Propagation!)
우선 layer들이 중첩되는 과정에서 이것이 결국 함수들의 합성과 같은 역할을 한다. (ANN의 각 층은 이전 층의 출력을 입력으로 받아 변환하는 함수로 볼 수 있다. 이에 의해 ANN은 여러 층의 뉴런들이 연결된 합성 함수 형태로 볼 수 있다는 것!)
따라서 weight들이 모두 독립적이지 않으며, 각 구성 요소(layer)가 미분가능하므로 Chain rule을 적용할 수 있다.
여기서 미분가능하다는 것에 대해, 이전 장들에서 activation function을 step function에서 sigmoid(tanh, ReLU)로 변경했던 것을 상기하자. 변경한 이유에는 여기서 Chain Rule을 적용하기 위함(Gradient를 계산하기 위함)도 포함되어 있다.
Backpropagation

Forward Propagation (순전파):
initial information (input data, x)로부터, Network의 각각의 layer (hidden unit)에 전파되어, output을 만들어내는 것.
간단히 말해, 이미 Network는 구성되었고, weight, bias가 결정된 상태에서, input data를 집어넣고 Network를 따라 쭉 계산하여 output을 도출하는 것!
Backpropagation (역전파):
Backpropagation은 반대로, 마지막 prediction(output)을 통해 loss(cost)를 계산하여, 그 loss(cost)로부터 network를 반대로 거슬러가 gradient를 계산하는 것.

이 글 자체가 필자 자신의 이해를 돕고, 정리하기 위한 글이므로, 이미 잘 알고 있는 Chain Rule에 대해서는 따로 여기서 정리하지 않겠다.
이 게시글을 보는 사람들 중 Chain Rule에 대해 잘 모르는 사람이 있다면, 다른 더 잘 정리된 자료가 많을 것.
좌측의 식 및 우측의 그림을 보면 알 수 있듯이 Neural Network의 각 layer들 자체가 함수들의 합성이므로,
Chain Rule을 통해 각 Layer에서의 Input, Output에 대한 Gradient를 계산하여 이를 product하면, 최종적으로 맨 처음 input과 마지막 loss에 대한 Gradient를 얻을 수 있음을 알 수 있다.