Backpropagation 유도 - 함께 편미분하기

안 형준·2021년 9월 4일
3

DLmath

목록 보기
2/5
post-thumbnail

Backpropagation이란?

Gradient Descent 방법을 사용할 때 필수적인 알고리즘으로서, Weight Matrix WW를 Cost Function CC가 가장 작게 하는 업데이트 WWαCWW \rightarrow W - \alpha \frac{\partial {C}}{\partial {W}} 를 실시할 때, CW\frac{\partial {C}}{\partial {W}}를 빠르게 계산하는 방법입니다. Weight를 하나씩 변화해가며 gradient를 계산하는 방법에 비해 한꺼번에 모든 Weight의 gradient를 계산하여 연산 속도를 비약적으로 상승시켜 딥러닝의 핵심적인 기법이 되었습니다.

다층 퍼셉트론(Multi-Layer Perceptron)에 대한 Backpropagation을 유도와 함께 설명하겠습니다.

이 글은 CHAPTER 2 How the backpropagation algorithm works을 따라 정리한 글입니다.

Warm up

유도에 쓰이는 연산을 정리합니다

Chain rule

y=f(u1,u2,...,um),ui=gi(x)y = f(u_1, u_2, ..., u_m),\quad u_i = g_i(x) 일 때, yx=i=1myuiuix\frac{\partial {y}}{\partial {x}} = \sum_{i=1}^m \frac{\partial {y}}{\partial {u_i}}\frac{\partial {u_i}}{\partial {x}} 가 성립합니다. 이를 chain rule이라고 합니다.

Matrix-Vector multiplication

yj=kMjkxky_j =\sum_k M_{jk} x_k 일 때, y=Mx{\bf{y}} =M{\bf{x}} 라고 씁니다. x{\bf{x}}(n,1)(n, 1)벡터, MM(m,n)(m,n)행렬일 때, y{\bf{y}}(m,1)(m,1)벡터가 됩니다. 즉, 차원을 비교하면 (m,1)(m,n)×(n,1)(m,1) \leftarrow (m, n)\times(n,1)입니다.

Hadamard product - ⊙

차원이 같은 벡터 둘 사이에서 정의된 연산으로 연산 결과 역시 차원이 같은 벡터이며, 각 성분은 원래의 두 벡터에서 위치가 같은 두 성분의 곱입니다. 따라서, 어떤 벡터의 각 성분이 다른 두 벡터의 성분별 곱과 같다면(pj=sjtjp_j = s_jt_j), Hadamard product를 사용하여 p  =s    tp\;=s\; ⊙\;t로 표기할 수 있습니다.

Applying function to vectors

yy가 벡터일 때, q=f(y)q = f(y)라는 표기는 qj=f(yj)q_j = f(y_j)을 의미합니다. 즉 함수를 벡터에 작용하면, 각 성분에 함수를 적용한 결과를 각 성분으로 갖는 벡터가 됩니다.

Notation

MLP에서 각 layer에서 가중합에 activation을 적용하여 다음 layer로 전달합니다. 이에 대한 backpropagation을 유도하기 전에 표기법을 정하고 시작해야 합니다.

  • Loss function은 CC, activation은 σ\sigma로 표기합니다.
  • ll번째 layer의 jj번째 Node로의 입력 중, l1l-1번째 layer의 kk번째 Node로부터 온 것은 wjklakl1w_{jk}^l a_k^{l-1}으로 표기합니다. 즉, subscript는 도착 Node, 출발 Node 순으로 적고, superscript는 도착 layer를 적습니다.
  • activation을 적용하기 전의 값은 zz로 표기합니다.
  • 벡터 ala^l의 각 성분 ajla^l_jajl=σ(zjl)a^l_j=\sigma(z_j^l)을 만족하므로, al=σ(zl)\quad a^l=\sigma(z^l)로 표기할 수 있습니다.

BP equations

이제 준비가 끝났습니다. MLP에서의 backpropagation은 4개의 방정식으로 정리되는데, 하나씩 유도해 보겠습니다. 각 방정식의 의미에 대해서는 CHAPTER 2 How the backpropagation algorithm works를 참고해 주세요.

δ 정의하기

식을 정리하다보면 자주 나오게 되는 Czjl\frac{\partial {C}}{\partial {z_j^l}}를 간단하게 δjl\delta_j^l로 표기합니다.


위 식에 따르면, Czjl\frac{\partial {C}}{\partial {z_j^l}}dzjldz_j^l에 곱해져서 dCdC에 기여합니다. 따라서, 같은 dzjldz_j^l의 크기라도 Czjl\frac{\partial {C}}{\partial {z_j^l}}가 크면 dCdC에 기여하는 것이 큽니다. 이는 Czjl\frac{\partial {C}}{\partial {z_j^l}}CCzjlz_j^l의 변화에 대해 민감한 정도로 이해할 수 있다는 의미입니다.

