-
미분 | 패스트캠퍼스 챌린지 08일차딥러닝 2022. 1. 31. 15:17
미분이다. 미분은 순간변화율을 일반화 한 것이다. 변화율은 y=f(x)라는 함수에서 x의 변화와 y의 변화 사이의 비율을 뜻한다. 즉, delta(y) / delta(x)가 변화율인데, x=a일 때의 순간변화율은 delta(x)가 0에 다다를 때의 변화율을 뜻한다. 그래프상에서는 x=a인 지점에서의 접선의 기울기가 순간변화율이다. 가령, y=x^2이라는 함수에 대해 x=2일 때의 순간변화율은 delta(x)가 0에 가까워 질 때, 즉 delta(x)를 h라 표기한다면 lim(h → 0)일 때 (f(x+h) - f(x)) / h를 뜻하며, f(x) = x^2이므로 f(x+h) - f(x) = x^2 + 2hx + h^2 - x^2 = 2hx + h^2이고, x=2라면 4h + h^2이다. 이를 h로 나누면 4+h가 되고, 이 때 h → 0이라면 이 값은 4에 가까워 진다.
이러한 순간 변화율을 전체 정의역에 대해 일반화 한 함수를 도함수Derivative라 부르고, 이러한 도함수를 구하는 과정이 바로 미분이다. 미분은 위와 같은 계산을 통해 일일이 구하는 것이 원칙이나, 함수의 유형에 따라 일반화할 수 있다. 이에 따라 상수함수의 도함수는 항상 0, f(x) = x^10의 도함수는 10*x^9가 되는 등의 연산을 쉽게 할 수 있다. 여기에 상수 C에 대해 g(x) = Cf(x)라면 g’(x) = Cf’(x)라는 성질과 h(x) = f(x) + g(x)라면 h’(x) = f’(x) + g’(x)라는 성질(이 때, 함수 뒤에 ‘가 붙은 함수는 도함수를 지칭한다)을 이용하고, 이에 더해 f(x)g(x)의 x에 대한 미분과 f(x)/g(x)의 x에 대한 미분에 대한 공식을 적용하면 복잡한 함수라도 차근차근히 미분해 나갈 수 있다.
지난시간에 배운 내용을 활용해 보면 이러한 미분은 미분계수만큼 파라미터를 업데이트하기 위해 사용된다. 따라서, 활성화함수의 미분이 큰 역할을 하게 된다. 주로 쓰이는 활성화함수 Sigmoid, tanH, ReLU 중 ReLU는 x≥0일 때 x, x<0일 때 0을 출력하는 범위함수로, 도함수는 해당 범위에 맞추어 x≥0일 때 1, x<0일 때 0이라고 쉽게 구할 수 있다. Sigmoid의 경우 함수를 네 개의 함수로 나누어 chain rule에 의해 그 미분값들을 곱해서, Sigmoid값을 s라 표기한다면 도함수가 s(1-s)임을 알 수 있고, tanH의 경우 sinH(x)/cosH(x)이므로, f(x)/g(x)의 미분 공식을 활용해 (1-tanH(x))(1+tanH(x))임을 알 수 있다(위 노트필기에 자세한 과정이 기록되어 있다).
이러한 미분을 이용하면, neural network의 하나의 layer는 입력값을 받아 출력값을 내보내는 순방향전파를 하는 동시에, 역방향전파일때는 출력값의 미분계수를 받아 입력값의 미분계수를 내보내는 일종의 모듈이라는 점을 알 수 있다. 중요한 점은 이러한 모듈이 합쳐질 수 있다는 것 같다. 물론 이렇게 단순한 레이어는 없겠지만, L1: f(x) = x+1, L2: g(x) = x*2라고 하자. 이 떄, 각각의 레이어는 각각의 입출력을 순방향, 역방향 전파에서 가지지만, 이 두 레이어를 합쳐서 L3: g(f(x)) = 2(x+1), 이라고 merge 한다 하더라도 상관이 없으며, 이는 순방향 전파 뿐만 아니라 역방향전파에 있어서도 L3가 L1의 입력값에 대한 미분계수를 출력으로, L2의 출력값에 대한 미분계수를 입력으로 가진다는 점에서도 문제가 없다. 이런식으로 딥러닝에서 레이어를 merge하는 과정을 거칠 수 있게 된다는 점이 중요한 듯 하다.
참고로 이러한 미분이라는 시스템은 linearity와 time invariance라는 특징을 모두 갖추고 있는 LTI 시스템이다. 이는 미분이라는 연산이 전산적으로 그렇게 복잡하지 않다는 뜻을 가진다고 한다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다. https://bit.ly/37BpXi
'딥러닝' 카테고리의 다른 글
편미분과 인공뉴런 | 손실함수의 편미분 | 패스트캠퍼스 챌린지 10일차 (0) 2022.02.02 다변수함수 | 편미분 | 패스트캠퍼스 챌린지 09일차 (0) 2022.02.01 역방향전파(Backpropagation) | 패스트캠퍼스 챌린지 07일차 (0) 2022.01.30 Convolutional Neural Networks | 패스트캠퍼스 챌린지 06일차 (0) 2022.01.29 Convolution Layers with Multiple Channel | Pooling, Striding, Padding | 패스트캠퍼스 챌린지 05일차 (0) 2022.01.28