퍼셉트론은 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.
'딥러닝 기초' 카테고리의 다른 글
[김기현의 딥러닝을 활용한 자연어처리] 딥러닝 환경 구축 (1) | 2023.05.11 |
---|---|
[밑바닥부터 시작하는 딥러닝] 최적화 (1) | 2022.10.08 |
[밑바닥부터 시작하는 딥러닝] 오차역전파 (0) | 2022.09.22 |
[밑바닥부터 시작하는 딥러닝] 신경망에서 학습 (0) | 2022.09.18 |
[밑바닥부터 시작하는 딥러닝] 신경망 (1) | 2022.09.04 |