신경망
AND, OR 게이트 함수 만들때 가중치에 여러개의 답이 있었는데, 적절한 값을 찍어서 정했었습니다.
신경망은 가중치를 데이터를 학습한 모델이 정해줍니다.
신경망의 예
- 0층은 입력층, 1층은 은닉층, 2층은 출력층
- 신경망과 퍼셉트론의 차이는 '활성화' 함수 영어로 Activation Function의 존재
활성화 함수의 등장
-활성화 함수는 입력 신호의 총합을 그대로 사용하지 않고, 출력 신호로 변환하는 함수입니다.
-'활성화' 라는 이름이 말해주듯 활성화 함수는 입력 신호의 총합이 활성화를 일으키는지 아닌지를 정하는 역할을 합니다.
기존 입력 값의 합 (w1x1+w2x2+w3x3)을 활성화 함수 f(y)에 넣어 활성화 할지 말지(z) 를 결정합니다.
여기서 원을 뉴런 또는 노드라고 부르는데, 신경망에서는 뉴런이라고 합니다.
활성화 함수
- 퍼셉트론은 임계값을 경계로 출력이 바뀌는데, 이는 활성화 함수로 '계단 함수'를 사용하는 신경망 이라고 합니다.
- 활성화 함수로 쓸 수 있는 여러 후보 중에서 퍼셉트론은 계단 함수를 채용하고 있습니다.
- 신경망은 계단함수가 아닌 다른 함수를 주로 사용
1) 시그모이드 함수
신경망에서 자주 이용하는 활성화 함수는 시그모이드 함수입니다.
실수 e=2.7812….
시그모이드 함수에 1.0과 2.0을 입력하면 f(1.0) = 0.731, f(2.0) = 0.880 처럼 특정 값을 출력 합니다.
계단 함수 구현하기
import numpy as np import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pylab as plt
plt.switch_backend('Agg')
def step_function(x): y = x>0 return y.astype(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() plt.savefig('/home/python/step.png') |
계단 함수 결과 그래프
위 그래프를 보시면 0을 경계로 출력이 0에서 1로
바뀐 계단 형태의 그래프를 출력 하고 있다.
시그모이드 함수 구현하기
import numpy as np import matplotlib.pylab 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.ylim(-0.1,1.1) plt.show() |
*시그모이드 함수 와 계단 함수의 차이?
-매끄러움(신경망 학습에서 아주 중요한 역할)
-매끄럽다는 것은 출력값이 연속적으로 변화한다는 뜻
-큰 관점에서 보면 같은 모양
-둘다 입력이 작을때의 출력은 0에 가깝고 입력이 커지면 출력이 1에 가까워지는 구조
비선형 함수
- 시그모이드, 계단 함수 둘다 비선형 함수
- 신경망에서는 선형 함수 사용 안함
- 선형 함수를 이용하면 신경망의 층을 깊게 하는 의미가 없어지기 때문
ReLU함수
- 신경망 분야에서 최근에 ReLU함수를 주로 이용
- 입력이 0을 넘으면 그 입력을 그대로 출력하고 0 이하이면 0을 출력하는 함수
'프로그램 > 딥러닝' 카테고리의 다른 글
[딥러닝] 퍼셉트론 (0) | 2018.03.07 |
---|