IT Log

활성화 함수 (activation function) 본문

Machine Learning

활성화 함수 (activation function)

newly0513 2019. 5. 15. 17:27
728x90
반응형

활성화함수(activation function)란?

입력 or 주어진 입력의 세트를 정의하는 함수, 정의된 출력값은 다음노드에 대한 입력으로 사용된다.

 

 

 

Sigmoid

sigmoid 함수의 값은 0~1이고, 함수 값 중심이 0.5로 학습속도가 느리고, exp함수 사용시 연산비용이 많이 들고, 입력값이 일정이상 올라가면 기울기가 거의 0에 수렴하여, gradient vanishing현상이 발생한다.

 

 

tanh

tanh 함수의 값은 -1~1이고, 함수 값 중심이 0으로 학습속도가 개선되었으나, exp함수사용과 입력값이 일정이상 올라가면 기울기가 거의 0의 수렴하는 gradient vanishing 현상은 sigmoid와 동일하다.

 

 

ReLU ( Rectified Linear Unit )

ReLU 함수의 값은 입력 값이 0이상이면, 입력 값을 그대로 출력하고 0이하이면, 0을 출력한다. sigmoid와 tanh랑 비교하면, 학습속도가 훨씬 빨라지고 exp함수를 사용하지 않아 연산비용이 크지않고 구현이 매우 간단하다. 그러나 x < 0인 값들에 대해서 기울기가 0으로, 뉴런이 죽을수 있는 단점이 있다.

 

 

Leakly ReLU

Leakly ReLU 함수의 값은 ReLU와 동일하나 x < 0인 값에 대해서 0.01을 곱하여, ReLU함수의 단점을 보완하였다.

 

 

PReLU

Leakly ReLU와 거의 유사하고, 0.01이 아닌 α를 곱하여 기울기를 학습한다.

 

 

ELU( Exponentioal Linear Unit )

ELU함수는 2015년도에 나온 함수로 ReLU함수에 문제를 해결하고, 출력 값의 중심이 거의 0에 가깝다. 그러나 ReLU와 달리 exp함수를 사용하여 연산비용이 발생한다.

 

 

Maxout

ReLU가 가진 모든 장점을 가졌지만, 계산량이 복잡하다는 단점이 있다.

 

 

가장 많이 사용되는 활성화함수는 ReLU로 간단하고 사용이 쉽기 때문에 우선적으로 사용한다.
ReLU를 사용한 이후 Leakly ReLU계열의 다른 함수도 사용
sigmoid나 tanh는 거의 사용하지 않지만, 상황에 맞게 활성화 함수를 선택하여 진행하면 된다.

활성화함수 예제코드 ( with R )

sigmoid = function(x) {1/(1+exp(-x))}
curve(sigmoid(x),xlim =c(-10,10),ylim=c(0,1))
abline(h=0.5,col="gray",lty=2)
abline(v=0,b=0,col="gray",lty=2)


sigmoid2 = function(x) {2/(1+exp(-x))-1}
curve(sigmoid2(x),xlim =c(-10,10),ylim=c(-1,1))
abline(h=0,col="gray",lty=2)
abline(v=0,b=0,col="gray",lty=2)


relu = function(x) {ifelse(x>0,x,0)}
x= -6:6
y= relu(x)
plot(x,y, xlim = c(-6,6), ylim = c(-1,10), type = "l")


Leakly Relu와 그 외에 활성화 함수는 relu를 응용하여 그릴수 있다.
728x90
반응형

'Machine Learning' 카테고리의 다른 글

CNN (Convolutional Neural Network)  (0) 2019.05.15
오차역전파 (Backpropagation)  (0) 2019.05.15
다층 퍼셉트론 (Multi Layer Perceptron)  (0) 2019.05.15
경사하강법 (Gradient decent)  (0) 2019.05.15
퍼셉트론 (Perceptrons)  (0) 2019.05.15
Comments