Loading [MathJax]/jax/output/HTML-CSS/jax.js

2. 논리 회로(Logic Circuit)


논리 게이트(Logic Gate)

  • 디지털 회로에서는 0과 1 신호의 입출력을 제어하기 위해 논리 게이트라는 회로를 사용
    • 사람의 뇌를 흉내내기 위해서 논리 게이트를 조합하여 구현할 수 있는지 여부가 가장 중요
  • 기본적으로 3가지 논리 게이트를 사용하여 복잡한 회로를 구현
    1. AND 게이트(논리곱)
    2. OR 게이트(논리합)
    3. 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)=10+100=00이 되어 H(x)=1이 되어 발화가 되나, 실제로는 y=0H(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,θ)와 새로 업데이트된 매개변수 (w1,w2,θ)와의 차이를 각각 Δw1Δw2, Δθ라고 하면 각각의 차이는 식 (2.2), 식 (2.3), 식 (2.4)와 같이 정의 가능

Δw1=(yH(x))x1Δw2=(yH(x))x2Δθ=(yH(x))

    • 오차정정학습법에 따라 y=0일 때 H(x)=1인 경우, 출력값이 크기 때문에 출력값을 작게하는 방향으로 매개변수를 조정해야 하는데, AND 게이트에서 입력값은 모두 0보다 크거나 같은 양수이기 때문에 가중치를 작게 만들고 임계값은 높게 만들어야 한다
      • 식 (2.2)는 Δw1=yH(x)=01=1
      • 식 (2.3)는 Δw1=yH(x)=01=1
      • 식 (2.4)는 Δθ=(yH(x))=(01)=1
    • 반면에 y=1일 때 H(x)=0인 경우, 출력값이 작기 때문에 출력값을 크게하는 방향으로 매개변수를 조정해야 하는데, AND 게이트에서 입력값은 모두 0보다 크거나 같은 양수이기 때문에 가중치를 크게 만들고 임계값은 낮게 만들어야 한다
      • 식 (2.2)는 Δw1=yH(x)=10=1
      • 식 (2.3)는 Δw1=yH(x)=10=1
      • 식 (2.4)는 Δθ=(yH(x))=(10)=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)

 yH(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)의 직선 이 외에도 다양한 직선으로도 데이터를 분류할 수 있음을 알 수 있는데, 이는 오류정정학습법을 통해 얻은 모델이 데이터를 잘 분류할 수 있는 모델 중의 하나인 것을 알 수 있다

2x1+1x2(3)=2x1+x23=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)

 yH(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)에 의해 결정된다는 것을 알 수 있으며, 이 결과는 아래 그림과 같이 표현할 수 있다

1x1+1x2(1)=x1+x21=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θ=10(1)=0+1=1where x=0wxθ=11(1)=1+1=0where x=1


NOT 게이트의 오차정정학습법

  • 식 (2.11)은 직관적으로 얻은 결과이지만 AND 게이트와 OR 게이트처럼 오류정정학습법을 통해 매개변수 (w1,θ)의 값을 구해보자
  • AND 게이트에서 정의했던 것과 같이 Δw1Δθ는 각각 식 (2.12)와 식 (2.13)과 같이 정의할 수 있다

Δw=(yH(x))xΔθ=(yH(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)

 yH(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)에 의해 결정된다는 것을 알 수 있으며, 이 결과는 아래 그림과 같이 표현할 수 있음

1x1(1)=x1+1=0


출처 : 정석으로 배우는 딥러닝

+ Recent posts