728x90
반응형

 

 

activation function

 

 

활성화 함수(Activation Function)는 입력을 받아 활성, 비활성을 결정하는데 사용되는 함수이다. 어떤 활성화 함수를 사용하느냐에 따라 그 출력 값이 달라지기 때문에 적절한 활성화 함수를 사용하는 것이 매우 중요하다. 보통 어떠한 임계 값을 기준으로 활성화 되거나 혹은 비활성화 되는 형태를 가진다. 

 

 

 

기존 활성화 함수들

 

 

 

 

 

 

Swish

 

Swish 는 매우 깊은 신경망에서 ReLU 보다 높은 정확도를 달성한다고 한다. 또한 모든 배치 크기에 대해 Swish 는 ReLU 를 능가하며, 모든 x < 0 에 대해 함수를 감소시키거나 증가시키지 않는다고 한다. Mish 와 마찬가지로 bounded below, unbounded above 특징을 가진다. 

 

 

 

 

 

Mish 

 

Mish 는 그래프가 무한대로 뻗어나가기 때문(unbounded above)에 캡핑으로 인한 포화를 피할 수 있으며 bounded below 이기 때문에 strong regularation 이 나타날 수 있고 overfitting 을 감소 시킬 수 있다. 또한 약간의 음수를 허용하기 때문에 Relu Zero Bound 보다는 그라디언트를 더 잘 흐르게 한다는 특징이 있다. 범위는 [-0.31, ∞) 이다. 

Mish 활성화 함수는 가시화 해보면 마이너스측에서 선형에 가깝고, small decay 를 갖는 Swish 의 함수와 비슷하다. 이는 Non-monotonic 함수이고, 아래에 나타낸 그래프와 같이 Non-monotonic 1차 미분 및 2차 미분을 갖는다.

 

 

 

 

 

Mish는 Swish 와 비슷하게 sharp global minima 를 가지고 있으며, 이는 the region of sharp decay 에 갇힌 모델의 그라디언트 업데이트로 인해 ReLU에 비해 성능이 떨어질 수도 있다. 수학적으로 무거운 모델인 Mish 는 Swish 활성화 함수의 시간 복잡성에 비해 계산 비용이 많이 든다는 단점이 있다.

 

무작위로 초기화 된 5개의 신경망의 출력 환경을 ReLU, Swish 및 Mish 와 비교하였다. 이는 Swish 와 Mish 에 비해 ReLU의 좌표의 스칼라 크기 사이의 sharp transition 을 보여준다. Smoother transition 은 보다 부드러운 최적화 기능을 제공하여 손실을 줄이면서 신경망을 일반화 한다. 

 

 

 

 

 

 

 

 

Relu implemenataion

def relu(x):
	return max(0, x)
    

 

tensorflow implementation

def swish(x):
	return x * tf.nn.sigmoid(x)

def mish(x):
	return x * tf.nn.tanh(tf.nn.softplus(x))

 

pytorch implementation

def swish(x):
	return x * torch.sigmoid(x)
    
def mish(x):
	return x * torch.tanh(F.softplus(x))

 

 

참고자료 1 :

https://github.com/digantamisra98/Mish?fbclid=IwAR01WUcgRvWBdjfdezwZjnr3F9jtyplsEFdX5dHLFj2be5JkE3gwn_ZYWH8

 

digantamisra98/Mish

Mish: A Self Regularized Non-Monotonic Neural Activation Function - digantamisra98/Mish

github.com

 

참고자료 2 : https://arxiv.org/ftp/arxiv/papers/1908/1908.08681.pdf

 

참고자료 3 : https://arxiv.org/pdf/1710.05941.pdf

 

참고자료 4 : https://data-newbie.tistory.com/297

 

selu보다 좋은 Mish Activation

새로운 activation을 소개하는 논문이 나왔다. 일단 논문은 안읽고 바로 적용하면서 부분적으로 읽어서 좋은 점만 알아보는 걸로... def relu(x): return max(0,x) def swish(x) : return x * tf.nn.sigmoid(x) de..

data-newbie.tistory.com

 

참고자료 5 : https://krutikabapat.github.io/Swish-Vs-Mish-Latest-Activation-Functions/

 

Swish Vs Mish: Latest Activation Functions

In this blog post we will be learning about two of the very recent activation functions Mish and Swift. Some of the activation functions which are already in the buzz. Relu, Leaky-relu, sigmoid, tanh are common among them. These days two of the activation

krutikabapat.github.io

 

728x90
반응형