본문 바로가기

카테고리 없음

딥러닝 기초 (오차전역파)

 


오차역전파 (Backpropagation)


오차역전파 알고리즘

  • 학습 데이터로 정방향(forward) 연산을 통해 손실함수 값(loss)을 구함
  • 각 layer별로 역전파학습을 위해 중간값을 저장
  • 손실함수를 학습 파라미터(가중치, 편향)로 미분하여
    마지막 layer로부터 앞으로 하나씩 연쇄법칙을 이용하여 미분 각 layer를 통과할 때마다 저장된 값을 이용
  • 오류(error)를 전달하면서 학습 파라미터를 조금씩 갱신

 

오차역전파 학습의 특징

  • 손실함수를 통한 평가를 한 번만 하고, 연쇄법칙을 이용한 미분을 활용하기 때문에
    학습 소요시간이 매우 단축!
  • 미분을 위한 중간값을 모두 저장하기 때문에 메모리를 많이 사용

 


신경망 학습에 있어서 미분가능의 중요성

  • 경사하강법(Gradient Descent)에서 손실 함수(cost function)의 최소값,
    즉, 최적값을 찾기 위한 방법으로 미분을 활용
  • 미분을 통해 손실 함수의 학습 매개변수(trainable parameter)를 갱신하여
    모델의 가중치의 최적값을 찾는 과정

출처: https://www.pinterest.co.kr/pin/424816177350692379/


합성함수의 미분 (연쇄법칙, chain rule)

ddx[f(g(x))]=f(g(x))g(x)

  • 여러 개 연속으로 사용가능fx=fu×um×mn× ... lk×kg×gx
  • 각각에 대해 편미분 적용가능

 출처: https://www.freecodecamp.org/news/demystifying-gradient-descent-and-backpropagation-via-logistic-regression-based-image-classification-9b5526c2ed46/

  • 오차역전파의 직관적 이해
    • 학습을 진행하면서, 즉 손실함수의 최소값(minimum)을 찾아가는 과정에서 가중치 또는 편향의 변화에 따라 얼마나 영향을 받는지 알 수 있음

합성함수 미분(chain rule) 예제

출처: https://medium.com/spidernitt/breaking-down-neural-networks-an-intuitive-approach-to-backpropagation-3b2ff958794c

a=1, b=3, c=4,

x=a+b, y=b+c, f=xy 

fx===y + x yx(b + c) + (a + b) × 07

fy===x + xy y(a + b) + 0×(b + c)2

 

xa==1 + a ba1

yc==bc +11

 

fa====fx×xay×17×1=77

fb ===xb y + x yb1×7+2×19


덧셈, 곱셈 계층의 역전파

  • 위 예제를 통해 아래 사항을 알 수 있음zx=1,zy=1tx=y,ty=x
  • 2. t=xy 일 때,
  • 1. z=x+y 일 때,

 

 

1

 

 

 

 

 

 

 


 출처: https://medium.com/spidernitt/breaking-down-neural-networks-an-intuitive-approach-to-backpropagation-3b2ff958794c


활성화 함수(Activation)에서의 역전파


시그모이드(Sigmoid) 함수

출처: https://www.geeksforgeeks.org/implement-sigmoid-function-using-numpy/

  • 수식y=====(11+ex)1(1+ex)2 × (ex)11+ex × ex1+ex11+ex × (111+ex)y (1  y)
  • y=11+ex일 때,

[ ]

 

1

 

 

 

 

 

 

 


ReLU 함수

출처: https://machinelearningmastery.com/rectified-linear-activation-function-for-deep-learning-neural-networks/

  • 수식
    yx={10(x0)(x<0)
  • y={x0(x0)(x<0) 일 때,

[ ]

 

1

 

 

 

 

 

 

 


행렬 연산에 대한 역전파

Y=XW+B


순전파(forward)

  • 형상(shape)을 맞춰줘야함
  • 앞서 봤던 곱셈, 덧셈 계층을 합친 형태

[ ]

 

1

 

 

 

 

 

 

 


[ ]

 

1

 

 

 

 

 

 

 


[ ]

 

1

 

 

 

 

 

 

 


[ ]

 

1

 

 

 

 

 

 

 


역전파(1)

 Y=XW

  • X:  (2, )
  • W:  (2, 3)
  • XW:  (3, )
  • LY:  (3, )
  • LX=LYWT, (2, )
  • LW=XTLY, (2, 3)

[ ]

 

1

 

 

 

 

 

 

 


[ ]

 

1

 

 

 

 

 

 

 


역전파(2)

 (2) Y=XW+B

  • X,W는 위와 동일
  • B: (3,)
  • LB=LY, (3, )

[ ]

 

1

 

 

 

 

 

 

 


[ ]

 

1

 

 

 

 

 

 

 


배치용 행렬 내적 계층

  • N개의 데이터에 대해,
    • X:(N, 3)
    • W:(3, 2)
    • B:(2, )
  • Y=XW+B

[ ]

 

1

 

 

 

 

 

 

 


[ ]

 

1

 

 

 

 

 

 

 


[ ]

 

1

 

 

 

 

 

 


[ ]

 

1

 

 

 

 

 

 


[ ]

 

1

 

 

 

 

 

 


[ ]

 

1

 

 

 

 

 

 


[ ]

 

1

 

 

 

 

 

 


[ ]

 

1

 

 

 

 

 

 


MNIST 분류 with 역전파


Modules Import


[ ]

 

1

 

 

 

 

 

 


데이터 로드


[ ]

 

1

 

 

 

 

 

 


데이터 전처리


[ ]

 

1

 

 

 

 

 

 


[ ]

 

1

 

 

 

 

 

 


Hyper Parameters


[ ]

 

1

 

 

 

 

 

 


Util Functions


[ ]

 

1

 

 

 

 

 

 


Util Classes


ReLU


[ ]

 

1

 

 

 

 

 

 


Sigmoid


[ ]

 

1

 

 

 

 

 

 


Layer


[ ]

 

1

 

 

 

 

 

 


Softmax


[ ]

 

1

 

 

 

 

 

 


[ ]

 

1

 

 

 

 

 

 


모델 생성 및 학습


[ ]

 

1

 

 

 

 

 

 


[ ]

 

1

 

 

 

 

 

 


[ ]

 

1

 

 

 

 

 

 


[ ]

 

1

 

 

 

 

 

 


[ ]

 

1