본문 바로가기

카테고리 없음

머신 러닝 알고리즘 - 딥러닝(Deep Learning), 신경망(뉴럴네트워크, Neural Network)으로 XOR 문제 풀기

출처 : http://it.plusblog.co.kr/221248710737

XOR의 개념은 간단하지만 하나의 단일 모델로 XOR 문제를 풀 수 없었다. XOR은 두 개의 입력에 대해 다음과 같은 결과를 출력해주는 논리 연산이다.

x1
x2
y
0
0
0
0
1
1
1
0
1
1
1
0

두 개의 입력값(X1, X2)의 값이 서로 같으면 0을 출력하고 다르면 1을 출력한다. 개념은 매우 간단하다.

두 개의 입력값(X1, X2)에 대해서 위 표와 같은 결과를 내는 모델을 만들어 낼 수 있을까? 각각 입력값에 해당하는 가중치 W와 Bias b는 어떤 값을 가져야 할까?

XOR 문제를 그래프로 그려보면

XOR을 완벽하게 가르는 직선 혹은 곡선을 그릴 수가 없다. 대신 3개의 유닛으로 구성되어 있는 신경망(뉴럴 네트워크, Neural Network)을 이용하면 문제를 풀 수 있다.

두 개의 입력 x1과 x2에 대해서 위와 같은 뉴럴 네트워크를 그려보자. 이때 x1, x2의 각 조합에 대해서 하나씩 살펴보겠다.

우선 Model 1의 가중치와 Bias를 이용한 수식은 다음과 같다.

Model 2의 가중치와 Bias를 이용한 수식은 다음과 같다.

여기에 각각 시그모이드(Sigmoid) 함수를 취해서 0과 1을 얻은 값을 y1, y2라고 했을 때, 최종 출력값은

이 수식을 이용해서 계산해보면 다음과 같은 결과를 얻어 낼 수 있다.

x1
x2
y1
y2
y
0
0
0
1
0
0
1
0
0
1
1
0
0
0
1
1
1
1
0
0

최종 출력되는 y의 값은 결국 XOR 연산의 결과값과 동일하다. 즉, 뉴런 3개를 이용하여 2 단계의 신경망(뉴럴 네트워크, Neural Network)를 구성하면 XOR 문제를 풀 수 있다.

이런 신경망(뉴럴 네트워크, Neural Network)는 행렬 표현으로 다음과 같이 그려볼 수 있다.

2단계의 신경망으로 XOR 연산도 가능하게 되었다. 이제 문제는 가중치 값 W와 Bias를 어떻게 학습시킬 것인가다. 이에 대한 해답으로 Backpropagation 알고리즘을 사용한다. Backpropagation 알고리즘은 다음 포스트에서 진행하겠다.