산 넘어 산 개발일지

[CS231n - Lecture 4] Backpropagation and Neural Networks 본문

머신러닝&딥러닝/cs231n

[CS231n - Lecture 4] Backpropagation and Neural Networks

Mountain96 2021. 7. 27. 11:16

Backpropagation 기본 원리

  위 그래프에서 초록색 숫자는 forward feed 시에 계산되는 숫자들이다. 그리고 Backpropagation을 위해 맨 마지막 노드인 f에서부터 시작을 한다. 맨 처음 받는 값은 df/df이므로 1이다. f노드에 해당하는 식은 q*z 이므로 q에대한 f의 미분은 z이고, z에 대한 f의 미분은 q이다. 따라서 아래와 같은 결과값들을 얻을 수 있다. 이 때, "A에 대한 B의 미분" 이라 함은 "B에 대한 A의 영향력" 이라고 해석할 수 있다. 즉 A가 바뀌는 정도에 따라서 B가 얼만큼 바뀌는지를 정의한 식이다.

 

  q에 대한 f의 미분을 알았으니, 다음으로는 x, y 에 대한 f의 미분(f에 대한 x, y의 영향력)을 구해야 한다. 이를 구하기 위해서 "Chain Rule" 이 등장한다.

 

  즉, df/dx를 구하기 위해서 (df/dq) * (dq/dx)를 하는 것이다. 이는 곧 (위에서 내려온 미분값) * (현재 미분) 이라 할 수 있다. 위 df/dx를 예로 들자면, 우선 q에 해당하는 +식은 x+y이다. 이를 x에 대해서 미분을 하면 1을 얻을 수 있다. 즉 현재미분 = 1 인 것이다.  그리고 위에서 내려온 미분값 = -4 이다. 따라서 1*(-4)=-4가 나오므로 df/dx = -4가 되는 것이다. Chain Rule에 대한 것은 아래 슬라이드를 보면 더 깔끔하게 알 수 있다.

 

  이처럼 간단히 말하면 Chain Rule = (위에서 내려온 미분값) * (현재 미분) 이 되는 것이다.


Backpropagation(Vectorized)

  위와 같은 그래프가 있을 때, Vector들의 Backpropagation은 어떻게 진행되는지 살펴보자. 우선 첫 번째 *연산에 대한 식은 좌측 하단에 q로 나타나있고, L2에 대한 식은 f(q)로 나타나있다.

 

  f(q) = 0.22^2 + 0.26^2였으므로, 이를 각각에 대해 미분하면 2*0.22, 2*0.26를 얻는다. 따라서 [0.44, 0.52]T를 얻는 것이다. 이제 W에 대한 미분을 진행해보자.

 

  식이 복잡해보이지만, 어디까지나 Chain Rule에 해당하는 식임을 명심하자. 우선 곱연산이니 미분 후 남는 것은 W가 아닌 x의 값들이다. 이를 1_k=i * x_i로 표현하였고, 위에서 내려온 미분값은 2q_k로 표현하였다. 이들을 합쳐 2q_i * x_j 가 된 것이다. (k에 대한 시그마가 있지만, k=i인 식이 존재하므로 k=i로 치환하면 시그마를 없앨 수 있다) 이를 사용하여 구하면 [[0.088, 0.176], [0.104, 0.208]]이 나온다. 다음으로 x에 대한 미분을 보자.

 

  이 또한 식이 어려워보이지만 Chain Rule을 벗어나지 않는다. 곱연산에 의해 미분을 하게 되면, 위 W에 대한 미분과는 반대로 W에 대한 값들만이 남는다. 그리고 위에서 내려온 미분은 동일하게 2q_k이므로 이를 합치면 위와 같은 식이 나온다. 다만 이 때는 k=i와 같은 식이 없기 때문에 k에 대한 시그마를 없앨 수 없다. 예를 들어, -0.112를 구해본다면 (2*0.22*0.1) + (2*0.26*(-0.3)) = -0.112가 되는 것이다.


출처 : https://www.youtube.com/c/stanfordengineering/featured

 

Stanford University School of Engineering - YouTube

 

www.youtube.com

 

Comments