δjl=Czjl\\ \delta_j^l = \frac{\partial {C}}{\partial {z_j^l}}

BP1

δjL=CajL  σ(zjL)δ^L_j=\frac{∂C}{∂{a^L_j}}\;σ′(z^L_j) 유도하기

  • δjLδ^L_j를 계산하기 쉬운 형태로 바꾸어주는 식입니다. Loss function은 최종 출력 aLa^L에 의존하므로 편도함수를 구할 수 있고, zLz^L은 feedforward 단계에서 이미 계산한 값입니다. 또한, σσ′(activation의 도함수) 역시 알고 있는 형태이기 때문입니다.

BP2

δl=((wl+1)Tδl+1)σ(zl)δ^l=((w^{l+1})^Tδ^{l+1})⊙σ′(z^l) 유도하기

  • chain rule과 δ\delta의 정의를 활용하면 식 2까지 진행할 수 있습니다.

  • 이 때, 밑줄 친 부분을 어떻게 정리할 지 살펴봅시다.

  • zml+1z^{l+1}_mll번째 layer로부터의 가중합으로 분해합니다.

  • apla_p^lpjp\neq j 인 경우, zjlz_j^l과 무관(편미분하면 0)입니다.

  • 따라서 첫째 줄에서 k=jk=j인 항만 0이 아닌 값을 갖습니다.

  • 이제 마지막 줄을 정리해야 합니다.

  • 행렬AA(i,j)(i, j) 성분은 AijA_{ij}라고 씁니다. 또는 행과 열을 바꾼 AA의 transpose: ATA^T(j,i)(j, i) 성분으로 쓸 수 있습니다.

  • wl+1w^{l+1}에 대해서 같은 처리를 하고 나면, summation을 Matrix-Vector multiplication 형태로 바꿀 수 있습니다.

  • 결과는 두 벡터의 같은 성분의 곱을 성분으로 갖는 벡터로, Hadamard product로 표기합니다.

BP3, BP4

Cbjl=δjl,Cwjkl=akl1δjl\frac{∂C}{∂b^l_j}=δ^l_j,\quad \frac{∂C}{∂w^l_{jk}}=a^{l−1}_kδ^l_j 유도하기

  • BP4에서, zlz^l의 성분 중, wjklw^l_{jk}에 영향을 받는 성분은 zjlz^l_j뿐입니다.

  • wjklw^l_{jk}에서 jj는 도착 Node를 의미합니다. 다르게 말하면, 직전 layer의 kk번째 Node에서 ll번째 layer의 jj번째 Node로의 연결에만 관여하므로 ll번째 layer의 다른 Node에는 무관합니다.

  • 따라서, zjlz^l_j에 관한 항만 살아남게 되고, 두번째 줄로 넘어갑니다.

  • zjlz^l_j을 가중합으로 분해하고,nkn\neq k의 경우 편미분하면 0이므로, n=kn=k 인 경우에 대해서만 편미분하면 결론을 얻습니다.

  • 미분 결과의 형태에 대해서는 Backpropagation, 벡터로 미분하기를 참고해주세요

profile
물리학과 졸업/ 인공지능 개발자로의 한 걸음

3개의 댓글

comment-user-thumbnail
2021년 9월 5일

깔끔하게 정리를 잘 하셨네요 잘 보고 갑니당👍👍

1개의 답글
comment-user-thumbnail
2023년 10월 15일

안녕하세요 글 잘 보고 있어요..!
제가 요즘 많이 고심하는데도 모르겠어서
여쭤보고 싶은 공업수학 문제가 있는데
혹시 답변 해주실 수 있으실까요..?
곤란 하시다면 답변 안 해주셔도 괜찮아요
문제는 이거예요…!

“분리가능 상미분 방정식은 양형태 상미분 방정식의 일부이고, 완전 상미분 방정식은 음형태 상미분 방정식 일부라고 볼 수 있다.
양형태의 상미분 방정식 중 분리가능한 상미분 방정식을 제외하고 남은 상미분 방정식들은 어떤 것들이 있는지 (즉, 분리가능하지 않은 상미분 방정식들), 음형태의 상미분 방정식 중 완전 상미분 방정식을 제외하고 남은 상미분 방정식들은 어떤 것들이 있는지 (즉, 완전하지 않은 상미분 방정식들) 쓰시오.
즉.
양형태의 상미분 방정식의 전체 집합을 W.
음형태의 상미분 방정식의 전체 집합을 U,
분리가능한 상미분 방정식의 전체 집합을 A,
완전 상미분 방정식의 전체 집합을 B
라고 할 때
집합 A^c ᑎ W 과 집합 B^c ᑎ U 에 대해 기술하는 문제이다. 그 집합에 해당하는 미분 방 정식의 예를 몇 개 구하고 그들의 공통된 특징을 기술하는 방법을 써도 좋고, 아니면 이 집 합에 속하는 방정식들의 특징을 바로 기술하여도 좋다.“

답글 달기