신경망 예시
맨 왼쪽 층을 입력층, 가운데 층을 은닉층, 맨 오른쪽 층을 출력층
가중치를 갖는 층(화살표가 있는) 2개 이므로 ‘2층 신경망’
활성화 함수
활성화 함수(Activation Function)
: 입력 신호의 총합을 출력 신호로 변환하는 함수
: 입력 신호의 총합이 활성화를 일으키는지 정하는 역할
가중치가 달린 입력 신호와 편향의 총합을 a라 칭함
이러한 a를 h 함수(활성화 함수)에 넣어 출력 하는 것이 y
가중치 신호를 조합한 결과가 a 라는 노드, 활성화 함수 h()를 통과하여 y 라는 노드로 변환
단순 퍼셉트론 : 단층 네트워크에서 계단함수(임계값을 경계로 출력이 바뀌는 함수)를 활성화 함수로 사용한 모델
다층 퍼셉트론 : 여러 층으로 구성되고 여러 활성화 함수를 사용하는 신경망 모델
## 활성화 함수의 종류
1. 계단 함수(Step Function)
임계값을 경계로 출력이 바뀌는 함수
def step_function(x):
if x>0: return 1
else: return 0 # numpy array error 발생
def step_function(x):
y = x > 0
return y.astype(np.int)
x = np.array([1.0,2.0])
step_function(x)
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)
plt.title('Step Function Plot')
plt.show()
2. 시그모이드 함수(Sigmoid Function)
def sigmoid(x):
return 1/(1+np.exp(-x))
x = np.array([-1.0,1.0,2.0])
sigmoid(x)
x = np.arange(-5.0,5.0,0.1)
y = sigmoid(x)
plt.plot(x,y)
plt.ylim(-0.1,1.1)
plt.title('Sigmoid Function Plot')
plt.show()
- 시그모이드 함수와 계단 함수의 비교
차이점 :
시각적인 직관적 비교 : 매끄러움의 차이
퍼셉트론은 0 아니면 1이라는 이진적으로 값을 반환하지만 신경망은 그 사이에 있는 실수(0.731,0.88 등)을 반환해준다.
공통점 : 입력이 작을 때는 0에 가깝고 입력이 클 때는 1에 가까워진다.
범위는 0~1 사이
## 비선형 함수
step function과 sigmoid function의 공통점 = 비선형 함수
신경망은 비선형 함수를 활성화 함수로 사용해야 된다.
왜? 층을 아무리 깊게 해도 의미가 없음
선형 h(x)=cx를 활성화 함수로 사용할 때
y(x)=h(h(h(x))) 는 y=c*c*c*x = y=ax(a=c**3) 따라서 여러층으로 구성하여도 의미가 없음
3. ReLU(Rectified Linear Unit) 함수
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(-2,5)
plt.title('ReLU Function Plot')
plt.show()
## 다차원 배열의 계산
A = np.array([[1,2],[3,4]])
A.shape # (2,2)
B = np.array([[5,6],[7,8]])
B.shape # (2,2)
np.dot(A,B)
'''
array([[19, 22],
[43, 50]])
'''
행렬의 곱에선 대응되는 차원의 수를 일치 시켜야됨
A = np.array([[1,2,3],[4,5,6]])
A.shape # (2,3)
B = np.array([[1,2],[3,4],[5,6]])
B.shape # (3,2)
C = np.array([[1,2],[3,4]])
C.shape # (2,2)
np.dot(A,B)
'''
array([[22, 28],
[49, 64]])
'''
np.dot(A,C) # error
'밑바닥 딥러닝' 카테고리의 다른 글
Chapter5 - Backpropogation (0) | 2021.07.03 |
---|---|
Chapter4 - Training Neural Network(1) (0) | 2021.02.02 |
Chapter3 - Neural Network(3) (0) | 2021.01.10 |
Chapter3 - Neural Network(2) (0) | 2021.01.10 |
Chapter2 - Perceptron (0) | 2020.12.28 |
댓글