본문 바로가기

Machine Learning

뇌과학과 활성화 함수 (Neuroscience and Activation Functions: Sigmoid, tanh, and ReLU)

어느 날, 신경망(Neural Network)이라는 용어에서 "Neural"이라는 단어가 "Neuroscience(뇌과학)"와 관련이 있을 수 있겠단 생각이 문득 들었을지 모릅니다. Neuroscience에서 신경계를 이루는 세포인 뉴런(Neuron)은 뉴런 간의 전기화학적 신호로 신경 신호를 전달합니다. 이 과정은 Neural Network의 신호 전달 체계와 매우 비슷합니다.

 

우리의 뇌에는 neuron이 줄줄이 소시지 처럼 연결되어 있고(정말 외형이 소시지 모양입니다), 수상돌기(dendrite)로 받아들인 입력 신호는 축삭(axon)에서 활동전위를 일으킨 뒤, 축삭말단(axon terminal)에서 시냅스(synapse)로 신경 전달 물질을 내보내어 다음 neuron의 수상돌기의 수용기(receptor)에 출력 신호를 전달합니다. 먼 거리 동안 막 전위(membrane potential) 신호를 유지하며 빠르게 전달하기 위해 절연 물질인 미엘린 수초(Myelin steath)를 axon에 둘러 도약 전도(saltatory conduction)라는 방법도 사용합니다.

평소 -70mv 정도의 막 전위차를 유지하고 있는 axon에 어떤 자극이 가해졌을 때, 이온의 수송(Na+ influx)을 통해 역치(threshold)를 넘기는 탈분극(depolarization)이 일어나며 활동전위(action potential)를 생성합니다.

 

다소 장황한 도입부였는데요. (갑자기 전공 얘기가 나와서 신났는지도 모릅니다.)

Neural Network와 Neuron의 신호 전달체계에서 몇 가지 공통점을 찾을 수 있습니다. 하나의 neuron(=계산 노드)에 여러 neuron의 출력이 입력된다는 점, 일정 threshold를 넘겼을 때 활동전위를 생성하는 점 등이 있습니다. 다음 그림에서 생물학적 neuron(왼쪽)을 수학적으로 모델링(오른쪽)한 것을 확인할 수 있습니다.

출처: https://cs231n.github.io/neural-networks-1/

이전 neuron에서 synapse를 통해 $w_0x_0, w_1x_1, w_2x_2$가 입력으로 들어오고, 세포체에서는 이 입력 신호들의 weighted sum $\sum_i w_i x_i +b$을 activation function $f$에 입력으로 주어 활성화 정도(firing rate)를 모델링합니다. Activation function은 활성화를 일으킬지(생물학적 neuron에서의 triggering/firing) 결정하며, 출력값은 axon terminal을 통해 다음 neuron으로 출력 값을 전달합니다.

 

오늘은 Neural Network에서 활성화 함수(activation function)라는 개념의 역할과 종류에 대해 알아보겠습니다. 중요하게 다룰 부분은 "비선형성(nonlinearity)"와 "그래디언트 소실(gradient vanishing)"입니다.

 

활성화 함수(Activation Function)의 역할

: 입력 신호의 가중치 합이 활성화를 일으킬지 결정

 

활성화 함수의 종류

가장 간단한 activation function으로 step function을 생각해볼 수 있습니다. 이 함수는 스위치를 켜거나 끄듯이(On/Off) 둘 중 하나만 선택할 수 있습니다.

$$heaviside(x) = \begin{cases} 0 \text{, if } x<0 \\ 1 \text{, if } x \leq 0 \end{cases}$$

하지만 step function는 $x=0$에서 미분 가능하지 않기 때문에 optimization이 어렵고, 보다 복잡한 결정 경계(decision boundary)를 학습하기는 어렵습니다. Non-linear activation function인 Sigmoid, tanh, ReLU를 살펴보겠습니다.

 

출처: CS231n https://youtu.be/wEoyxE0GP2M

1. Sigmoid

$$\sigma (x) = {{1} \over {1+e^{-x}}}$$

특성

  • $x$가 음의 무한대로 가까워질수록 $e^{-x}$는 무한대에 가까워지므로 $\lim_{x \to - \infty} {{1} \over {1+e^{-x}}} = 0$
  • $x$가 양의 무한대로 가까워질수록 $e^{-x}$는 0에 가까워지므로 $\lim_{x \to + \infty} {{1} \over {1+e^{-x}}} = 1$
  • 입력 신호를 [0, 1] 범위의 값으로 압축한다.

