XOR 문제와 Neural Network

1. XOR 문제란?

XOR 문제란 <figure 1>에 나타난 것 처럼 linear 방식으로 데이터를 구분할 수 없는 문제를 말합니다. OR 문제나 AND 문제는 아래와 같이 직선을 활용하여 데이터를 명확하게 구분할 수 있지만, XOR 문제는 어떤 직선을 활용하더라도 + 와 – 를 구분할 수 없습니다.

<figure 1> OR, AND, XOR problem

Minsky(1969)에서는 XOR 문제를 해결할 수 있는 대안으로 MLP(Multi-Layer Perceptrons)에 대한 개념, 즉, 현재 우리가 알고 있는 일반적인 인공 신경망을 소개했지만, Hidden layer의 weight와 bias에 대한 학습이 불가능하다는 증명을 하면서 Neural Network에 대한 연구가 한동한 지체되기도 했습니다. 그러나 Hinton(1986)에서 Neural Network에서의 weight와 bias를 학습시킬 수 있는Backpropagation에 대한 개념을 소개하면서, 다시 Neural network에 대한 연구가 활발해졌습니다.

2. XOR 문제와 Neural Network

 

이제 간단한 Neural Network를 활용하여 XOR 문제를 풀어보겠습니다. 아래 <figure 2>는 2개의 input layer와 3개의 hidden layer, 1개의 output layer로 구성된 Neural network 입니다. 첫 번째 hidden layer의 weight는 5, bias는 -8로 설정했으며, 두 번째 hidden layer의 weight는 -7, bias는 3으로, 마지막 hidden layer의 weight는 -11, bias는 6으로 설정했습니다. 각 hidden layer의 활성화 함수는 Sigmoid 함수를 적용했습니다.

<figure 2> Neural Network

<figure 3>은 X1이 0, X2가 0일 때 어떤 값이 계산되는지 나타내고 있습니다. 첫 번째 hidden layer에서는 (0, 0)이 input 값으로 활용되었으므로, sigmoid(-8)이 출력값이 되어 결국엔 0과 가까운 값이 계산됩니다. 두 번째 hidden layer에서는 sigmoid(3)이 출력되어 1과 가까운 값이 출력되며, 마지막 hidden layer에서는 첫 번째 hidden layer의 출력값과 두 번째 hidden layer의 출력 값 (0,1)이 입력 값으로 활용되어 sigmoid(-5), 즉 0과 가까운 값이 출력되게 됩니다.

<figure 3> XOR 계산 1

<figure 4>는 X1이 0, X2가 1일 때 어떤 값이 계산되는지 나타내고 있습니다. 첫 번째 hidden layer에서는 (0, 1)이 input 값으로 활용되었으므로, sigmoid(-3)이 출력값이 되어 결국엔 0과 가까운 값이 계산됩니다. 두 번째 hidden layer에서는 sigmoid(-4)가 출력되어 0과 가까운 값이 출력되며, 마지막 hidden layer에서는 첫 번째 hidden layer의 출력값과 두 번째 hidden layer의 출력 값 (0,0)이 입력 값으로 활용되어 sigmoid(6), 즉 1과 가까운 값이 출력되게 됩니다.

<figure 4> XOR 계산 2

<figure 5>는 X1이 1, X2가 0일 때 어떤 값이 계산되는지 나타내고 있습니다. 첫 번째 hidden layer에서는 (1, 0)이 input 값으로 활용되었으므로, sigmoid(-3)이 출력값이 되어 결국엔 0과 가까운 값이 계산됩니다. 두 번째 hidden layer에서는 sigmoid(-4)가 출력되어 0과 가까운 값이 출력되며, 마지막 hidden layer에서는 첫 번째 hidden layer의 출력값과 두 번째 hidden layer의 출력 값 (0,0)이 입력 값으로 활용되어 sigmoid(6), 즉 1과 가까운 값이 출력되게 됩니다.

<figure 5> XOR 계산 3

마지막으로 <figure 6>은 X1이 1, X2가 1일 때 어떤 값이 계산되는지 나타내고 있습니다. 첫 번째 hidden layer에서는 (1, 1)이 input 값으로 활용되었으므로, sigmoid(2)가 출력값이 되어 결국엔 1과 가까운 값이 계산됩니다. 두 번째 hidden layer에서는 sigmoid(-11)이 출력되어 0과 가까운 값이 출력되며, 마지막 hidden layer에서는 첫 번째 hidden layer의 출력값과 두 번째 hidden layer의 출력 값 (1,0)이 입력 값으로 활용되어 sigmoid(-5), 즉 0과 가까운 값이 출력되게 됩니다.

<figure 6> XOR 계산 4

<figure 3> ~ <figure 6>을 살펴보면 Neural Network의 계산 과정을 알 수 있으며, Linear regression과 Logistic regression에서 해결하지 못한 XOR 문제를 간단하게 해결할 수 있음을 알 수 있습니다.

댓글 남기기