소품집

[ML/DL] ANN 학습: Back-propagation (역전파 알고리즘 ) 본문

AI

[ML/DL] ANN 학습: Back-propagation (역전파 알고리즘 )

sodayeong 2020. 5. 28. 17:37

2020/05/11 - [Data mining] - Artificial Neural Network (인공신경망)

 

Artificial Neural Network (인공신경망)

Neural Network Motivated by studies of the brain (사람의 뇌를 학습한 모습!) A network of "artificial neurons" that learns a function Doesn't have clear decision rules like decision trees, but highl..

sodayeong.tistory.com

이전 내용과 이어집니다. 

 

 

 

ANN 학습 : Back-propagation (역전파 알고리즘)


Back-propagation

  • 전체에 대한 편미분을 곧바로 구하지 않고, 마지막에 위치한 Output layer에서 발생한 loss를 '역방향'으로 전파해나가면서, 관련 weight, bias들을 업데이트하는 방법 (지금부턴, bias는 편의상 생략)
  • 역방향 전파: Loss를 줄이는 것이 목표!
    1. Output layer의 Loss로 부터, W에 대한 파라메터 업데이트 수식 얻음
    2. Output layer의 Loss와 W 파라메터를 기반으로 V에 대한 파라메터 업데이트 수식 얻음
  • Loss? 정답과 예측값의 차이 많이 틀리면 많이 바꾸고, 많이 맞추면 조금만 바꿔 역전파의 세기를 조절할 수 있다.

Cost function에서 자주 쓰이는 것들

교차 엔트로피 오차 = Cross Entropy Error 

하지만 층을 너무 깊게 쌓으면 역전파시 1이하의 값들이 곱해져 Gradient Descent 값의 입력이 미미해 지는데, 이러한 현상을 Gradient vanish라 합니다.

 

 

 

ANN 학습 : Cost Function


두 개의 network의 output layer 값이 아래와 같다고 가정해보면, 일단 딱 봐도 오른쪽 network가 좀 더 나은 결과를 보여주는 것을 확인할 수 있다.

Cost Function비교

  1. 가장 단순한 방법 : Classification Error (CE)
  2. → 둘 다 에러 수치는 1/3
  3. MSE→ 왼쪽 network의 전체 cost = (0.54+0.54+1.34)/3=0.81
  4. → 오른쪽 network의 전체 cost=(0.14+0.14+0.74)/3 =0.34
  5. → 왼쪽 network의 첫 번째 데이터에 대한 loss = (0.3-0)^2+(0.3-0)^2+(0.4-1)^2=0.54
  6. Cross-Entropy (정답만 쳐다봄)→ 왼쪽 network의 전체 cost = -(ln(0.4) + ln(0.4) + ln(0.1)) / 3 = 1.38
  7. → 오른쪽 network의 전체 cost = -(ln(0.7) + ln(0.7) + ln(0.3)) / 3 = 0.64
  8. → 왼쪽 network의 첫 번째 데이터에 대한 loss =-( (ln(0.3)*0) + (ln(0.3)*0) + (ln(0.4)*1) ) = -ln(0.4) = 0.92

 

수식으로 보는 ANN 학습


d: 정답

O(j) :활성함수 sigmoid를 거쳐 나온 실제 값 (정답!)

Oj의 결과값은 sigmoid를 거쳐 0~1 사이의 값을 갖게 되는데, 0.5에 가까워질 수록 값의 의미가 떨어지게 됨

(수정중)

 

 

(공부중)

 

 

 

 

 

 

ANN 학습 : Optimization


Backpropagation 알고리즘 기반으로 편미분하여 얻은 수식들을 사용하여 실제로 업데이트를 수행하는 '최적화 알고리즘' 필요 → Iterative learning 시행

  • 파라메터 업데이트 수식들을 적용할 때는 '반대방향'으로 적용 (즉, 뺄셈)
  • Cost를 최소화하는 것이 목표이므로, 알고리즘들
  • Gradient Descent (GD)로 보통 시작하게 됨
    • Batch GD, Stochastic GD, Mini-batch GD,...

  1. 객관식) Training 데이터, Test 데이터, Validation 데이터
  2. 힌트) Cost 값을 계산하는 것은 언제 하는 것인가?

참고: https://sonseungha.tistory.com/401

 

Neural Networks - Cost function / Back propagation

Neural Networks : Cost function & Back Propagation 아래 내용은 Andrew Ng 교수님의 강의와 자료를 기반으로 학습한 내용을 정리하여 작성하였습니다. 개인의 학습 내용이기에 잘못 해석 및 이해하고 있는 부��

sonseungha.tistory.com

 

대표적인 Optimizer 'Gradient Descent'


Gradient: 경사도, Descent: 하강

Gradient Descent

  • Cost function에 대한 편미분으로써 파라메터 업데이터 수식들을 '반대방향'으로 적용
  • Iterative(epoch) 방식: 한 걸음씩 내리막길 내려가기
    • 언제까지? 변화가 충분히 적어지고, 일정한 횟수 만큼!
    • 수식(기울어진 방향으로 임의 거리만큼 이동
  • Batch GD: 학습 Data가 N개 있을 때, N개 전체에 대한 gradient를 적용하는 것
  • Stochastic GD: 학습Data N개 각각에 대한 gradient를 적용하는 것
  • Mini-batch GD: 학습 Data N개를 작은 mini-batch들로 쪼개서 Gradient를 적용하는 것
    • BGD와 조금 다른 결과를 낼 수 있지만, 비교적 빠른 속도로 학습되며, 여러 interaton을 거ㅣ면 BGD와 유사한 결과를 낸다고 알려짐

 

예를들어, 전체 데이터가 1000개인데 batch size 를 10으로 하면 100개의 mini-batch 가 생성되는 것으로

이 경우 100 iteration 동안 모델이 업데이트 되며 1 epoch로 종료됩니다. 

그래서 BDG와 비슷한 결과를 반환합니다.

 

 

 

정리: 역전파 (Backpropagation) 알고리즘


위 과정을 반복하여 네트워크를 반복하여 갱신시키는 과정을 Interative learning이라고 합니다.

이 때 갱신하는데 사용될 최적화 알고리즘은 보통 GD로 시작을 함!

 

 

 

실전 ANN: 전처리 (초기값)


 

 

728x90
Comments