신경 네트워크 모형의 조직

입문


머신러닝에서 회귀, 분류, SVM 등의 예측치, 예를 들어'XXX 이상과 그 이하','YYY의 범위 중과 외'등은 비교적 간단하기 때문에 XOR회로와 같은 판정을 하려면 어려워진다.

인공 신경 네트워크


기계학습에서 신경망이라고 불리는 엄밀히 말하면 인구신경망(Artificial Neural Network:ANN)이라고 한다. ANN은 여러 입력값을 대상으로 출력값을 계산하는 모델로 뇌세포를 모방한 신경원 모델을 사용한다.층을 나누어 연결하는 것을 가리킨다. 이 층의 수량이 적은 것은 단순한 신경 네트워크(Shallow-layer Neural Network), 많은 것은 심층 신경 네트워크(Deep-layer Neural Network:DNN)로 명명된다.

신경 모형



위의 그림은 3개의 입력값에 1개의 출력값을 구하는 신경원 모형이다0$는 편향이며 입력 값은 항상 1입니다.
중간의 원은 그것과 맞먹는다. 이때의 계산 방법은
\begin{align}
z &= \sum_{i=0}^{3}\theta_ix_i \\
h_{\Theta}(x) &= g(z) \\
\end{align}
$z$는 신경원 입력 값의 가중 총계로 출력 값은 활성화 함수라고 불리는 함수를 통과합니다.
이번 공식에서 말한 $g(\cdot)$. 활성화 함수는 ReLU(Rectified Linear Unit), Sigmoid 함수, tanh 함수 등을 사용합니다.
연산량이 많은 DNN에서는 수렴 속도가 빠른 ReLU를 자주 사용합니다. 또한 DNN에서 하나의 원은 도표 이론 등에서 자주 사용하는 노드(Node)라고 합니다.

이 그림은 3층 구조의 ANN이다.
입력층과 출력층 사이의 층을 숨겨진 층이라고 하는데 외부에서 보이지 않는 것 같다.
이 모델에서 출력 값은 3개이므로 분류 모델이 됩니다.

계산 방법


3층 ANN의 계산을 살펴보겠습니다.
은밀층을 계산해 보다.
\begin{align}
z_{1}^{(2)} &= \sum_{i=0}^{3}\theta_ix_i \\
a_{1}^{(2)} &= g(z_{1}^{(2)}) \\
\end{align}
이 계산을 $a_로 설정{2} {(2)}$및 $a_{3} {(2)}$도 마찬가지입니다.
벡터화하여 단숨에 계산해 보세요. 우선,
\begin{align}
a^{(1)} &= \left(
\begin{matrix}
1\\
x_1\\
x_2\\
x_3\\
\end{matrix}
\right)\\
\\
\Theta^{(1)} &= \left(
\begin{matrix}
\theta_{01} & \theta_{11} & \theta_{21} & \theta_{31} \\
\theta_{02} & \theta_{12} & \theta_{22} & \theta_{32} \\
\theta_{03} & \theta_{13} & \theta_{23} & \theta_{33} \\
\end{matrix}\right)
\end{align}
및 입력 값의 벡터 $a^ (1)}$와 매개 변수의 행렬 $\Theta^ (1)}$,
\begin{align}
z^{(2)} &= \Theta^{(1)}a^{(1)} \\
a^{(2)} &= g(z^{(2)}) \\
\end{align}
여기에서 편차 항목을 고려하여 아래와 같이 $a^ {(2)}$를 미리 가공합니다.
a^{(2)} := \left(
\begin{matrix}
1 \\
a_1^{(2)} \\
a_2^{(2)} \\
a_3^{(2)} \\
\end{matrix}
\right)
그리고 출력층의 계산은 다음과 같다.
\begin{align}
z^{(3)} &= \Theta^{(2)}a^{(2)} \\
a^{(3)} &= g(z^{(3)}) \\
h_{\Theta}(x) &= a^{(3)} \\
\end{align}
$h_{\Theta}(x)$는 세 개의 노드의 출력 값을 수집했기 때문에 3차 벡터입니다.

학습 방법


위에서 설명한 바와 같이 입력 값 $x$에서 출력 값 $h_{\Theta}(x)$를 구할 수 있습니다.
그것을 아래와 같이 조립하다.
\begin{align}
J(\Theta)=&-\frac{1}{m}\left[
\sum_{i=1}^m\sum_{k=1}^K y_k^{(i)} \log{h_{\theta}(x^{(i)})_k + (1-y_k^{(i)})\log(1-h_{\theta}(x^{(i)})_k)}
\right] \\
&+ \frac{\lambda}{2m}\sum_{l=1}^{L-1}\sum_{i=1}^{s_l}\sum_{j=1}^{s_l+1}(\Theta_{ji}^{(l)})^2
\end{align}
이 큰 형식은 ANN의 원가 함수가 됩니다. $J (\Theta) $의 값이 최소값이 되는 $\Theta$를 찾습니다.
여기서 $m$는 학습 데이터 수이고, $K$는 출력 값의 차원(예를 들어 모델은 3)이며, $L$는 층수이며, $s_l$는 $l$층의 노드 수입니다. 1항의 $\sum$안쪽 형식은 분류할 때 사용하는 논리적 회귀입니다. 그리고 2항은 정규화 항목으로 학습(Over-fitting)을 억제하여 균형 잡힌 파라미터를 얻을 수 있습니다.
ANN도 사다리 하락법의 최적화 문제를 해결할 것이지만 $\frac {\partial}{\partial\Theta_{ij}^{(l)}J(\Theta)$를 받아야 합니다.
이 값을 얻기 위해 역방향 전파법(Back Propagation Algorithm)을 사용합니다.
참고로 상술한 계산 결과는 때때로 Forward Propagation이라고도 부른다.

총결산


이번에는 신경 네트워크의 계산 방법을 총결하였다.
일반적인 회귀 모델부터 변수와 추가자가 한꺼번에 증가하기 때문에 때로는 영문을 알 수 없다.
이때 하나하나 부수고 천천히 진행하면 문제없다.
Back Propagation Algorithm에 관해서는 다른 기회를 이용하여 기사를 쓰고 싶습니다.

좋은 웹페이지 즐겨찾기