study

ML — 딥러닝으로 XOR 문제 풀기

kmk_sweetlife 2023. 10. 9. 18:28
반응형

AND나 OR문제에 대해서는 한 개의 logistic regression 으로도 해결할 수 있었지만, XOR문제의 경우 하나의 logistic 모델로는 불가능 하다는 것이 수학적으로 증명되면서 한계에 직면했다. XOR 문제를 해결하기 위해서 logistic regression을 여러개 이용해서 푸는 방법이 등장했다. 이는 Neural Network 형태를 띠게 되며, XOR 문제를 풀 수는 있지만 W와 b를 학습하는 것은 불가능한것으로 보였다.

NN으로 XOR 푸는 방식

임의로 W와 b값을 지정해 여러개의 logistic regression에 X1과 X2값을 입력해서 결과값이 제대로 나오는지 확인하는 방식이다. X1과 X2 한 쌍의 값이 (0, 0), (0, 1), (1, 0), (1, 1)일 때 이미 정해놓은 X와 b를 이용해 Y1 = X1W+b, Y2 = X2W+b에서의 Y1, Y2값을 구한다. 이 Y1, Y2 값으로부터 또다른 logistic regression을 이용해 Y3의 값을 구하여 XOR의 답을 판단한다.

Backpropagation 알고리즘

-학습시키기

NN을 이용하면 XOR 문제를 해결할 수는 있지만 W와 b값을 임의로 지정하지 않고 스스로 학습해 W와 b값을 설정할 수 있는가에 대한 문제가 있었다. 하나의 logistic regression 인 경우 cost function 을 gradient descent algorithm을 이용해 최소화 할 수 있었는데, 이 경우 1개 선형 함수의 기울기를 구하는 방식이므로 어려운 과정이 아니었다. 그러나 여러개의 logistic regression이면 상당히 복잡해 진다.

따라서 이 때 backpropagation을 사용하는데, 아래의 2가지 단계로 구성된다.

  1. 예측한 값과 실제 결과 값을 비교해 오류 값을 구한다.
  2. 오류 값을 NN의 각 노드에 역전파한다.

즉 NN을 순방향으로 한 번 연산한 다음, 연산에 따른 결과값을 가지고 NN을 역방향으로 계산하여 입력한 데이터가 결과 값에 얼마나 영향을 미치는 지 확인하게 된다.