1. XOR 게이트
지난 시간에 다뤘던 "퍼셉트론"에 관한 문제를 살펴보자.
한쪽이 1일 때만 1을 출력하는 XOR 게이트를 퍼셉트론을 이용해 표현하려고 한다.
XOR 게이트의 그래프는 다음과 같다.
하지만 이전에 다뤘던 게이트들과 달리 한 개의 직선으로 0과 1을 구분할 수 없다.
0과 1을 나누는 영역을 만들어내려면 곡선이나 두 개 이상의 직선이 필요하다.
이처럼 퍼셉트론은 직선 하나로 영역을 구분할 수 없는 경우에 한계가 생긴다. (단층 퍼셉트론으로 비선형 영역을 분리할 수 없다.)
이를 해결할 수 있는 방법은 층을 여러 개 쌓아 "다층 퍼셉트론(MLP, multi-layer perceptron)"을 만드는 것이다.
즉, 한 개의 퍼셉트론으로 해결하는 것이 불가능하기 때문에 여러 층으로 퍼셉트론을 쌓아 문제를 푸는 것이다.
다층 퍼셉트론을 이용해 XOR 게이트를 구현해보자.
XOR 게이트를 만드는 방법은 다양하지만, 여기서는 AND, NAND, OR 게이트를 조합해 XOR 게이트를 만들 것이다.
단층 퍼셉트론으로 표현 가능했던 AND, NAND, OR 게이트를 아래와 같은 기호로 표시하자.
XOR 연산은 아래와 같이 단층 퍼셉트론을 사용해 나타낼 수 있다.
x1 노드와 x2 노드의 값들은 s1 퍼셉트론(NAND 게이트)를 통과하고, s2 퍼셉트론(OR 게이트)을 통과한다.
s1과 s2에서 출력된 값들은 AND 게이트를 거치면서 4개의 값들을 출력하고, 이는 우리가 XOR 게이트에서 구현하고 싶었던 출력값들이 된다.
즉 NAND, OR, AND 게이트를 이용해 두 층의 퍼셉트론을 쌓으면 단층 퍼셉트론으로 구현하지 못했던 것들을 구현할 수 있는 것이다.
<결론>
층이 여러 개인 퍼셉트론을 다층 퍼셉트론이라고 한다. 다층 퍼셉트론을 이용해 단층 퍼셉트론으로는 표현하지 못한 것을 하나 늘려 구현할 수 있다. 앞에서 보았던 AND, OR이 단층 퍼셉트론이고, XOR이 2층 퍼셉트론(다층 퍼셉트론)이다.
다층 퍼셉트론은 지금까지 보아온 회로보다 복잡한 회로를 만들 수 있다. 예를 들어, 덧셈을 처리하는 가산기, 2진수를 10진수로 변환하는 인코더, 어떤 조건을 충족하면 1을 출력하는 회로도 퍼셉트론으로 표현할 수 있다. 퍼셉트론을 이용해 컴퓨터도 표현할 수 있는데, 컴퓨터도 퍼셉트론처럼 입력과 출력으로 구성된 특정 규칙대로 계산을 수행하기 때문이다. 이처럼, 이론적으로 다층 퍼셉트론은 매우 복잡한 표현을 해낼 수 있다.
2. 파이썬에서 다층 퍼셉트론을 이용해 XOR 구현하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #NAND, OR, AND 먼저 정의하기 #NAND def NAND(x1,x2): if x1== 1 and x2==1: return False else: return True #OR def OR(x1, x2): if x1==1 or x2==1: return True else: return False #AND def AND(x1,x2): if x1== 1 and x2==1: return True else: return False #NAND, OR, AND를 이용해 XOR 함수 정의하기 def XOR(x1,x2): s1=NAND(x1,x2) s2=OR(x1,x2) y=AND(s1,s2) return y #XOR 함수가 잘 생성되었는지 확인하기 for x in [(0,0),(1,0),(0,1),(1,1)]: y = int(XOR(x[0], x[1])) print("XOR", x, " = ", y) | cs |
'인공지능∙모델링 > 딥러닝' 카테고리의 다른 글
6. 딥러닝에서 과적합(Overfitting)을 막는 방법 (0) | 2023.12.12 |
---|---|
5. 인공신경망의 학습 (Neural Network Training) (0) | 2023.12.12 |
4. 인공 신경망 최적화 (Artificial Neural Network Optimization) - 일변수 함수 (2) | 2023.10.10 |
3. 인공 신경망(Artificial Neural Network, ANN) (0) | 2023.10.08 |
1. 단층 퍼셉트론(Single-Layer Perceptron) (0) | 2023.09.20 |
댓글