본문 바로가기
딥러닝

오차역전파 알고리즘: ReLU, Sigmoid, Affine, Softmax 계산

by Data Lib 2024. 1. 26.

이전 오차역전파를 이용한 계산에 이어 ReLU, Sigmoid, Affine, Softmax 는 역전파에서 어떻게 동작하는지에 대해 알아보겠습니다. 연쇄법칙을 이용한는 것을 기본공식으로 해서 각각의 특징적인 노드별로 계산법을 알아두면 딥러닝의 계산은 간단하게 정리됩니다. 

 

 

ReLU 계층 계산 그래프

ReLU의 수식인 $ 𝑦= \begin{cases} 𝑥,  𝑥>0 \\ 0,  𝑥≤0 \end{cases} $ 을 미분하면 $ dfrac{𝜕𝑦}{𝜕𝑥}= \begin{cases} 1,  𝑥>0 \\ 0,  𝑥≤0 \end{cases} $  이 됩니다. 

  • 순전파에서 입력이 x > 0이면 역전파에서 upstream 값을 그대로 downstrem으로 보냄(1을 곱하는 효과)
  • 반면, 입력이 x <= 0이면 역전파에서 upstream 값을 downstream으로 보내지 않음(0을 곱하는 효과)

ReLU 계층 계산 그래프
ReLU 계층 계산 그래프

 

Sigmoid 계층 계산 그래프

시그모이드 함수 수식은 $ 𝑦=  \dfrac{1}{1+exp⁡(𝑥)} $ 입니다. 시그모이드는 아래 4단계로 계산이 진행됩니다. 수식이 나왔다고 어려워 하시지 마시고 하나하나 따라가 보시죠. 

  • 1단계 : $ y = \dfrac{1}{𝑥} $ 를 미분하면 $ \dfrac{𝜕𝑦}{𝜕𝑥} = -\dfrac{1}{𝑥^2}  (y= \dfrac{1}{𝑥}  이므로 -𝑦^2)  $ → $−\dfrac{𝜕𝐿}{𝜕𝑦} 𝑦^2 $
  • 2단계 : ‘+’ 노드이므로 단순히 하류로 값을 흘려 보냄 →  $ −\dfrac{𝜕𝐿}{𝜕𝑦} 𝑦^2  $
  • 3단계 : 'exp'노드는 $ y=exp(x) $ 를 수행하고, 미분과 원함수가 동일, $ \dfrac{𝜕𝑦}{𝜕𝑥} = exp⁡(𝑥) $ → − $ \dfrac{𝜕𝐿}{𝜕𝑦} 𝑦^2 exp⁡(−𝑥) $
  • 4단계 : ‘x’ 노드는 순전파 때의 값을 ‘서로 바꿔'곱함(-1을 곱하면 됨)    →  $ \dfrac{𝜕𝐿}{𝜕𝑦} 𝑦^2  exp⁡(−𝑥) $

정리하면, $ \dfrac{𝜕𝐿}{𝜕𝑦} 𝑦^2  exp⁡(−𝑥)= \dfrac{𝜕𝐿}{𝜕𝑦} 𝑦(1−𝑦) $ 로 계산이 됩니다. 간단하게 정리해보면 Sigmoid 계층의 역전파는 순전파의 출력 (𝑦) 만으로 계산할 수 있습니다. 

 

시스모이드 계층 계산
시스모이드 계층 계산

 

Affine 계층

Affine 계층은 딥러닝에서 순전파시 행렬 곱을 수행하는 계층을 의미합니다. 쉽게 말해 일반적인 Layer 계층을 말하는 거에요. 이런 행렬 곱을 수행할 때는 스칼라 계산과 다르게 형상(Shape)을 일치시켜야 합니다. 자 그럼 어떻게 계산되는지 알아보시죠. 
수식 $ 𝑌=𝑋 ° 𝑊+𝐵 $ 을 계산해 보도록 하겠습니다. 
우선 편미분을 하면  $ \dfrac{𝜕𝑌}{𝜕𝐵}=1,   \dfrac{𝜕𝑌}{𝜕𝑋}=𝑊^𝑇,    \dfrac{𝜕𝑌}{𝜕𝑊}=𝑋^𝑇 $ 가 계산됩니다. 

  • $ \dfrac{𝜕𝐿}{𝜕𝑋}=\dfrac{𝜕𝐿}{𝜕𝑌} ° \dfrac{𝜕𝑌}{𝜕𝑋}=\dfrac{𝜕𝐿}{𝜕𝑌} ° 𝑊^𝑇 $
  • $ \dfrac{𝜕𝐿}{𝜕𝑊}= \dfrac{𝜕𝐿}{𝜕𝑌} ° \dfrac{𝜕𝑌}{𝜕𝑊}= \dfrac{𝜕𝐿}{𝜕𝑌}  °𝑋^𝑇=𝑋^𝑇 ° \dfrac{𝜕𝐿}{𝜕𝑌} $
  • $ \dfrac{𝜕𝐿}{𝜕𝐵}= \dfrac{𝜕𝐿}{𝜕𝑌} ° \dfrac{𝜕𝑌}{𝜕𝐵}= \dfrac{𝜕𝐿}{𝜕𝑌} ° 1=  \dfrac{𝜕𝐿}{𝜕𝑌}  $

배치용 Affine 계층은 데이터 n개를 묶어 순전파로 계산하는 방법으로 X의 형상이 (n, 2)가 된 것일 뿐 동일한 방식으로 행렬 계산하면 됩니다.

 

수식 x로 미분한 결과
$ ax = a^T x = x^T a $ $ a^T $
$ Ax $ $ A $
$ x^TA $ $ A^T $
$ x^TAx $ $ x^T(A+A^T) $

Softmax 계층

소프트맥스 함수는 입력값을 정규화하여 출력하는 기능을 합니다. 소프트맥스 계층을 구현할 때 손실 함수인 교차 엔트로피 오차도 포함하여 ‘Softmax-with-Loss 계층’이라는 이름으로 구현되어지죠. 

Cross entropy Error 계층 역전파

역전파의 초기값, 즉 가장 오른쪽 역전파의 값은 1입니다.  $  \dfrac{𝜕𝐿}{𝜕𝐿}=1 $라는 말입니다. 

  1. ‘x'노드의 역전파는 순전파 시 입력들의 값을 서로 바꿔 상류의 미분에 곱하고 하류로 흘립니다. 
  2. '+'노드에서는 상류에서 전해지는 미분을 그대로 흘립니다. 
  3. 'log' 노드의 역전파는 다음 식을 따릅니다. 
    • $ 𝑦=  \log{⁡𝑥},   \dfrac{𝜕𝑦}{𝜕𝑥}=\dfrac{1}{𝑥} $

 

마무리

지금까지 딥러닝의 오차역전파 계산을 출력부터 입력까지 어느 정도 알아봤습니다. 딥러닝을 공부하는데 계산이나 수식을 몰라도 된다는 사람도 많습니다. 하지만 이렇게 한번 계산해 보면 컴퓨터가 어떤 방식에 의해 결과늘 내는지 감을 잡을 수 있습니다. 그 감을 통해 컴퓨터와 내가 교감(?)해 가면서 데이터 분석을 한다고 생각합니다.