장점

  • Neuron의 firing rate로 볼 수 있다. (0과 1 사이의 값이기 때문)

단점

  • 포화(saturation), 그래디언트 소실(gradient vanishing)
  • 원점 대칭이 아니다(not zero-centered).
    • 입력 값이 항상 양수라면 (activation output은 다시 입력이 된다), 2차원 평면을 가정했을 때 미분값은 x, y 값을 모두 증가시키거나 모두 감소시키는 방향으로 업데이트가 가능하다.
    • 예를 들어, 최적의 파라미터 $w$가 x 값은 증가, y 값은 감소하는 방향의 벡터라고 가정하면, 기울기가 양수인 벡터 방향으로 살짝 꺾어가며 이동하여 최적의 파라미터를 찾아야 하는 비효율적인 parameter update 과정을 거치게 된다.

출처: CS231n https://youtu.be/wEoyxE0GP2M

2. tanh

$$\tanh x = {{e^x - e^{-x}} \over {e^x + e^{-x}}}$$

특성

  • $x$가 음의 무한대로 가까워질수록 $e^{-2x}$는 양의 무한대에 가까워지므로 $\lim_{x \to - \infty} {{2} \over {1+e^{-2x}}} -1 = -1$
  • $x$가 양의 무한대로 가까워질수록 $e^{-2x}$는 0에 가까워지므로 $\lim_{x \to + \infty} {{2} \over {1+e^{-2x}}} -1 = 1$
  • 입력 신호를 [-1, 1] 범위의 값으로 압축한다.

장점

  • 원점 대칭(zero-centered).

단점

  • 포화(saturation), 그래디언트 소실(gradient vanishing) → Sigmoid와 같다

3. ReLU (Rectified Linear Unit)

$$f(x) = max(0, x)$$

특성

  • 양수 x 값에 대해서는 saturation이 문제가 되지 않는다.
  • 연속적이지만 $x=0$에서 미분가능하지 않다. ($x=0$에서 기울기가 변해 gradient descent 시에 방향이 튈 수도 있다)

장점

  • Sigmoid, tanh에 비해 빠르게 수렴된다.

단점

  • 음수 x 값에 대해서는 포화(saturation), 그래디언트 소실(gradient vanishing) 문제가 있다.
  • 원점 대칭이 아니다(not zero-centered).

 

그래디언트 소실 (Gradient Vanishing)

Sigmoid, tanh 함수에서 x가 아주 작은 음수거나 아주 큰 양수일 때 기울기(gradient)는 0에 가까워집니다. 이러한 경우 역전파(backpropagation) 과정에서 미분값인 ${\delta L} \over {\delta \sigma}$는 0에 가까워지게 되고, chain rule에 의해 구할 수 있는 ${{\delta L} \over {\delta x}} = {{\delta \sigma} \over {\delta x}} {{\delta L} \over {\delta \sigma}}$ 역시 0에 가까운 값이 곱해집니다. Input layer로 갈수록 점점 0에 가까운 gradient 값이 곱해지는 "Gradient Vanishing" 현상이 발생합니다.

 

비선형성 (Nonlinearity)

위의 내용에서는 activation function이 비선형적(non-linear)이라는 가정을 기반으로 서술했습니다. Activation function은 반드시 비선형 함수이어야 할까요?

반대로 activation function이 선형 함수라면 어떤 일이 일어날지 상상해봅시다. 다음 neuron으로 전달되는 입력 값은 앞서 정의한 대로 $f(\sum_i w_i x_i +b)$ 입니다. Neural Network가 여러 층(layer)으로 구성되어 있다면 $f$를 여러 번 통과하겠지만, 선형 함수는 여러 번 통과해도 선형적으로 표현 가능합니다.

예를 들어, activation function이 $4x + 2$였다면 $k$개의 layer를 통과한 출력 값은 $4^k x + 2\sum 4^{k-1}$가 됩니다. 이는 hidden layer가 없는 network($Wx+b$)로 대체 가능하기 때문에 주로 non-linear function을 activation function으로 씁니다.

 

추가로 찾아볼만한 주제는 Universal Approximation Theorem입니다. Neural Network에서 하나의 hidden layer만 추가하더라도 non-linear function(e.g. activation function)을 사용하여 어떤 연속 함수든 표현할 수 있다는 이론입니다.

반응형