07) Back Propagation
—————————————preview—————————————
딥러닝 학습에 대해서 먼저 생각해볼 수 있는데 크게 순전파 와 역전파라는 2단계로 진행됩니다.
순전파는 네트워크에 훈련 데이터가 들어올 때 발생하며, 데이터를 기반으로 예측 값을 계산하기 위해 전체 신경망을 교차해 지나갑니다.
데이터가 모든 층을 통과하고 모든 뉴런이 계산을 완료하면 그 예측 값은 최종 층에 도달하게 됩니다.
그 다음 손실 함수로 네트워크의 예측 값과 실제 값 차이(손실, 오차)를 추정합니다. 이때 손실 함수 비용은 ‘0’이 이상적이며 따라서 손실 함수 비용이 0에 가깝도록 하기 위해 모델이 훈련을 반복하면서 가중치를 조정합니다. 손실이 계산되면 그 정보는 역으로 전파 되는 과정을 거치기 때문에 역전파 즉, backpropagation이라고 부릅니다.
또한 출력층에서 시작된 손실 비용은 은닉층의 모든 뉴런으로 전파되지만, 은닉층의 뉴런은 각 뉴런이 원래 출력에 기여한 상대적 기여도에 따라 값이 달라집니다,
좀 더 수학적으로 표현하면 예측 값과 실제 값 차이를 각 뉴런의 가중치로 미분한 후 기존 가중치 값에서 뺍니다. 이 과정을 출력층->은닉층->입력층 순서로 모든 뉴런에 대해 진행하여 계산된 각 뉴런 결과를 또 다시 순전파의 가중치 값으로 사용합니다.
———————————————————————————————————————

위의 notation을 참고해서 네트워크를 훈련하는 3단계를 거치면 다음과 같이 진행되는 것을 알 수 있습니다.
Forward propagation: 첫 번째 단계는 첫 번째 계층에서 시작하여 마지막 계층까지 activation을 계산하는 것입니다.
Computing the cost: cost function 인 C(yhat,y)를 계산합니다.
Backpropagation: 마지막 단계는 역전파 알고리즘을 사용하여 네트워크의 weights와 biases을 업데이트하는 것입니다.
추가로 용어정리를 하면
Add Gates: Backward pass에서 gates를 추가 즉,distributors라고 불립니다.
Multiply Gates:Backward pass에서 gates를 multiply 즉,switchers라고 불립니다.
Activations:Backward pass에서 layers는 출력 gradient를 계산하기 위해 들어오는 gradient에 고유한 도함수 값을 곱하기만 합니다.
Branches:Backward pass에서 branches가 gradients를 더해갑니다.
Forward Propagation
x를 NN에서 input vector라고 했을 때 a[0]=x. 그런다음 a[l]을 매 l의 layer마다 계산할 필요가 있다고 했을 때,
입력을 사용하면 중간 값 𝑧를 계산할 수 있습니다. 𝑧는 계층의 활성화 값 a와 weight의 내적 + bias값으로 계산될 수 있습니다.
활성화 함수 𝑔을 벡터 𝑧에 요소적으로 적용하여 𝑎을 계산합니다.

Cost Function , and computing the cost
포워딩이 예측을 제공한 후 비용 함수는 이러한 예측이 얼마나 좋고 나쁨을 정량적으로 결정합니다.원하는 결과를 얻기 위해 적절한 비용 함수를 선택하는 것은 기계 학습 문제의 중요한 지점입니다.
비용 함수의 선택은 애플리케이션에 따라 다릅니다.
주로 사용되는 교차 엔트로피 비용 함수는 다음과 같이 계산됩니다.

Backpropagation
역전파의 목표는 네트워크의 가중치 𝑤 또는 바이어스 𝑏에 대한 비용 함수 𝐽의 부분 도함수를 계산하는 것입니다.

Training for Neural Network
위의 weight와 bias를 업데이트하는 식과 체인룰을 이용해서 항들이 전개되는 것을 보면 다음과 같습니다.

Weight Initialization
가중치 초기화는 신경망 모델의 최적화(학습 또는 훈련)를 위한 시작점을 정의하는 작은 랜덤 값으로 신경망의 가중치를 설정하는 절차입니다.
예를 들어, 0 가중치 초기화는 도함수를 0으로 만들고 가중치는 변하지 않습니다.
Symmetry breaking
일부 기계 학습 모델에서 가중치가 모두 동일한 값으로 초기화되면 모델을 훈련할 때 가중치가 달라지기 어렵거나 불가능할 수 있습니다. 이것이 "대칭 문제"입니다.
모델을 작은 랜덤 값으로 초기화하면 대칭이 깨지고 서로 다른 가중치가 서로 독립적으로 학습할 수 있습니다
Derivatives for Activation Functions
활성화 함수는 모든 층에 대해 시그모이드 활성화 함수로 간주되는 𝑔로 정의하고 있고 주로사용하는 것들의 종류로는 Logistic, Tanh, Arctan,ReLU,Leaky ReLU,Softplus
Multiclass Cross Entropy Loss
교차 엔트로피 손실은 출력이 0과 1 사이의 확률 값인 분류 모델의 성능을 측정합니다. 선형 변환 후 시그모이드를 사용하는 로지스틱 회귀 분석의 경우
다중 클래스 교차 엔트로피 손실은 다중 클래스 분류에서 사용됩니다. 다중 클래스 로지스틱 회귀 분석의 경우 선형 변환 후 소프트맥스를 적용하여 예측을 얻을 수 있습니다
다중 클래스 로지스틱 회귀 분석의 경우 𝑦는 종종 one-hot encoding format으로 표시됩니다.
Partial Derivatives for Networks
널리 사용되는 많은 네트워크는 잘 알려진 활성화 함수와 일치하는 손실 함수 쌍을 채택합니다. 그러한 활성화 함수와 손실 함수 쌍에 대한 부분 도함수 dj/dz는 이미 알려져 있으므로 dj/dyhat과 dyhat/dz를 계산할 필요가 없습니다.
ML Framework Hierarchy & Workflow
Training-> Prediction-> Evaluation
크게 3가지 흐름 으로 진행 및 반복되는 것을 알 수 있으며 각 part의 flow를 보면 다음과 같습니다.
Training(Forward Path-> Loss Calculation-> Backward Path-> Gradient Update)
Prediction(Forward Path-> Output Formatter)
Evaluation(Forwarrd Path-> Output Formatter->Loss calculation-> Accuracy Measure)
Summary
->Neural Networks
특징을 배우는 방법을 제공합니다
매우 비선형적인 예측 함수입니다
(할 수 있음) 로지스틱 회귀 분석 분류기들의 매우 병렬적인 네트워크
유용한 입력의 숨겨진 표현을 검색합니다
->Backpropagation
gradients를 계산하는 효율적인 방법을 제공합니다
reverse-mode automatic differentiation의 특수한 경우입니다