본문 바로가기

ML & DL

혼자 해 보는 머신러닝 딥러닝 (3) 다층 퍼셉트론과 XOR

안녕하세요. 오늘은 XOR을 해결하기 위한 다층 퍼셉트 론에대해 살펴보겠습니다.

결론부터 말씀드리면, 지난 시간 단층 퍼셉트론으로는 XOR 논리회로를 정확히 직선으로 분리할 수 없습니다. XOR의 배타적 특성 때문입니다. 배타적 특성은 x1, x2라는 두가지 입력이 있을 때, 둘 중 한가지 값만 1인 경우에 1을 출력하기 때문입니다.

그래서 직선 한가지로 구분해야 하는 단층 퍼셉트론으로는 설명이 불가능합니다.


출처 : 잡다한 블로그 (http://psiyblg.tistory.com/3)


그래서 단층 퍼셉트론으로 구현된 AND, NAND, OR을 통해 구현해 보겠습니다.


출처 : 잡다한 블로그 (http://psiyblg.tistory.com/3)


그림처럼 0층에서 x1, x2가 인풋으로 들어가면, 1층에서는 각각 NAND와 OR연산을 통해 S1, S2 값을 결과로 만들어 내고 S1, S2는 다시 2층의 인풋이 되어 AND연산으로 최종 XOR과 같은 결과물을 만들어 냅니다. 2층으로 구성되기 때문에 이것을 다층 퍼셉트론이라고 합니다. 구현된 코드는 다음과 같습니다.


def XOR(x1, x2):

s1 = NAND(x1, x2)

s2 = OR(x1, x2)

y = AND(s1, s2)

return y


출처 : 위 내용 및 코드는 "밑바닥 부터 시작하는 딥러닝"을 참조하였습니다.


=================================================================

2017/09/19 - [ML & DL] - 혼자 해보는 머신러닝 (2) 단층 퍼셉트론의 구현

2017/09/17 - [ML & DL] - 혼자 해보는 머신러닝 (1) Ubuntu 개발 환경 설정 (Anaconda를 사용한 방법)