딥러닝 101_Chapter 10
지난 글에서는 간단한 수식에 있어서 Forward Propagation과 Backward Propagation이 어떻게 진행이 되고 수학적으로 계산이 되는지 알아보았다. 이번 글에서는 Logistic Regression에 있어서, 특히 Backward Propagation이 어떠한 수학적 과정을 거쳐서 계산이 되는 것인지 한번 보도록 하겠다.
우선 Logistic Regression의 수학적 정의를 다시 한번 복습해 보자. 인풋 X1, X2가 있고 이와 연결된 Weight W1, W2가 있고 Bias 가 추가된 다고 하자. 그리고 이것이 활성함수 Sigmoid로 처리가 되고 아웃풋 y hat = a 가 산출이 된다.
Forward propagation에서 우리가 구하고자 하는 것은 이 아웃풋 a와 실제 정답 y의 차이를 계산하여 합한 Loss 값이다. 이러한 일련의 과정이 아래에 정리되어 있다. 누차 말하지만 Forward Propagation은 순차적으로 계산되는 것이며 직관적 이어 이해하기에 큰 어려움이 없을 것이다.
그런데 이를 Backpropagation 관점에서 수학적인 이해를 하려고 하면 골 때릴 수밖에 없다. 편미분과 체인룰의 개념을 이해해야 하고, log 함수에 대해서도 미분을 구할 줄 알아야 하기 때문에. 하지만 이에 대해서 일일이 수학적 계산 과정을 짚고 넘어가는 것이 우리의 목적은 아니다. 개별 수식에 대한 미분 값은 스스로 공부해 보시길.
Logistic Regression의 Backward propagation 과정에서 일어하는 수학적 의미를 한번 천천히 뜯어보도록 하자.
앞서 Foward propagation에서 우리는 Loss 값을 구했고 이는 위 수식에서 L(a, y)로 표기가 되었다. a와 y를 변수로 하는 함수가 L이라는 뜻이다. 이제 우리가 Backward propagtion을 통해 달성하고자 하는 것이 무엇이었는지 다시 한번 생각해보자. 바로 학습의 대상이 되는 파라미터 w, b의 최적값을 찾아 업데이트해 나가는 것이 목적이다. w, b의 최적값이라는 것은 다시 말해 Loss 값이 최저점일 때의 w, b의 값을 말한다. 그러면 우리는 최종적으로 Gradient Descent 알고리즘을 통해 각 변수가 Loss 값에 미치는 영향(혹은 기울기)을 구해서 여기에 Learning rate를 곱해 준후 빼 준후 이 값을 다시 각 변수 w, b에 업데이트하면 된다.
그러면 우리는 결국 dw, db를 구해야 하는데 이을 위해서 편미분과 체인 룰을 이해해야 하는 것이다. 앞서 모든 미분 값의 대상은 Loss 값이므로 dw = ∂ L/∂ w , db = ∂ L/∂ b 을 의미하는 것이며, 편의상 공통 요소인 ∂ L을 표기에서 생략하여 간단히 dw, db로 나타낸다고 하였다. dw, db를 구하기 위해서는 체인 룰에 의해서 L 값에 보다 직접적인 변수부터 즉 da부터 차례대로 구해서 곱해나가야 한다.
먼저 da(=∂ L/∂ a)부터 구해보면 아래와 같은 값을 가진다. L = -y*log(a) -(1-y)*log(1-a)인데 이를 a로 미분을 하게 되면 -y/a + 1-y/1-a가 나온다. 왜 이렇게 되는지에 대한 수학적 검증은 우리의 목적은 아니므로 각자의 공부에 맡기도록 하겠다.
그리고 그다음 차례인 dz(=∂ L/∂ z)를 구해야 한다. 결론부터 말하면 dz = a-y인데 이는 체인룰로 한번 보도록 하자. 체인룰 정의로 ∂ L/∂ z = ∂ L/∂ a * ∂ a/∂ z는 표현이 되는데 앞서 우리는 ∂ L/∂ a 을 계산해 놓았다. 그래서 ∂ a/∂ z만 구하면 이 둘을 곱해서 dz를 구할 수가 있다. ∂ a/∂ z는 a(1-a)이다. sigmoid 함수의 미분 값을 구하면 되는데, 마찬가지로 이것의 수학적 검증이 목적이 아니므로 a(1-a)라는 것은 그냥 믿고 쓰도록 하자. 결국 ( -y/a + 1-y/1-a)*a(1-a)를 구하면 a-y가 나오게 되고 이것이 dz이다.
마찬가지의 방법에 의하여 dw, db를 각각 구하게 되면 최종적인 수학적 정의는 이렇게 된다. 그리고 우리가 결국 하고자 하는 것은 Gradient Descent 알고리즘에 의하여 w, b를 업데이트하는 것이었으므로 구해진 dw, db를 learning rate 알파와 곱해서 업데이트해 나가면 되는 것이다.
이것이 Logistic Regression에서의 Backward Propagation (역전파)의 계산 과정이다. 역전파 알고리즘과 Gradient Descent는 사실 파라미터의 수가 많아질수록 직관적으로 이해하기가 상당히 어렵다. 파라미터 수가 2개를 넘어서게 되면, 사실 편미분과 체인룰 자체는 그렇다 치고 Gradient Descent 자체를 인간이 이해할 수 있는 차원인 3차원을 넘어서게 되므로 시각적으로 표현이 불가능하다. 그렇기 때문에 더더욱 수학적인 이해가 바탕이 되어 있지 않으면 복잡한 Neural Network에서의 Backward Propagation 과 Gradient Descent를 직관적으로 이해하기란 더욱 어려울 것이다. 머신러닝, 딥러닝을 제대로 이해하고 싶다면 이 부분은 간과해서는 안 될 매우 중요한 요소임을 잊지 말자.