beginner/파이썬 딥러닝 기초

XOR 문제 딥러닝으로 풀기

johh 2019. 5. 6. 22:23

XOR은 정말 단순한 문제이지만 초기 neural network 연구자들에게 큰 절망을 주었다.

이런 하나의 unit으로는 이 문제를 풀 수 없다는 것이 수학적으로 증명이 되었고, 때문에 사람들이 neural network는 잘 안된다고 믿었던 계기가 되었다.

그런데 하나가 아니라 2개 3개를 합치면 어떻게 될까?

그러면 풀 수 있다.

그런데 또 그당시에 나왔던 문제는 각각의 w과 b를 어떻게 학습할 수 있느냐 였는데, 불가능하다고 하였다.

 

 

neural network로 xor이 가능한지 확인해 보자.

linear하게 +,-를 구분할 수 있는 선을 찾을 수 없었다.

 

이 문제를 3개의 network를 가지고 풀어보겠다.

하나의 network는 하나의 unit이 logistic regression과 같다.

여기까지 여러개의 neural network를 사용하면 XOR output을 출력할 수 있다는 것을 확인할 수 있었다.

 

이것들을 하나로 뭉쳐서 그려보면 다음과 같은 그림이 나올 것이다.

자 그러면 이런 weight과 bias를 가지면 XOR 문제를 풀 수 있다는 것을 보였는데, 이 값들 말고 다른 조합의 값들이 존재할까? (생각해보자)

 

 

 

이 부분을 보면 multinomial  classification과 유사하다는 것을 확인할 수 있다.

3개의 unit을 합치기 위해서는 벡터를 3줄로 주면 된다.

 

마찬가지로 2개를 합쳐보면, weight과 bias가 늘어났고, 수식으로는 다음과 같이 정리할 수 있다.

민스키 교수님이 최종적으로 던져준 문제 "How can we learn W1, W2, B1, B2 from training data?" 는 다음시간에 설명하겠다.