2. 논리 회로(Logic Circuit)
논리 게이트(Logic Gate)
- 디지털 회로에서는 0과 1 신호의 입출력을 제어하기 위해 논리 게이트라는 회로를 사용
- 사람의 뇌를 흉내내기 위해서 논리 게이트를 조합하여 구현할 수 있는지 여부가 가장 중요
- 기본적으로 3가지 논리 게이트를 사용하여 복잡한 회로를 구현
- AND 게이트(논리곱)
- OR 게이트(논리합)
- NOT 게이트(논리부정)
AND 게이트
- AND 게이트는 그림과 같이 입력이 2개, 출력이 1개이며, 2개의 입력이 모두 $1$일 때만 $1$을 출력하고 그 외에는 $0$을 출력
Input | Output | |
$x_1$ |
$x_2$ |
$y$ |
$0$ |
$0$ |
$0$ |
$0$ |
$1$ |
$0$ |
$1$ |
$0$ |
$0$ |
$1$ |
$1$ |
$1$ |
- AND 게이트로 만든 회로는 신경망 단순 모델과 동일한 형태(입력 2개, 출력 1개)이기 때문에 신경망으로 구현 가능
- AND 게이트를 신경망으로 구현하기 위해서는 위의 표에 나온 $\mathbb{x}=(x_1,x_2)$과 $y$에 대한 각각의 값에 대하여 가설 모델(Hyperthesis model) 식 (2.1)를 만족하는 매개변수 $(w_1,w_2,\theta)$를 찾을 수 있어야 한다
\begin{eqnarray} H(\mathbb{x}) = \left\{ \begin{array}{ll} 1 & w_1x_1 + w_2x_2 -\theta \geqslant 0 \\ 0 & w_1x_1 + w_2x_2 -\theta< 0\end{array}\right. \tag{2.1} \end{eqnarray}
식 (2.1)가 성립하는 값 $(w_1, w_2, \theta)$를 구하는 방법의 예
- 먼저 매개변수 $(w_1,w_2,\theta)$에 임의의 값을 넣고 $(x_1,x_2)$의 모든 값에 대하여 예측 모델의 계산한 값 $H(\mathbb{x})$와 실제 값인 $y$의 차가 작아지도록 $(w_1,w_2,\theta)$ 값을 다시 조정해야한다
- 예를 들어, 매개변수를 $(w_1,w_2,\theta)=(1, 1, 0)$으로 하면 $(x_1,x_2)=(0,0)$일 때 식 (2.1)를 계산해보면 $H(\mathbb{x})=1\cdot 0 + 1\cdot 0 - 0 =0\geqslant 0$이 되어 $H(\mathbb{x})=1$이 되어 발화가 되나, 실제로는 $y=0\neq H(\mathbb{x})$이 되어 발화되어서는 안된다
- 이는 뉴런끼리의 결합이 강하거나 임계값이 낮아서 발생하는 일이기 때문에 가중치를 낮추거나 임계값을 높이는 방법으로 출력을 낮게 만들어야 함
오차정정학습법(Error Correction Learning)
- 위의 예처럼 임의의 매개변수 $(w_1,w_2,\theta)$에 대하여 식 (2.1)를 계산한 값 $H(\mathbb{x})$에 대하여 $H(\mathbb{x})\neq y$라면 매개변수$(w_1,w_2,\theta)$를 다시 수정하면서 $H(\mathbb{x})\cong y$가 되도록 하는 방법을 오차정정학습법이라고 하며 이와 같이 결과값을 보고 가중치를 수정하기 때문에 역전파 알고리즘(backward propagation algorithm)이라고 함
- 정답인 출력값을 $y$라 하고, 신경망 모델의 출력값을 $H(\mathbb{x})$라고 하면 오차정정학습법을 다음과 같이 정리할 수 있음
- $y=H(\mathbb{x})$일 경우, 정확한 값이 출력되었기에 매개변수를 수정할 필요가 없다
- $y=0$일 때 $H(\mathbb{x})=1$인 경우, 출력값이 크기 때문에 출력값을 작게하는 방향으로 매개변수를 조정한다
- 입력값이 양수이면 가중치를 작게, 임계값은 높게
- 입력값이 음수이면 가중치를 크게, 임계값은 높게
- $y=1$일 때 $H(\mathbb{x})=0$인 경우, 출력값이 작기 때문에 출력값을 크게하는 방향으로 매개변수를 조정한다
- 입력값이 양수이면 가중치를 크게, 임계값은 낮게
- 입력값이 음수이면 가중치를 작게, 임계값은 낮게
- 이전 매개변수 $(w_1,w_2,\theta)$와 새로 업데이트된 매개변수 $(w'_1,w'_2,\theta')$와의 차이를 각각 $\Delta w_1$과 $\Delta w_2$, $\Delta \theta$라고 하면 각각의 차이는 식 (2.2), 식 (2.3), 식 (2.4)와 같이 정의 가능
\begin{align} \Delta w_1 & = (y - H(\mathbb{x}))x_1\tag{2.2}\\ \Delta w_2 & = (y - H(\mathbb{x}))x_2 \tag{2.3}\\ \Delta\theta & = -(y-H(\mathbb{x}))\tag{2.4}\end{align}
- 오차정정학습법에 따라 $y=0$일 때 $H(\mathbb{x})=1$인 경우, 출력값이 크기 때문에 출력값을 작게하는 방향으로 매개변수를 조정해야 하는데, AND 게이트에서 입력값은 모두 0보다 크거나 같은 양수이기 때문에 가중치를 작게 만들고 임계값은 높게 만들어야 한다
- 식 (2.2)는 $\Delta w_1=y-H(\mathbb{x}) = 0 - 1= -1$
- 식 (2.3)는 $\Delta w_1=y-H(\mathbb{x}) = 0 - 1= -1$
- 식 (2.4)는 $\Delta \theta = -(y-H(\mathbb{x})) = -(0-1) = 1$
- 반면에 $y=1$일 때 $H(\mathbb{x})=0$인 경우, 출력값이 작기 때문에 출력값을 크게하는 방향으로 매개변수를 조정해야 하는데,
AND 게이트에서 입력값은 모두 0보다 크거나 같은 양수이기 때문에 가중치를 크게 만들고 임계값은 낮게 만들어야 한다
- 식 (2.2)는 $\Delta w_1=y-H(\mathbb{x}) = 1 - 0= 1$
- 식 (2.3)는 $\Delta w_1=y-H(\mathbb{x}) = 1 - 0= 1$
- 식 (2.4)는 $\Delta \theta = -(y-H(\mathbb{x})) = -(1-0) = -1$
- 위의 두 경우를 따져본 결과 식 (2.2)와 식 (2.3), 식 (2.4)는 올바르게 정의한 예로 볼 수 있다
- 이제 $k$번째 오차정정으로 얻은 매개변수를 $(w^k_1,w^k_2,\theta^k)$라고 하면 $k+1$번째 오차정정으로 얻은 각각의 매개변수는 식 (2.5), 식 (2.6), 식 (2.7)과 같이 정의 가능
\begin{align} w^{k+1}_1 & = w^k_1 + \Delta w_1^k\tag{2.5}\\ w^{k+1}_2 & = w^k_2 +\Delta w_2^k \tag{2.6}\\ \theta^{k+1} & = \theta^k + \Delta\theta^k\tag{2.7}\end{align}
- 오차정정학습법은 $k$번째 반복 학습에서 매개변수를 업데이트하고 다시 $k+1$번째 반복 학습을 하면서 매개변수를 다시 업데이트하면서 오차가 최대한으로 작아져 정답이 출력될 때까지 알고리즘을 반복하는 방식으로 진행
- 이 과정은 아래 표와 같이 각각의 매개변수들이 업데이트되면서 학습이 반복될 수록 오차가 줄어들면서 정확한 값을 출력하는 것을 알 수 있다
$k$ |
$x_1$ |
$x_2$ |
$y$ | $w_1$ |
$w_2$ |
$\theta$ |
$H(\mathbb{x})$ |
$y-H(\mathbb{x})$ |
$\Delta w_1$ |
$\Delta w_2$ |
$\Delta \theta$ |
$1$ |
$0$ |
$0$ |
$0$ |
$0$ |
$0$ |
$0$ |
$1$ |
$-1$ |
$0$ |
$0$ |
$1$ |
$2$ |
$0$ |
$1$ |
$0$ |
$0$ |
$0$ |
$1$ |
$0$ |
$0$ |
$0$ |
$0$ |
$0$ |
$ 3$ |
$1$ |
$0$ |
$0$ |
$0$ |
$0$ |
$1$ |
$0$ |
$0$ |
$0$ |
$0$ |
$0$ |
$4$ |
$1$ |
$1$ |
$1$ |
$0$ |
$0$ |
$1$ |
$0$ |
$1$ |
$1$ |
$1$ |
$-1$ |
$5$ |
$0$ |
$0$ |
$0$ |
$0$ |
$1$ |
$0$ |
$1$ |
$-1$ |
$0$ |
$0$ |
$1$ |
$6$ |
$0$ |
$1$ |
$0$ |
$0$ |
$1$ |
$1$ |
$1$ |
$-1$ |
$0$ |
$-1$ |
$1$ |
$7$ |
$1$ |
$0$ |
$0$ |
$0$ |
$0$ |
$2$ |
$0$ |
$0$ |
$0$ |
$0$ |
$0$ |
$8$ |
$1$ |
$1$ |
$1$ |
$0$ |
$0$ |
$2$ |
$0$ |
$1$ |
$1$ |
$1$ |
$-1$ |
$9$ |
$0$ |
$0$ |
$0$ |
$0$ |
$1$ |
$1$ |
$0$ |
$0$ |
$0$ |
$0$ |
$0$ |
$10$ |
$0$ |
$1$ |
$0$ |
$0$ |
$1$ |
$1$ |
$1$ |
$-1$ |
$0$ |
$-1$ |
$1$ |
$11$ |
$1$ |
$0$ |
$0$ |
$0$ |
$0$ |
$2$ |
$1$ |
$-1$ |
$-1$ |
$0$ |
$1$ |
$12$ |
$1$ |
$1$ |
$1$ |
$0$ |
$0$ |
$3$ |
$0$ |
$1$ |
$1$ |
$1$ |
$-1$ |
$13$ |
$0$ |
$0$ |
$0$ |
$0$ |
$1$ |
$2$ |
$0$ |
$0$ |
$0$ |
$0$ |
$0$ |
$14$ |
$0$ |
$1$ |
$0$ |
$0$ |
$1$ |
$2$ |
$0$ |
$0$ |
$0$ |
$0$ |
$0$ |
$15$ |
$1$ |
$0$ |
$0$ |
$0$ |
$1$ |
$2$ |
$1$ |
$-1$ |
$-1$ |
$0$ |
$1$ |
$16$ |
$1$ |
$1$ |
$1$ |
$0$ |
$1$ |
$3$ |
$0$ |
$1$ |
$1$ |
$1$ |
$-1$ |
$17$ |
$0$ |
$0$ |
$0$ |
$2$ |
$2$ |
$2$ |
$0$ |
$0$ |
$0$ |
$0$ |
$0$ |
$18$ |
$0$ |
$1$ |
$0$ |
$2$ |
$2$ |
$2$ |
$1$ |
$-1$ |
$0$ |
$-1$ |
$1$ |
$19$ |
$1$ |
$0$ |
$0$ |
$2$ |
$1$ |
$3$ |
$0$ |
$0$ |
$0$ |
$0$ |
$0$ |
$20$ |
$1$ |
$1$ |
$1$ |
$2$ |
$1$ |
$3$ |
$1$ |
$0$ |
$0$ |
$0$ |
$0$ |
$21$ |
$0$ |
$0$ |
$0$ |
$2$ |
$1$ |
$3$ |
$0$ |
$0$ |
$0$ |
$0$ |
$0$ |
$22$ |
$0$ |
$1$ |
$0$ |
$2$ |
$1$ |
$3$ |
$0$ |
$0$ |
$0$ |
$0$ |
$0$ |
$23$ |
$1$ |
$0$ |
$0$ |
$2$ |
$1$ |
$3$ |
$0$ |
$0$ |
$0$ |
$0$ |
$0$ |
$24$ |
$1$ |
$1$ |
$1$ |
$2$ |
$1$ |
$3$ |
$1$ |
$0$ |
$0$ |
$0$ |
$0$ |
- 오차정정학습법은 '정확한 출력이 나올 때까지 매개변수를 업데이트를 반복하는 과정'을 말하며 '신경망을 학습시킨다'라고 부르며 학습의 결과로 매개변수 $(w_1, w_2, \theta) = (2, 1, 3)$이 구해졌기 때문에 뉴런이 발화하는 경계는 식 (2.8)에 의해 결정된다는 것을 알 수 있으며, 아래 그림과 같다
- 아래 그림을 보면 식 (2.8)의 직선 이 외에도 다양한 직선으로도 데이터를 분류할 수 있음을 알 수 있는데, 이는 오류정정학습법을 통해 얻은 모델이 데이터를 잘 분류할 수 있는 모델 중의 하나인 것을 알 수 있다
$\begin{eqnarray} 2\cdot x_1 + 1\cdot x_2 - (3) = 2x_1 + x_2 - 3 = 0 \tag{2.8}\end{eqnarray}$
OR 게이트
- OR 게이트는 그림과 같이 입력이 2개, 출력이 1개이며, 2개의 입력 중 하나라도 $1$이면 $1$을 출력하고 그 외에는 $0$을 출력
Input | Output | |
$x_1$ |
$x_2$ |
$y$ |
$0$ |
$0$ |
$0$ |
$0$ |
$1$ |
$1$ |
$1$ |
$0$ |
$1$ |
$1$ |
$1$ |
$0$ |
- OR 게이트도 AND 게이트와 형태가 같기 때문에 신경망 단순 모델과 동일한 형태(입력 2개, 출력 1개)이기 때문에 신경망으로 구현 가능
- OR 게이트를 신경망으로 구현하기 위해서는 위의 표에 나온 $(x_1,x_2,y)$에 대한 각각의 값에 대하여 식 (2.1)를 만족하는 매개변수 $(w_1,w_2,\theta)$를 찾을 수 있어야 한다
\begin{eqnarray} H(\mathbb{x}) = \left\{ \begin{array}{ll} 1 & w_1x_1 + w_2x_2 -\theta \geqslant 0 \\ 0 & w_1x_1 + w_2x_2 -\theta< 0\end{array}\right. \tag{2.1} \end{eqnarray}
- AND 게이트와 당일한 방식으로 오차정정학습법을 사용하면 아래 표와 같은 결과를 얻을 수 있다
$k$ |
$x_1$ |
$x_2$ |
$y$ | $w_1$ |
$w_2$ |
$\theta$ |
$H(\mathbb{x})$ |
$y-H(\mathbb{x})$ |
$\Delta w_1$ |
$\Delta w_2$ |
$\Delta \theta$ |
$1$ |
$0$ |
$0$ |
$0$ |
$0$ |
$1$ |
$0$ |
$1$ |
$-1$ |
$0$ |
$0$ |
$1$ |
$2$ |
$0$ |
$1$ |
$1$ |
$0$ |
$1$ |
$1$ |
$0$ |
$1$ |
$0$ |
$0$ |
$0$ |
$3$ |
$1$ |
$0$ |
$1$ |
$0$ |
$1$ |
$1$ |
$1$ |
$0$ |
$0$ |
$0$ |
$-1$ |
$4$ |
$1$ |
$1$ |
$1$ |
$0$ |
$1$ |
$0$ |
$1$ |
$0$ |
$0$ |
$0$ |
$0$ |
$5$ |
$0$ |
$0$ |
$0$ |
$0$ |
$1$ |
$0$ |
$1$ |
$-1$ |
$0$ |
$0$ |
$1$ |
$6$ |
$0$ |
$1$ |
$1$ |
$0$ |
$1$ |
$1$ |
$1$ |
$0$ |
$1$ |
$0$ |
$0$ |
$7$ |
$1$ |
$0$ |
$1$ |
$0$ |
$1$ |
$1$ |
$0$ |
$0$ |
$0$ |
$0$ |
$-1$ |
$8$ |
$1$ |
$1$ |
$1$ |
$1$ |
$1$ |
$0$ |
$1$ |
$0$ |
$0$ |
$0$ |
$0$ |
$9$ |
$0$ |
$0$ |
$0$ |
$1$ |
$1$ |
$0$ |
$1$ |
$0$ |
$0$ |
$0$ |
$0$ |
$10$ |
$0$ |
$1$ |
$1$ |
$1$ |
$1$ |
$1$ |
$1$ |
$0$ |
$0$ |
$0$ |
$1$ |
$11$ |
$1$ |
$0$ |
$1$ |
$1$ |
$1$ |
$1$ |
$1$ |
$0$ |
$0$ |
$0$ |
$1$ |
$12$ |
$1$ |
$1$ |
$1$ |
$1$ |
$1$ |
$1$ |
$1$ |
$0$ |
$0$ |
$0$ |
$-1$ |
$13$ |
$0$ |
$0$ |
$0$ |
$1$ |
$1$ |
$1$ |
$0$ |
$0$ |
$0$ |
$0$ |
$0$ |
$14$ |
$0$ |
$1$ |
$1$ |
$1$ |
$1$ |
$1$ |
$1$ |
$0$ |
$0$ |
$0$ |
$0$ |
$15$ |
$1$ |
$0$ |
$1$ |
$1$ |
$1$ |
$1$ |
$1$ |
$0$ |
$0$ |
$0$ |
$1$ |
$16$ |
$1$ |
$1$ |
$1$ |
$1$ |
$1$ |
$1$ |
$1$ |
$0$ |
$0$ |
$0$ |
$-1$ |
- 오류정정학습법을 통해 매개변수 $(w_1, w_2, \theta) = (2, 1, 3)$이 구해졌기 때문에 뉴런이 발화하는 경계는 식 (2.9)에 의해 결정된다는 것을 알 수 있으며, 이 결과는 아래 그림과 같이 표현할 수 있다
$\begin{eqnarray} 1\cdot x_1 + 1\cdot x_2 -( 1) = x_1 + x_2 -1 = 0 \tag{2.9}\end{eqnarray}$
NOT 게이트
- NOT 게이트는 AND 게이트나 OR 게이트와는 달리 아래 그림처럼 입력이 1개, 출력이 1개이며, 입력이 $0$이면 $1$을 출력하고, 입력이 $1$이면 $0$을 출력
Input | Output |
$x_1$ |
$y$ |
$0$ |
$1$ |
$1$ |
$0$ |
- NOT 게이트도 신경망 단순 모델에서 입력 1개이고 출력이 1개인 신경망으로 구현 가능
- NOT 게이트는 입력이 1개이기 때문에 식 (2.10)과 같이 표현할 수 있다
\begin{eqnarray} H(x) = \left\{ \begin{array}{ll} 1 & wx -\theta \geqslant 0 \\ 0 & wx -\theta< 0\end{array}\right. \tag{2.10} \end{eqnarray}
- NOT 게이트는 신호를 반전시키는 것이기 때문에 $w=-1$이고 $\theta=-1$이면 식 (2.1)을 만족하는 것을 알 수 있다
\begin{eqnarray} y = \left\{ \begin{array}{ll} wx -\theta = -1\cdot 0 - (-1)=0 + 1 = 1 & \textrm{where }\, x=0\\ wx -\theta = -1\cdot 1 - (-1) = -1 + 1 = 0 &\textrm{where }\, x=1\end{array}\right. \tag{2.11} \end{eqnarray}
NOT 게이트의 오차정정학습법
- 식 (2.11)은 직관적으로 얻은 결과이지만 AND 게이트와 OR 게이트처럼 오류정정학습법을 통해 매개변수 $(w_1,\theta)$의 값을 구해보자
- AND 게이트에서 정의했던 것과 같이 $\Delta w_1$과 $\Delta \theta$는 각각 식 (2.12)와 식 (2.13)과 같이 정의할 수 있다
\begin{align} \Delta w & = (y- H(\mathbb{x}))x \tag{2.12}\\ \Delta \theta & = -(y - H(\mathbb{x})) \tag{2.13}\end{align}
- 또한 $k$번째 오차정정학습법을 통해 얻은 매개변수를 $(w^k_1, \theta^k_1)$라고 하면 각각의 $k+1$번째 오차정정을 통해 얻은 각각의 매개변수는 식 (2.14)와 식 (2.15)와 같이 정의할 수 있다
\begin{align} w^{k_1} &= w^k + \Delta w \tag{2.14}\\ \theta^{k+1} &= \theta^k + \Delta \theta \tag{2.15}\end{align}
- 식 (2.14)와 식 (2.15)를 가지고 오차정정학습 과정을 진행하면 다음과 같은 결과를 얻을 수 있다
$k$ |
$x_1$ |
$y$ | $w_1$ |
$\theta$ |
$H(\mathbb{x})$ |
$y-H(\mathbb{x})$ |
$\Delta w_1$ |
$\Delta \theta$ |
$1$ |
$0$ |
$1$ |
$0$ |
$0$ |
$0$ |
$1$ |
$0$ |
$-1$ |
$2$ |
$1$ |
$0$ |
$0$ |
$-1$ |
$1$ |
$-1$ |
$-1$ |
$1$ |
$3$ |
$0$ |
$1$ |
$-1$ |
$0$ |
$0$ |
$1$ |
$0$ |
$-1$ |
$4$ |
$1$ |
$0$ |
$-1$ |
$-1$ |
$0$ |
$0$ |
$0$ |
$0$ |
$5$ |
$0$ |
$1$ |
$-1$ |
$-1$ |
$1$ |
$0$ |
$0$ |
$0$ |
$6$ |
$1$ |
$0$ |
$-1$ |
$-1$ |
$0$ |
$0$ |
$0$ |
$0$ |
- 오차정정학습법을 통해 매개변수 $(w_1, \theta) = (-1, -1)$이 구해졌기 때문에 뉴런이 발화하는 경계는 식 (2.16)에 의해 결정된다는 것을 알 수 있으며, 이 결과는 아래 그림과 같이 표현할 수 있음
$\begin{eqnarray} -1\cdot x_1 -(-1) = -x_1 + 1 = 0 \tag{2.9}\end{eqnarray}$
출처 : 정석으로 배우는 딥러닝
'신경망(Neural Network) 스터디' 카테고리의 다른 글
6. 다층 퍼셉트론 모델링 (0) | 2017.12.28 |
---|---|
5. 다중 클래스 로지스틱 회귀 (0) | 2017.12.27 |
4. 로지스틱 회귀 (0) | 2017.12.23 |
3. 단순 신경망 모델의 확장 (0) | 2017.12.22 |
1. 신경망의 단순 모델 (0) | 2017.12.21 |