본문 바로가기
딥러닝 기초

[밑바닥부터 시작하는 딥러닝] 퍼셉트론

by 나연하야 2022. 9. 3.

퍼셉트론은 1957년에 프랑크 로젠블라트가 고안한 알고리즘으로, 신경망(딥러닝)을 이해하는 데 기초가 되므로 이해하는 것은 중요합니다.

(여기서 말하는 퍼셉트론은 정학하게 '인공뉴런' 혹은 '단순 퍼셉트론'입니다.)

 

 

  • 퍼셉트론이란?

- 퍼셉트론은 다수의 신호를 입력 받아 하나의 신호를 출력합니다.

 

[그림 1] 퍼셉트론

- x1, x2: 입력 신호

- w1, w2: 가중치

- y: 출력 신호

 

 

 

  • 퍼셉트론의 원리

- 뉴런에서 보내온 신호의 총합이 정해진 한계값(임계값, θ)을 넘으면 1, 넘지 않으면 0을 출력합니다.

- 이때, 1이 출력되는 것을 보고 '뉴런이 활성화된다'고 표현됩니다.

 

[식 1]

 

 

  • 단순한 논리 회로 - AND 게이트

- AND 게이트에서는 입력이 모두 1일 때만 1을 출력하고, 그 외에는 0을 출력합니다.

(x1과 x2 모두 1일 때만 1을 출력하므로, 'AND 게이트'인 것 같습니다.)

- 이와 같이 작동하기 위해서는 w1, w2, θ를 어떻게 설정해야 할까요?

- (w1, w2, θ)를 (0.5, 0.5, 0.7), (0.5, 0.5, 0.8), (1.0, 1.0, 1.0) 등으로 설정하면 됩니다.

 

- (w1, w2, θ)를 (1.0, 1.0, 1.0)로 설정한 경우를 계산해봅시다.

w1*x1+w2*x2와 θ를 비교하면 되겠죠?

1.0*0+1.0*0 ≤ 1 ---> 출력값: 0

1.0*1+1.0*0 ≤ 1 ---> 출력값: 0

1.0*0+1.0*1 ≤ 1 ---> 출력값: 0

1.0*1+1.0*1 > 1 ---> 출력값: 1

 

 

 

  • 단순한 논리 회로 - NAND 게이트

- NAND 게이트는  AND 게이트와 반대로 입력이 모두 1일 때는 0을 출력하고, 그 외에는 1을 출력합니다.

(AND 게이트와 반대로 작동해 'NAND 게이트'인 것 같습니다.)

- 이와 같이 작동하기 위해서는 w1, w2, θ를 어떻게 설정해야 할까요?

- (w1, w2, θ)를 (-0.5, -0.5, -0.7) 등으로 설정하면 됩니다.

 

- (w1, w2, θ)를 (-0.5, -0.5, -0.7)로 설정한 경우를 계산해봅시다.

w1*x1+w2*x2와 θ를 비교하면 되겠죠?

-0.5*0+(-0.5)*0 > -0.7 ---> 출력값: 0

-0.5*1+(-0.5)*0 > -0.7 ---> 출력값: 0

-0.5*0+(-0.5)*1 > -0.7 ---> 출력값: 0

-0.5*1+(-0.5)*1 -0.7 ---> 출력값: 1

 

 

 

  • 단순한 논리 회로 - OR 게이트

- OR 게이트는 입력 신호 중 하나 이상이 1일 때는 1을 출력하고, 그 외에는 0을 출력합니다.

(x1또는 x2 둘 중 하나 이상이 1이면 1을 출력하므로, 'OR 게이트'인 것 같습니다.)

- 이와 같이 작동하기 위해서는 w1, w2, θ를 어떻게 설정해야 할까요?

- (w1, w2, θ)를 (1.0, 1.0, 0.5) 등으로 설정하면 됩니다.

 

- (w1, w2, θ)를 (1.0, 1.0, 0.5)로 설정한 경우를 계산해봅시다.

w1*x1+w2*x2와 θ를 비교하면 되겠죠?

1.0*0+1.0*0 ≤ 0.5 ---> 출력값: 0

1.0*1+1.0*0 > 0.5 ---> 출력값: 1

1.0*0+1.0*1 > 0.5 ---> 출력값: 1

1.0*1+1.0*1 > 0.5 ---> 출력값: 1

 

▶ 위에서 살펴본 AND, NAND, OR 게이트의 퍼셉트론 구조는 모두 동일하며, w1, w2, θ의 값의 설정만 달라지면 된다는 것을 알 수 있습니다.

 

 

 

  • AND 게이트 다르게 표현해보기

- 위의 [식 1]에서 θ를 -b로 바꾸어 표현하면 아래와 같습니다.

 

[식 2]

- b: 편향

- x1, x2: 입력 신호

- w1, w2: 가중치

- y: 출력 신호

 

▶ [식 2]의 관점에서 해석하면, 퍼셉트론은 입력신호(x1, x2)에 가중치(w1, w2)를 곱한 값에 편향(b)을 합하여, 그 값이 0을 넘으면 1을 출력하고, 그렇지 않으면 0을 출력합니다.

 

 

 

  • 가중치와 편향의 의미

- 위의 [식 2]를 보면서 가중치(w1, w2)와 편향(b)의 의미를 생각해봅시다.

- 복수의 입력 신호(x1, x2) 각각에 고유한 가중치(w1, w2)를 곱해주어 출력값에 영향을 준다는 점에서 가중치가 클수록 해당 신호가 중요하다고 해석할 수 있다.

- 편향(b)의 값에 따라 퍼셉트론을 쉽게 활성화(결과를 1로 출력)할 수 있습니다.

- 예를 들어, b가 -0.1이면 각 입력 신호에 가중치를 곱한 값들의 합이 0.1을 초과할 때만 뉴런이 활성화되며, b가 -20이면 각 입력 신호에 가중치를 곱한 값들의 합이 20을 넘지 않으면 퍼셉트론이 활성화되지 않습니다.

 

 

 

  • 퍼셉트론의 한계

- X1, X2 중 하나만 1인 경우에만 1을 출력하는 XOR 게이트(X1, X2 중 하나만 1인 경우에만 1을 출력)는 어떻게 구현할 수 있을까?

- 퍼셉트론의 층을 쌓은 '다층 퍼셉트론'으로 구현이 가능합니다.

 

 

 

  • XOR 게이트 구현하기

- 위에서 살펴본 AND, NAND, OR 게이트를 이용해 여러 층을 쌓으면 XOR 구현이 가능합니다.

- XOR 게이트를 구현하기 위해 AND, NAND, OR 게이트의 기호를 살펴봅시다.

 

[그림 2] AND, NAND, OR 게이트

 

- XOR 게이트는 [그림 3]과 같이 구현이 가능하고, 계산해봅시다.

 

[그림 3] XOR 게이트

 

X1 X2 S1
(NAND 게이트)
S2
(OR 게이트)
y
(AND 게이트)
0 0 1 0 0
1 0 1 1 1
0 1 1 1 1
1 1 0 1 0

 

출처: 사이토 고키, 「밑바닥부터 시작하는 딥러닝」, 한빛미디어(2017), p47-p62.