본문 바로가기

딥러닝/신경망 기초

활성화 함수(Activation Function)

활성화 함수(Activation Function)?


입력신호의 총합을 출력신호로 변환하는 함수 

: 크게 가중치를 곱한 입력신호의 총합을 계산, 이걸 활성화 함수에 집어넣어 결과를 출력하는 두 가지 단계로 계산이 이루어진다.


1. Step function(계단 함수)

: 활성화함수처럼 임계값을 경계로 출력이 바뀌는 함수를 Step Function이라 한다.

# step funtion 시각화
# step function을 한줄로 만들어보자
def step_function(x):
    return np.array(x > 0, dtype=np.int)

x = np.arange(-5.0, 5.0, 0.1)
y = step_function(x)
plt.plot(x,y)
plt.ylim(-0.1, 1.1) # y축 범위 지정
plt.show()


step function

(위와 같이 계산형식으로 나타나기 때문에 step function이라 한다.)


2. 시그모이드 함수(Sigmoid)


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

# example
x = np.array([-1.0, 1.0, 2.0])
sigmoid(x)

[out] : array([0.26894142, 0.73105858, 0.88079708])


# sigmoid 시각화
x = np.arange(-5.0, 5.0, 0.1)
y = sigmoid(x)
plt.plot(x,y)
plt.ylim(-0.1, 1.1) # y축 범위 지정
plt.show()


sigmoid function

 Step function vs Sigmoid function ?

차이점 : 매끄러움

: step function은 0을 기준으로 출력이 확 뛰는데 반해, sigmoid function은 입력에 따라 출력이 매끄럽게 변화한다. 
: 이로 인해, step function은 0 또는 1의 출력을 갖는 반면, sigmoid function은 0~1사이의 실수를 갖는다 
: 퍼셉트론에서는 뉴런/노드사이에 0 또는 1이 흘렀다면, 신경망에서는 연속적인 실수가 흐른다는 차이를 갖는다.

공통점

: 입력이 작을수록 0에 가까운 출력을 내고, 입력이 커질수록 1에 가까운 출력을 낸다. 
: 둘 다 비선형함수!


 신경망에서는 활성화함수로 비선형함수를 사용한다?

: 선형함수를 사용하면 층(Layer)이 깊어지는 의미가 없어진다. 
: 선형함수를 사용하면 3개층을 거치면 $y(x) = h(h(h(x)))$이 되는데, $h(x) = ax$일 때, 이 값은 $y(x) = a^3x$가 된다. 
: 은닉층(hidden layer)을 거친 의미가 없다는...



3. ReLU(Rectified Linear Unit)


: 입력이 0을 넘으면 그대로 입력값을 출력, 0이하라면 0을 출력하는 함수


# ReLU 구현
# np.maximum은 두 입력중 큰 값을 반환하는 함수
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.ylim(-0.1, 5.1) # y축 범위 지정
plt.show()

ReLU function


참고

"밑바닥으로 시작하는 딥러닝"

http://www.hanbit.co.kr/store/books/look.php?p_code=B8475831198 


소스코드

https://github.com/Junhojuno/DeepLearning-Beginning/blob/master/DeepLearning_from_the_bottom/2.Activation_Function.ipynb

'딥러닝 > 신경망 기초' 카테고리의 다른 글

Recurrent Neural Network (RNN)  (0) 2018.11.04
Convolutional Neural Network(CNN)  (0) 2018.11.01
이미지 데이터 다루기  (0) 2018.10.31
소프트맥스(Softmax)  (0) 2018.10.25
퍼셉트론(Perceptron)과 다층 퍼셉트론(MLP)  (0) 2018.10.24