활성화 함수(Activation Function)?
: 입력신호의 총합을 출력신호로 변환하는 함수
: 크게 가중치를 곱한 입력신호의 총합을 계산, 이걸 활성화 함수에 집어넣어 결과를 출력하는 두 가지 단계로 계산이 이루어진다.
1. 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)
# 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개층을 거치면 이 되는데, 일 때, 이 값은 가 된다.
: 은닉층(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
소스코드
'딥러닝 > 신경망 기초' 카테고리의 다른 글
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 |