2. 논리 회로(Logic Circuit)
논리 게이트(Logic Gate)
- 디지털 회로에서는 0과 1 신호의 입출력을 제어하기 위해 논리 게이트라는 회로를 사용
- 사람의 뇌를 흉내내기 위해서 논리 게이트를 조합하여 구현할 수 있는지 여부가 가장 중요
- 기본적으로 3가지 논리 게이트를 사용하여 복잡한 회로를 구현
- AND 게이트(논리곱)
- OR 게이트(논리합)
- NOT 게이트(논리부정)
AND 게이트
- AND 게이트는 그림과 같이 입력이 2개, 출력이 1개이며, 2개의 입력이 모두 1일 때만 1을 출력하고 그 외에는 0을 출력
Input | Output | |
x1 |
x2 |
y |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
- AND 게이트로 만든 회로는 신경망 단순 모델과 동일한 형태(입력 2개, 출력 1개)이기 때문에 신경망으로 구현 가능
- AND 게이트를 신경망으로 구현하기 위해서는 위의 표에 나온 x=(x1,x2)과 y에 대한 각각의 값에 대하여 가설 모델(Hyperthesis model) 식 (2.1)를 만족하는 매개변수 (w1,w2,θ)를 찾을 수 있어야 한다
H(x)={1w1x1+w2x2−θ⩾00w1x1+w2x2−θ<0
식 (2.1)가 성립하는 값 (w1,w2,θ)를 구하는 방법의 예
- 먼저 매개변수 (w1,w2,θ)에 임의의 값을 넣고 (x1,x2)의 모든 값에 대하여 예측 모델의 계산한 값 H(x)와 실제 값인 y의 차가 작아지도록 (w1,w2,θ) 값을 다시 조정해야한다
- 예를 들어, 매개변수를 (w1,w2,θ)=(1,1,0)으로 하면 (x1,x2)=(0,0)일 때 식 (2.1)를 계산해보면 H(x)=1⋅0+1⋅0−0=0⩾0이 되어 H(x)=1이 되어 발화가 되나, 실제로는 y=0≠H(x)이 되어 발화되어서는 안된다
- 이는 뉴런끼리의 결합이 강하거나 임계값이 낮아서 발생하는 일이기 때문에 가중치를 낮추거나 임계값을 높이는 방법으로 출력을 낮게 만들어야 함
오차정정학습법(Error Correction Learning)
- 위의 예처럼 임의의 매개변수 (w1,w2,θ)에 대하여 식 (2.1)를 계산한 값 H(x)에 대하여 H(x)≠y라면 매개변수(w1,w2,θ)를 다시 수정하면서 H(x)≅y가 되도록 하는 방법을 오차정정학습법이라고 하며 이와 같이 결과값을 보고 가중치를 수정하기 때문에 역전파 알고리즘(backward propagation algorithm)이라고 함
- 정답인 출력값을 y라 하고, 신경망 모델의 출력값을 H(x)라고 하면 오차정정학습법을 다음과 같이 정리할 수 있음
- y=H(x)일 경우, 정확한 값이 출력되었기에 매개변수를 수정할 필요가 없다
- y=0일 때 H(x)=1인 경우, 출력값이 크기 때문에 출력값을 작게하는 방향으로 매개변수를 조정한다
- 입력값이 양수이면 가중치를 작게, 임계값은 높게
- 입력값이 음수이면 가중치를 크게, 임계값은 높게
- y=1일 때 H(x)=0인 경우, 출력값이 작기 때문에 출력값을 크게하는 방향으로 매개변수를 조정한다
- 입력값이 양수이면 가중치를 크게, 임계값은 낮게
- 입력값이 음수이면 가중치를 작게, 임계값은 낮게
- 이전 매개변수 (w1,w2,θ)와 새로 업데이트된 매개변수 (w′1,w′2,θ′)와의 차이를 각각 Δw1과 Δw2, Δθ라고 하면 각각의 차이는 식 (2.2), 식 (2.3), 식 (2.4)와 같이 정의 가능
Δw1=(y−H(x))x1Δw2=(y−H(x))x2Δθ=−(y−H(x))
- 오차정정학습법에 따라 y=0일 때 H(x)=1인 경우, 출력값이 크기 때문에 출력값을 작게하는 방향으로 매개변수를 조정해야 하는데, AND 게이트에서 입력값은 모두 0보다 크거나 같은 양수이기 때문에 가중치를 작게 만들고 임계값은 높게 만들어야 한다
- 식 (2.2)는 Δw1=y−H(x)=0−1=−1
- 식 (2.3)는 Δw1=y−H(x)=0−1=−1
- 식 (2.4)는 Δθ=−(y−H(x))=−(0−1)=1
- 반면에 y=1일 때 H(x)=0인 경우, 출력값이 작기 때문에 출력값을 크게하는 방향으로 매개변수를 조정해야 하는데,
AND 게이트에서 입력값은 모두 0보다 크거나 같은 양수이기 때문에 가중치를 크게 만들고 임계값은 낮게 만들어야 한다
- 식 (2.2)는 Δw1=y−H(x)=1−0=1
- 식 (2.3)는 Δw1=y−H(x)=1−0=1
- 식 (2.4)는 Δθ=−(y−H(x))=−(1−0)=−1
- 위의 두 경우를 따져본 결과 식 (2.2)와 식 (2.3), 식 (2.4)는 올바르게 정의한 예로 볼 수 있다
- 이제 k번째 오차정정으로 얻은 매개변수를 (wk1,wk2,θk)라고 하면 k+1번째 오차정정으로 얻은 각각의 매개변수는 식 (2.5), 식 (2.6), 식 (2.7)과 같이 정의 가능
wk+11=wk1+Δwk1wk+12=wk2+Δwk2θk+1=θk+Δθk
- 오차정정학습법은 k번째 반복 학습에서 매개변수를 업데이트하고 다시 k+1번째 반복 학습을 하면서 매개변수를 다시 업데이트하면서 오차가 최대한으로 작아져 정답이 출력될 때까지 알고리즘을 반복하는 방식으로 진행
- 이 과정은 아래 표와 같이 각각의 매개변수들이 업데이트되면서 학습이 반복될 수록 오차가 줄어들면서 정확한 값을 출력하는 것을 알 수 있다
k |
x1 |
x2 |
y | w1 |
w2 |
θ |
H(x) |
y−H(x) |
Δw1 |
Δw2 |
Δθ |
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 |
- 오차정정학습법은 '정확한 출력이 나올 때까지 매개변수를 업데이트를 반복하는 과정'을 말하며 '신경망을 학습시킨다'라고 부르며 학습의 결과로 매개변수 (w1,w2,θ)=(2,1,3)이 구해졌기 때문에 뉴런이 발화하는 경계는 식 (2.8)에 의해 결정된다는 것을 알 수 있으며, 아래 그림과 같다
- 아래 그림을 보면 식 (2.8)의 직선 이 외에도 다양한 직선으로도 데이터를 분류할 수 있음을 알 수 있는데, 이는 오류정정학습법을 통해 얻은 모델이 데이터를 잘 분류할 수 있는 모델 중의 하나인 것을 알 수 있다
2⋅x1+1⋅x2−(3)=2x1+x2−3=0
OR 게이트
- OR 게이트는 그림과 같이 입력이 2개, 출력이 1개이며, 2개의 입력 중 하나라도 1이면 1을 출력하고 그 외에는 0을 출력
Input | Output | |
x1 |
x2 |
y |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
- OR 게이트도 AND 게이트와 형태가 같기 때문에 신경망 단순 모델과 동일한 형태(입력 2개, 출력 1개)이기 때문에 신경망으로 구현 가능
- OR 게이트를 신경망으로 구현하기 위해서는 위의 표에 나온 (x1,x2,y)에 대한 각각의 값에 대하여 식 (2.1)를 만족하는 매개변수 (w1,w2,θ)를 찾을 수 있어야 한다
H(x)={1w1x1+w2x2−θ⩾00w1x1+w2x2−θ<0
- AND 게이트와 당일한 방식으로 오차정정학습법을 사용하면 아래 표와 같은 결과를 얻을 수 있다
k |
x1 |
x2 |
y | w1 |
w2 |
θ |
H(x) |
y−H(x) |
Δw1 |
Δw2 |
Δθ |
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 |
- 오류정정학습법을 통해 매개변수 (w1,w2,θ)=(2,1,3)이 구해졌기 때문에 뉴런이 발화하는 경계는 식 (2.9)에 의해 결정된다는 것을 알 수 있으며, 이 결과는 아래 그림과 같이 표현할 수 있다
1⋅x1+1⋅x2−(1)=x1+x2−1=0
NOT 게이트
- NOT 게이트는 AND 게이트나 OR 게이트와는 달리 아래 그림처럼 입력이 1개, 출력이 1개이며, 입력이 0이면 1을 출력하고, 입력이 1이면 0을 출력
Input | Output |
x1 |
y |
0 |
1 |
1 |
0 |
- NOT 게이트도 신경망 단순 모델에서 입력 1개이고 출력이 1개인 신경망으로 구현 가능
- NOT 게이트는 입력이 1개이기 때문에 식 (2.10)과 같이 표현할 수 있다
H(x)={1wx−θ⩾00wx−θ<0
- NOT 게이트는 신호를 반전시키는 것이기 때문에 w=−1이고 θ=−1이면 식 (2.1)을 만족하는 것을 알 수 있다
y={wx−θ=−1⋅0−(−1)=0+1=1where x=0wx−θ=−1⋅1−(−1)=−1+1=0where x=1
NOT 게이트의 오차정정학습법
- 식 (2.11)은 직관적으로 얻은 결과이지만 AND 게이트와 OR 게이트처럼 오류정정학습법을 통해 매개변수 (w1,θ)의 값을 구해보자
- AND 게이트에서 정의했던 것과 같이 Δw1과 Δθ는 각각 식 (2.12)와 식 (2.13)과 같이 정의할 수 있다
Δw=(y−H(x))xΔθ=−(y−H(x))
- 또한 k번째 오차정정학습법을 통해 얻은 매개변수를 (wk1,θk1)라고 하면 각각의 k+1번째 오차정정을 통해 얻은 각각의 매개변수는 식 (2.14)와 식 (2.15)와 같이 정의할 수 있다
wk1=wk+Δwθk+1=θk+Δθ
- 식 (2.14)와 식 (2.15)를 가지고 오차정정학습 과정을 진행하면 다음과 같은 결과를 얻을 수 있다
k |
x1 |
y | w1 |
θ |
H(x) |
y−H(x) |
Δw1 |
Δθ |
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 |
- 오차정정학습법을 통해 매개변수 (w1,θ)=(−1,−1)이 구해졌기 때문에 뉴런이 발화하는 경계는 식 (2.16)에 의해 결정된다는 것을 알 수 있으며, 이 결과는 아래 그림과 같이 표현할 수 있음
−1⋅x1−(−1)=−x1+1=0
출처 : 정석으로 배우는 딥러닝
'신경망(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 |