딥넷트웍 학습 시키기 (backpropagation)

해당 게시물은 Edwith에서 제공하는
머신러닝과 딥러닝 BASIC을 듣고 요약 정리한 글입니다.

Neural Network (NN)

두개의 유닛의 WeightBias를 학습시키는 방법
Gradient descent알고리즘을 사용
정의된 Cost함수의 그래프에서 하나의 점에서
값을 미분해 기울기를 구하며 그래프의 최저점까지 내려가면서 값을 구한다.

Back propagation

예측값과 실제값을 비교해 Cost값을 뒤에서 부터 앞으로
이동하면서 미분값어떤 값조정해야하는지 계산하는 알고리즘

Back Propagation 예제

f=wx+b,g=wx,f=g+bf = wx + b, g = wx, f = g + b

위의 식을 그래프(NN) 형태의 그림으로 표현하면 아래와 같다.

아직 안만듬

위의 그림으로 ww, xx, bbff에 미치는 영향을
구하기위해 미분값을 계산해 사용해야한다.

  • forward (w=2,x=5,b=3w = -2, x = 5, b = 3)

    • 실제 존재하는 학습값으로 계산
    • wx=g=10w * x = g = -10
    • g+b=7g + b = -7
아직 안만듬 g=wxgw=x,gx=wg = wx \rightarrow \dfrac{\partial g}{\partial w} = x, \dfrac{\partial g}{\partial x} = w f=g+bfg=1,fb=1f = g + b \rightarrow \dfrac{\partial f}{\partial g} = 1, \dfrac{\partial f}{\partial b} = 1

ggff에 미치는 영향은 fg\dfrac{\partial f}{\partial g}1이다.
bbff에 미치는 영향은 fb\dfrac{\partial f}{\partial b}1이다.

fx=fggx=1w=2\dfrac{\partial f}{\partial x} = \dfrac{\partial f}{\partial g} _ \dfrac{\partial g}{\partial x} = 1 _ w = -2 fw=fggx=1x=5\dfrac{\partial f}{\partial w} = \dfrac{\partial f}{\partial g} _ \dfrac{\partial g}{\partial x} = 1 _ x = 5

wwff에 미치는 영향은 fw\dfrac{\partial f}{\partial w}-2다.
xxff에 미치는 영향은 fx\dfrac{\partial f}{\partial x}5다.

여기에서 미분값의 의미bb의 값은 1인데 이것은 bb의 영향이
1:1과 같다는 뜻이고 wwd의 값은 5인데 이것은 ww의 영향이
5:1과 같다는 뜻이다. ww의 값이 1만큼 변하면 ff의 값 5배 바뀐다는 의미다.

아직 안만듬

여러개의 Layer가 겹쳐있어도 위와 같은 그림의 방법을 사용하면 된다.

Sigmoid의 그래프 표현

g(z)=11+ezg(z) = \dfrac{1}{1+{e}^{-z}}

위의 Sigmoid Function을 아래와 같은 그래프로 표현되어
Backpropagation을 계산할 수 있다.

아직 안만듬

Tensorflow 코드로 구현

TensorFlow또한 모든 것을 그래프로 가지고 계산한다.

hypothesis = tf.sigmoid(tf.matmul(L2, W2) + b2)
cost = -tf.reduce_mean(Y * tf.log(hypothesis) + (1 - Y) * tf.log(1 - hypothesis))

Written by@Minsu Kim
Software Engineer at KakaoPay Corp.