XOR 문제 해결하기

XOR 문제를 해결하기 위해 Multi Layer를 사용하면 됩니다.

코드는 아래쪽에 적어두었으니 참고하시길 바랍니다.

 

아래의 사진과 같이 XOR 문제를 해결하기 위해서 3개의 Network가 필요합니다.

글로 설명하기 애매하니 사진으로 대체하겠습니다.

 

위와 같이 하나의 Perceptron(하나의 직선, y = wx + b)로는 AND, OR 문제는 해결할 수 있지만

XOR 문제는 하나의 Perceptron으로는 해결이 불가능 합니다.

 

그래서 나온것이 MLP(Multi Layer Perceptron, 다층 퍼셉트론)입니다.

위의 사진과 같이 여러개의 Perceptron 층을 이루는 구조입니다.

여기서 직접 손으로 계산을 해주면

이렇게 결과가 나오게 됩니다.

결국 Weight와 Bias값만 잘 주어지면 XOR 문제도 해결이 가능하게 되었습니다.

하지만 Weight와 Bias가 항상 잘 주어지는 경우는 없습니다.

그래서 적절한 W,B의 값을 컴퓨터가 직접 찾기 위해서 나온 것이 Backpropagation 입니다.

기존에 단일 Perceptron일 경우에는 경사하강법을 사용해서 학습을 시켰지만

여러개의 Perceptron일 경우에는 경사하강법을 적용하기 매우 복잡해져

Backpropagation이라는 방법이 나온것 같습니다.

이 부분은 정확한 부분이 아니기 때문에 지적해주시면 감사하겠습니다.


 

Colab에서 기본 환경 셋팅을 해줍니다.

 

 

XOR에 해당되는 X,Y를 선언해줍니다.

 

여기서 Layer는 자유롭게 여러층을 구성하셔도 무방합니다.

하지만 Input과 Output은 꼭 2,1로 지정해주시길 바랍니다.

 

Cost Function은 BCELoss(Binary Cross Entropy Loss)를 사용해 주시고

Optimizer는 SGD를 사용하겠습니다.

 

이렇게 XOR 문제를 해결할 수 있는 Layer를 직접 작성해보았습니다.

 

 

 

 

 

출처:

https://www.youtube.com/watch?v=GYecDQQwTdI&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=25 

'Deep Learning > Pytorch' 카테고리의 다른 글

14_Pytorch_Weight Initialization  (0) 2021.09.09
13_Pytorch_Activation_Gradient Vanishing  (0) 2021.09.08
11_Pytorch_Backpropagation  (0) 2021.08.25
10_Pytorch_Perceptron_XOR  (0) 2021.08.25
09_Pytorch_Softmax_Classifier MNIST  (0) 2021.08.25

+ Recent posts