본문 바로가기

딥러닝

딥러닝 3 - 인공 신경망(Neural Network), 소프트맥스(Softmax) 함수


1. 인공 신경망


인공 신경망을 보다 쉽게 이해하기 위해

3층 인공 신경망을 예로 설명을 드리겠습니다.

우선 0층에서 x1과 x2 (입력값)을 입력합니다.

 

0층에서 받은 입력값은 각 w(가중치)에 곱해져 1층의 a로 값이 가게 됩니다.

 

(각 층에있는 1은 편향인 b(=-θ)를 표현하기 위함 입니다.)

 

여기서 활성화 함수인 Sigmoid함수를 사용하여 z값이 도출됩니다.

 

위 과정을 2층에서 한번 더 거친 뒤

 

마지막 3층에선 일반 벡터를 확률 벡터로 바꾸는 Softmax함수를 통해

 

y(결과값)가 도출되게 됩니다.

 

(괄호 안의 숫자는 층을 뜻합니다.)


 

2. 행렬


행렬의 덧셈

$$  \begin{pmatrix}
 a & b \\
c & d
 \end{pmatrix} + \begin{pmatrix}
 e & f \\
g & h
 \end{pmatrix} = \begin{pmatrix}
 a+e & b+f \\
c+g & d+h
 \end{pmatrix}  $$


행렬의 상수배

$$  k\begin{pmatrix}
 a & b \\
c & d
 \end{pmatrix} = \begin{pmatrix}
 ka & kb \\
kc & kd
 \end{pmatrix}  $$


행렬의 곱셈

$$ \begin{pmatrix}
 a & b \\
c & d
 \end{pmatrix} \times \begin{pmatrix}
 e & f \\
g & h
 \end{pmatrix} = \begin{pmatrix}
 a \cdot e+b \cdot g & a \cdot f+b \cdot h \\
c \cdot e+d \cdot g & c \cdot f+d \cdot h
 \end{pmatrix} $$

 

$$ (m \times n \ 행렬) \ \times \ (n \times l \ 행렬) \ = \ (m \times l \ 행렬) $$


행렬의 전치

$$ \begin{pmatrix}
 a & b \\
 c & d
 \end{pmatrix} ^{T}
=
\begin{pmatrix}
 a & c \\
 b & d
 \end{pmatrix} $$

 

$$ (A^{T})^{T} $$

 

$$ (AB)^{T} = B^{T}A^{T} $$


3. 인공 신경망의 행렬 표현


맨 위 인공 신경망의 1층 의식입니다.

$$ a_{1}=w_{11}x_{1}+w_{21}x_{2}+b_{1} $$

$$ a_{2}=w_{12}x_{1}+w_{22}x_{2}+b_{2} $$

$$ a_{3}=w_{13}x_{1}+w_{23}x_{2}+b_{3} $$

 

 

프로그래밍 시 효율을 높이기 위해

위 식을 하나의 행렬 식으로 표현할 수 있습니다. 

$$ (a_{1} \ a_{2} \ a_{3})=(x_{1} \ x_{2})
\begin{pmatrix}
 w_{11} & w_{12} & w_{13}\\
 w_{21} & w_{22} & w_{23}
 \end{pmatrix} 
+(b_{1} \ b_{2} \ b_{3}) $$


4. Softmax 함수


Softmax 함수는 입력받은 값을 0과 1사이의 수로 표현하며

모든 출력된 값의 합은 1이됩니다.

(확률로 해석 할 수 있습니다.)

 

Softmax 함수를 사용함으로써

값의 크고 작음을 변화시키지 않고

표현 범위를 이탈하는 Overflow를 방지 할 수 있습니다.

 

(Softmax 함수는 미분값의 형태가 기존값과 같은 e^x 를 사용합니다.)


- Softmax 변환 -

$$ 1. \ (a_{1}, \ a_{2}, \ a_{3}, \ \cdot \ \cdot \ \cdot \ ,a_{n}) $$

$$  \downarrow  $$

$$ e^{x}를 적용 $$

$$  \downarrow  $$

$$ 2. \ (e^{a_{1}}, \ e^{a_{2}}, \ e^{a_{3}}, \ \cdot \ \cdot \ \cdot \ ,e^{a_{n}})  $$

$$  \downarrow  $$

$$ 정규화 $$

$$  \downarrow  $$

$$ 3. ( \frac{e^{a_{1}}}{(e^{a_{1}}, \ e^{a_{2}}, \ e^{a_{3}}, \ \cdot \ \cdot \ \cdot \ ,e^{a_{n}})} 
, \frac{e^{a_{2}}}{(e^{a_{1}}, \ e^{a_{2}}, \ e^{a_{3}}, \ \cdot \ \cdot \ \cdot \ ,e^{a_{n}})} , \ \cdot \ \cdot \ \cdot
, \frac{e^{a_{3}}}{(e^{a_{1}}, \ e^{a_{2}}, \ e^{a_{3}}, \ \cdot \ \cdot \ \cdot \ ,e^{a_{n}})} )
$$

'딥러닝' 카테고리의 다른 글

딥러닝 2 - 활성화 함수(Activation function)  (0) 2022.02.10
딥러닝 1 - 퍼셉트론(Perceptron)  (0) 2022.02.09