기계는 거짓말하지 않는다

활성화 함수(Activation Function) 본문

AI

활성화 함수(Activation Function)

KillinTime 2021. 10. 20. 17:06

입력 신호의 합을 출력 신호로 변환하는 함수를 활성화 함수(Activation Function)라 한다.

임곗값을 경계로 출력 신호가 바뀐다. 신경망에서는 선형 함수일 경우 신경망의 층을 깊게 하는 의미가 없어진다.

미분하였을 때 항상 동일한 gradient가 나오게 된다. 따라서 비선형 함수를 사용한다.

Step Function

입력이 0 초과일 경우 1, 그 외 0

import numpy as np
import matplotlib.pyplot as plt

def step_function(x : np):
    return (x > 0).astype(np.int64)

x = np.arange(-5.0, 5.0, 0.1)
y = step_function(x)
plt.plot(x, y)
plt.plot([0, 0], [1.0, 0.0], color="r", linestyle="--") # center line
plt.title("Step Function")
plt.ylim(-0.1, 1.1) # y축 범위
plt.show()

Sigmoid

0~1사이 값을 반환하는 S자 모양 곡선 함수

h(x) = 1 / (1 + e^-x)

import numpy as np
import matplotlib.pyplot as plt

def sigmoid(x):
    return  1 / (1 + np.exp(-x))

x = np.arange(-5.0, 5.0, 0.1)
y = sigmoid(x)
plt.plot(x, y)
plt.plot([0, 0], [1.0, 0.0], color="r", linestyle="--") # center line
plt.title("Sigmoid")
plt.ylim(-0.1, 1.1) # y축 범위
plt.show()

ReLU(Rectified Linear Unit)

0 초과일 경우 그대로 출력, 0 이하이면 0

import numpy as np
import matplotlib.pyplot as plt

def relu(x):
    return np.maximum(0, x)

x = np.arange(-5.0, 5.0, 0.1)
y = relu(x)
plt.plot(x, y)
plt.plot([0, 0], [5.0, -0.2], color="r", linestyle="--") # center line
plt.title("ReLU")
plt.xlim(-6.0, 6.0) # x축 범위
plt.ylim(-0.5, 5.5) # y축 범위
plt.show()

Comments