DNN는 XOR 확장문제를 풀 수 있는가?

XOR visualization에 대한 이미지 검색결과

XOR 문제를 저번에 풀어보았는데 XOR 문제를 확장시켜 아래와 같은 문제를 생각해본다. (교수님이 알려주심) 이 문제는 0과 같거나 큰 임의의 정수 두개를 뽑아 더한 후 2로 나누었을 때 나머지가 0 이면 class 0 , 1이면 class 1 로 구성할 수 있다.  “이와 같은 문제를 미니배치로 풀게되면 풀리지 않는다.  실제로 문제를 해결하려 할 때 전체 데이터셋을 mini batch 하지않고 풀게 되면 학습을 할 수 있다. 하지만 임의의 랜덤으로 뽑는 mini batch로 데이터셋을 학습시킬 경우 불가능에 가깝다는 것을 알 수 있다. (2차원 안에서 초평면의 휨이 데이터가 임으로 뽑혀질 때마다 바뀌기 때문에)

바둑판에 대한 이미지 검색결과

 

1. 임의로 추출하여 훈련 (미니배치사용)

https://github.com/gjtrj55/ML/blob/master/Auto_making_3d_ani_XOR_batch.ipynb

역시 맞추지 못함. 미니배치로 학습할 경우 학습이 안되는 것 같다.

 

2. n범위만큼 훈련후 n 바깥의 점 생성 후 예측

https://github.com/gjtrj55/ML/blob/master/Auto_making_3d_ani_XOR_test.ipynb

해당하는 대각선 영역의 연장선은 예측을 할 수 있으나 그외는 맞추지 못함.

 

문제를 알고 있다고 가정한 경우 (수학적인 테크닉을 동원) :

문제를 알고 있다는 가정하에 이 문제를 이진수로 바꿔 문제를 해결할 수 있다. 이렇게 해결하면 매우 단순하지만 핵심이 되는 패턴을 학습할 수 있어서 적은 데이터만으로 앞으로 들어올 데이터를 예측할 수 있다.

https://github.com/gjtrj55/ML/blob/master/odd.ipynb

 

 

문제를 모르는 경우 :

전체 데이터셋을 가지고 학습하였을 때

https://github.com/gjtrj55/ML/blob/master/XOR_separate.ipynb

직접 3D animation 코드 구현 :

https://github.com/gjtrj55/ML/blob/master/Auto_making_3d_ani_XOR.ipynb

 

실험을 통해 알게 된 것과 궁금증 :

  1. 히든레이어 개수를 하나만 사용했을 때 그 층의 노드 개수 N개가 N 차 다항식을 근사할 수 있음을 알았다. 이는 우리가 어떤 문제를 풀려고 할 때 그 함수를 대충 짐작할 수 있는 경우 그에 맞는 노드개수를 주어 계산의 낭비를 막을 수 있을 지도 모른다.
  2. 과연 히든레이어를 늘려서 실험을 해보면 어떤 변화가 예측될 수 있는지는 나중에 좀더 실험해보고 파악해봐야겠다. 
  3. 전체 데이터셋을 사용하지 않고 미니배치를 사용하게되면 문제를 맞추기 어려워질 수 있다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다