3 분 소요

image



Neural Networks Basics

Shallow Neural Networks

Derivatives of Activation

여러분의 신경망에 대해 역전파를 구현할 때 활성화 함수의 기울기나 도함수를 계산해야 합니다. 이제 활성화 함수의 선택과 이러한 함수의 기울기를 계산하는 방법을 살펴보겠습니다.

Sigmoid activation function

image

여기 친숙한 시그모이드 활성화 함수입니다. 따라서 주어진 $z$ 값에 대해 작은 선을 그리면 아래 삼각형의 너비에 대한 높이에 해당하는 기울기 또는 도함수를 가집니다. 그래서, 만약 $g(z)$가 시그모이드 함수라면, 그러면 함수의 기울기는 $\cfrac{d}{dz}g(z)$이며, 그래서 우리는 미적분을 통해 $z$ 에서 $g(x)$의 기울기라는 것을 알게됩니다.

미적분학에 익숙하고 도함수를 구할 줄 알면 시그모이드 함수의 도함수를 취하면 해당 공식을 보여줄 수 있습니다. 다시 말하지만 여기서는 미적분을 단계를 진행하지 않을 것입니다.

따라서 이것은 $g(z)(1-g(z))$입니다. 이 표현이 말이 되는지 확인해 봅시다. 첫째, $z$가 매우 클경우, $z$가 $10$과 같다면 그 다음, $g(z)$는 1에 가까울 것이며, 왼쪽에 있는 공식은 $\cfrac{d}{dz}g(z)$가 1(1-1)로 결국 0과 근접한 값이 됩니다. $z$의 기울기가 매우 크면 기울기가 0에 가깝기 때문에 이것은 올바르지 않습니다.

반대로, $z$가 $-10$이면, 그러면 $g(z)$는 0에 가까울 것 입니다. 즉 0(1-0) 입니다. 이 값은 역시 0과 근접합니다.

마지막으로, $z$가 0인 경우, 그 다음, $g(z)$는 1/2이고, 이것이 바로 시그모이드 함수입니다. 그러면 미분은 1/2(1 - 1/2)입니다. 1/4과 같으며, 그리고 그것은 실제로 $z$가 0일 때 이 함수의 도함수 또는 기울기의 정확한 값으로 판명되었습니다.

마지막으로, 한 가지 표기법을 더 소개하자면 때때로 도함수의 줄임말로 사용하는 $g’(z)$입니다. g 프라임 z로 미적분에서 맨 위에 있는 작은 대시를 ‘프라임’이라고 부릅니다. 그러나 $z$의 g 프라임은 입력 변수 $z$에 대한 g 함수의 도함수에 대한 미적분학의 약자입니다.

그런 다음 이 신경망에서, $a = g(z)$라고 했을 때, 도함수는 $a \times (1 - a)$로 정리됩니다. 그래서 때로는 구현에 있어서 $g’(z) = a \times (1 - a)$를 보실텐데오. 이것은 단지 도함수를 의미합니다. 이 공식의 장점은 $a$에 대한 값을 이미 계산한 경우 이 표현식을 사용하여 g 프라임에 대한 기울기 값도 매우 빠르게 계산할 수 있다는 것입니다.

Tanh activation function

image

이제 Tanh 활성화 함수를 살펴봅시다. 우리가 이전에 했던 것과 비슷한데요. $\cfrac{d}{dz}g(z)$는 $z$의 특정 지점에서 $g(z)$의 기울기이며, 쌍곡선 탄젠트 함수의 공식을 보고 미적분학을 알고 있따면, 도함수를 취하고 이것이 이 $1 - (tanh(z))^2$ 공식으로 단순화된다는 것을 보여줄 수 있고 이것을 다시 $g’(z)$이라고 부를 때 이전에 가지고 있는 속기법을 사용할 수 있습니다.

원한다면 이 공식이 타당한지 확인해 볼 수 있습니다. 예를 들어, $z = 10$이면, $tanh(z)$는 1에 매우 가까울 것입니다. 그리고 이것은 +1 에서 -1 사이의 값입니다. 그 다음에 $g’(z)$는 함수에 따르면 결국 0과 근접한 값인데요. 그래서 $z$가 매우 크다면 기울기는 0에 가깝습니다.

반대로 $z$의 값이 작으면 이는 0에 가까습니다. 그리고 마지막으로 z가 0인 경우, $tanh(z)$는 0과 같고 기울기는 실제로 1과 같으며 이부분은 $z$의 값이 0일 때의 기울기 점을 나타냅니다.

요약하자면, 만약 $a = g(z)$ 즉 $a = tanh(z)$라면 도함수인 $g’(z) = 1 - a^2$입니다. 만약 여러분이 $a$의 값을 이미 계산한 경우에는 이 공식을 사용해서 빠르게 도함수의 값을 구할 수 있습니다.

ReLU and Leaky ReLU

image

마지막으로 ReLU 및 Leaky ReLU 활성화 함수에 대한 도함수를 계산하는 방법은 다음과 같습니다.

만약 $g(z) = max(o, z)$이면, 도함수는 다음과 같습니다.

도함수 $g’(z)$는 $z$가 0보다 작으면 0이고, $z$가 0보다 크면 1이 됩니다. $z$가 정확히 0과 같다면 실제로 정의되지 않고 기술적으로 정의되지 않습니다. 그러나 이것을 소프트웨어에서 구현하는 경우 수학적으로 100% 정확하지 않을 수 있지만 하지만 $z$가 정확히 0인 경우에는 괜찮을 겁니다. 도함수를 1로 설정하면 정상적으로 작동합니다. 항상 0이 되어야만 하는 것은 중요하지 않습니다.

만약 당신이 최적화 전문가라면, 기술적으로는 g 프라임은 z의 활성화 함수 g의 하위 기울기라고 불리는 것이 됩니다. 그렇기 때문에 기울기 하강이 계속 작동할 것입니다. 하지만 $z$가 정확히 0.0000000…일 확률이라고 생각할 수 있습니다. 그것은 너무 작아서 $z$가 0일 때 도함수를 어디와 같게 설정했는지는 거의 중요하지 않습니다. 실제로 이것은 사람들이 $z$의 도함수에 대해 구현하는 것입니다.

마지막으로 Leaky ReLU 활성화 함수를 가진 싱경망을 훈련시키는 경우, $g(z) = max(0.01z, z)$이므로, $g’(z)$는 $z$가 0보다 작으면 0.01이고 0보다 크면 1입니다.

다시 말하지만 $z$가 정확히 0일 때는 기술적으로 기울기는 정의되지 않지만, 도함수를 설정하거나 g 프라임을 0.01 또는 1로 설정하는 코드 조각을 구현한다면, 그것은 정말로 문제가 되지 않습니다. 어느쪽이든, 별로 중요하지 않습니다. $z$가 정확히 0이면 코드가 제대로 작동합니다.

따라서 이러한 공식에서 활성화 함수의 도함수나 기울기를 계산해야 합니다. 이제 기본 빌딩 블록이 되는 내용을 다루었으니 여러분은 어떻게 신경망을 위해 기울기 하강을 구현할 수 있는지 보실 준비가 되었습니다.

Gradient descent for neural networks

image

image

댓글남기기