neural network_activation function

활성화 함수(Activation function)

활성화 함수란?

unit(node)에서 하나의 값이 다음 unit으로 넘어갈 때, 일정값 이상이 되면 activation 되고, 아니면 activation 되지 않는 작용을 하는 함수

분류(Classification) 문제에서 activation function이 없다면, Y=W*x + b의 결과는 발생(1),미발생(0)의 분류가 아닌 실수값이 산출되게 됨. 활성화 함수는 산출되는 값을 일정한 기준에 의해 발생(1), 미발생(0)으로 분류할 수 있게 값을 활성화하는 역할

ex) 키, 발 사이즈라는 변수를 사용하여  성별을 분류하는 문제의 경우,

y = (키)*W1 + (발 사이즈)*W2 + bias 와 같은식이 산출될 수 있으며, 이를 도식화 하면 아래 그림과 같음.

 

 

이때 가상의 W1, W2의 값을 -1.2, 0.8이라 가정하면,

y= (키)*(-1.2) + (발 사이즈)*(0.8) + bias와 같은 식을 완성할 수 있음, (신경망의 학습이라 함은 매 반복(iteration)마다, 데이터를 가장 잘 예측하고 분류할 수 있도록 weight와 bias를 변경시켜 나가는 과정)

여기에(키, 몸무게)를 남성의 경우(175, 270) 여성의 경우(163,230)로 대입한다고 했을 때,

남성의 y값 = 6, 여성의 y값 = -11.6이 산출됨, (다른 사례들도 동일하게 남성의 경우 y값이 양수, 여성의 경우 음수가 산출됨을 가정)

하지만 산출된 y값은 그 자체로 분류로의 의미를 지니지 못하므로, 아래의 그림과 같은 활성화 함수를 거쳐야 분류 문제로의 의미를 지니게 됨. 아래의 활성화 함수는 입력값에 해당하는 y가 양수일 경우 1(남성)의 결과를 반환하고, y가 음수일 경우 -1(여성)을 반환.

여기서 함수 g(x)와 같은 역할을 하는 함수를 활성화 함수(activation function)라고 함.

활성화 함수의 종류

1. sigmoid 함수

대표적인 활성화 함수로는 sigmoid함수가 있으며 아래의 수식과 그림은 각각 sigmoid함수에 대한 수식과 그림임.

sigmoid는 전달된 값을 0과 1 사이로 변형함, 일정한 비율로 값이 줄어들기 때문에 값 자체가 왜곡되는 것은 아니지만 네트워크가 깊어질수록 초기레이어로 전달되는 값이 현저하게 작아지는 현상이 발생하게 됨

시그모이드 함수는 지수값(a값)에 따라 아래 그림과 같은 형태를 띔

아래의 그림은 a(대부분 1)값에 따른 시그모이드 함수의 미분(gradient) 값임, 입력값이 양끝단으로 갈수록 값이 0으로 수렴하게 되는데 이와 같은 이유로 신경망에서 vanishing gradient문제가 발생하게 됨. (이전의 gradient와 local gradient를 곱해서 에러를 전파하는 backprop의 특성 상 해당 뉴런의 gradient가 사라져버림)

참고 : Vanishing Gradient Problem & ReLU(Rectified Linear Unit)

이와 같은 이유로 network의 깊이가 깊어질수록 vanishing gradient가 발생함. 예를 들면sigmoid 함수에 의해 값이 1/10의 비율로 줄어드는 3개의 layer로 이루어진 네트워크는 매 iteration마다 weight값과 bias값이 업데이트 되는 폭이 1/1000*(weight 변화), 1/1000*(bias 변화)로 변하게 됨.

2. tanh(hyperbolic tangent) 함수

tanh 함수는 sigmoid 함수의 크기와 위치를 조절한 함수로 sigmoid함수가 [0,1]의 범위를 지니는 것에 비해 tanh 함수는 [-1,1]의 범위를 지님. 하지만 sigmoid와 마찬가지로 x값이 양극단으로 향할수록 gradient가 0으로 수렴하여 vanishing gradient 문제가 발생함.

3. ReLU(Rectified Linear Unit) 함수

sigmoid 함수 류의 vanishing gradient 문제를 해결하기 위해 등장한 것이 ReLU함수.

ReLU함수는 입력값이 음수일 경우 0값을 반환하며, 0과 양수일 경우 그 값을 그대로 반환함. 따라서 sigmoid의 반환값으로 인해 발생하던 vanishing gradient문제를 ReLU는 x의 값이 양수일 때, f(x)=x를 반환하여 극복하였음. 하지만 x의 값이 음수일 때 기울기가 0이기 때문에 뉴런이 죽어 더 이상 업데이트 되지 않을 수도 있다는 단점이 있음.

ReLU에서 파생된 함수들도 다양함

Leaky ReLU – x가 음수일 때 0을 반환하는 기존의 ReLU와 달리 0.01x의 값을 반환함(즉, x가 음수일 때 gradient = 0.01). 0.01x를 반환함으로써, ReLU함수 상에서 뉴런이 죽는 단점을 보완함.

ELU(Exponential linear unit) – ELU함수는 x값이 음수일 경우 지수함수(exponential function)를 사용한 값을 반환함. 지수 연산으로 인해 연산량이 많다는 단점이 있음.

 

답글 남기기