Notice
Recent Posts
Recent Comments
«   2024/12   »
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
Tags
more
Archives
Today
Total
관리 메뉴

No Limitation

[Pytorch] XOR Perceptron 구현하기 본문

ML & DL & RL

[Pytorch] XOR Perceptron 구현하기

yesungcho 2022. 2. 21. 15:19

참고 자료 :
유원준 님의 Pytorch로 시작하는 딥러닝 입문 

https://wikidocs.net/61010

 

 

신경망의 기초 단위 퍼셉트론을 소개할 때 많이 나오는 XOR gate. 

다른 AND, OR Gate와는 달리 선형 분류기로는 분류가 될 수 없는 구조가 XOR gate이다. 

고로, 이는 단층 퍼셉트론으로는 분류가 불가능하며 다층 퍼셉트론을 통해 분류가 가능하게 된다. 

 

그렇다면 이러한 논리를 Pytorch에서는 어떻게 구현하는 지 확인해보자. 

 

우선, 단일 퍼셉트론이 왜 안되는지 직접 실행을 통해 확인해보자

초기 세팅과 데이터 준비

신경망 구축, nn.Linear + nn.Sigmoid의 단일 퍼셉트론으로 구축됨을 확인할 수 있다. 

Training 수행

0 0.7273974418640137
100 0.6931476593017578
200 0.6931471824645996
300 0.6931471824645996
400 0.6931471824645996

...

9500 0.6931471824645996
9600 0.6931471824645996
9700 0.6931471824645996
9800 0.6931471824645996
9900 0.6931471824645996
10000 0.6931471824645996

200 epoch 이후로 에러 값이 줄어들지 않았다. 실제 예측 결과도 확인해보니

제대로 모형이 학습되지 않음을 알 수 있다.

 

따라서 선형 관계가 아닌 비선형 관계, 즉 다층 퍼셉트론을 쌓음으로서 문제를 해결할 수 있다.

 

본 교재에서는 3개의 은닉층을 사용하였고 유닛은 10개로 설정하였다. 

다음과 같은 그림으로 구축됨을 알 수 있다.

출처 : Pytorch로 시작하는 딥러닝 입문, 유원준 

다중 퍼셉트론 구현

Training 수행

0 0.6940630078315735
100 0.6931129097938538
200 0.6931090354919434
300 0.6931048035621643

...

9700 0.00011926117440452799
9800 0.00011736848682630807
9900 0.00011549072223715484
10000 0.00011370238644303754

오차가 감소함을 알 수 있다.

 

실제 예측 값도 정확하게 나옴을 확인할 수 있다.