바뀜

947 바이트 추가됨 ,  2021년 9월 8일 (수) 08:51
25번째 줄: 25번째 줄:  
=== 활성화함수 ===
 
=== 활성화함수 ===
 
activation function. <math>w_1 x_1 + w_2 x_2+b</math>가 0초과인가 이하인가를 결정하기 위해선 다음과 같이 쓸 수 있다. <math> y= h(w_1 x_1 + w_2 x_2+b)</math>, <math> h(x)= \begin{cases} 0, & \text{if }(x \leqq 0) \\ 1, & \text{if }(x>0)) \end{cases}</math> 라고 하면 간단해진다. 이때, h(x)는 입력값에 따라 해당 값을 출력으로 넘기기도 하고 0을 반환하기도 한다. 이를 활성화함수라 하는데, 이것이 퍼셉트론에서 신경망으로 넘어가는 길목이다.
 
activation function. <math>w_1 x_1 + w_2 x_2+b</math>가 0초과인가 이하인가를 결정하기 위해선 다음과 같이 쓸 수 있다. <math> y= h(w_1 x_1 + w_2 x_2+b)</math>, <math> h(x)= \begin{cases} 0, & \text{if }(x \leqq 0) \\ 1, & \text{if }(x>0)) \end{cases}</math> 라고 하면 간단해진다. 이때, h(x)는 입력값에 따라 해당 값을 출력으로 넘기기도 하고 0을 반환하기도 한다. 이를 활성화함수라 하는데, 이것이 퍼셉트론에서 신경망으로 넘어가는 길목이다.
 +
 +
상황에 따라, 층마다 다른 활성화 함수를 사용한다.
    
다양한 활성화 함수에 대해선 다음 문서 '[[활성화함수]]'를 참고하자.
 
다양한 활성화 함수에 대해선 다음 문서 '[[활성화함수]]'를 참고하자.
    
=== 컨셉 ===
 
=== 컨셉 ===
 +
신경망에서의 <math> y_1= h(w_1 x_1 + w_2 x_2+b)</math> 연산은 행렬을 이용하여 <math> Y= H(W \times X)</math> 형태로 나타난다. <math> Y= \binom{y_1}{y_2}</math>, <math> W= \begin{pmatrix} w_1 & w_2 \\ w_3 & w_4 \end{pmatrix}</math>, <math> X= \binom{x_1}{x_2}</math> 이처럼 행렬로 나타내면 많은 뉴런의 계산을 넘파이를 이용해 쉽게 해낼 수 있다. b에 해당하는 가중치는 항상 1의 입력을 보내고 여기에 가중치 b를 곱하는 형태로 구현한다.
 +
 +
=== 구현 ===
 +
<syntaxhighlight lang="python">
 +
# 1층 구현.
 +
A1 = np.dot(X, W1) + B1  # 출력값은 각각의 행렬연산으로 이루어진다.
 +
Z1 = sigmoid_function(A1)  # 출력값을 기반으로 활성화함수.
 +
 +
# 2층 구현
 +
A2 = np.dot(Z1, W2) + B2  # 1층에서의 결과가 입력으로 쓰인다.
 +
Z2 = sigmoid_function(A2)
 +
</syntaxhighlight>
 
[[분류:딥러닝 이론]]
 
[[분류:딥러닝 이론]]