[머신러닝] XOR 문제 해결하기 Part.1

in #kr-steemit7 years ago (edited)

and 조건과 or 조건으로 False = 0True = 1을 구분하며 최적의 변수를 찾아 학습하는 것이 머신러닝의 기본이다. 그런데 과거 머신러닝에 대한 연구가 시작되고 얼마 되지 않았던 1969년, 중대한 문제가 발생했다.

Marvin L. Minsky 교수가 위 기본 공식으로 해결할 수 없는 난제를 제시한 것이다. 먼저 다음의 표를 살펴보자.

x1x2y
000
100
010
111

위 표는 and 조건일 때 독립변수(x1, x2)와 종속변수(y)의 관계를 나타낸 표다.

x1x2y
000
101
011
111

위 표는 or 조건일 때 독립변수(x1, x2)와 종속변수(y)의 관계를 나타낸 표다. 그리고 두 표를 좌표평면으로 나타내면 아래 그림과 같다.

두 경우 모두 하나의 선(linear)를 그어 True 영역과 False 영역을 구분할 수 있다. 그럼 다음의 경우를 살펴보자.

x1x2y
000
101
011
110

만약 x1x2가 같을 경우 무조건 0 = False이고 다를 경우는 무조건 1 = TrueXOR 조건을 정리한 표다. 이경우 다시 위 그림으로 돌아가보면 단 하나의 선으로 TrueFalse 영역을 구분할 수 없다. 그동안 해왔던 방식으로 문제를 풀 수 없는 것이다. Marvin L. Minsky 교수는 이 부분을 지적하면서, 변수와 관계가 더 복잡해질 경우 아무도 이 문제를 풀 수 없다고 주장했다.

정말 풀 수 없는 문제일까. 어느 시대나 덕후들은 세상을 바꿔왔다. 발상의 전환을 통해 해결할 수 있게 됐다.

Backpropagation


진짜로 거꾸로 밟아 올라가보자는 아이디어다. 만약 우리가 학습을 하기 위한 테스트 데이터의 독립변수와 종속변수 모두 갖고 있다면 결과물을 도출해내기 위해 독립변수가 어떻게 영향을 미치는지 거꾸로 추론해볼 수 있다.

그리고 여기서 한 가지 방법이 더 추가된다. chain-rule을 사용하는 것. 중간 중간 특정 변수들이 최종 결과물을 도출해 내는데 여러 영행을 줄텐데, 그 요소들을 잘게 쪼개서 서로 어떻게 연결되어 있는지 나눠보자는 아이디어다.

결과적으로 최종 결과값을 미분(derivative)하면 요소를 쪼갤 수 있다. 특별히 하나의 변수만 알아내기 위해 편미분(Partial derivative)을 한다.


backpropagationchain-rule을 사용해 이제 우리는 XOR 문제를 풀 수 있는 실마리를 발견했다. 그리고 당연하게도 TensorFlow로 구현해 실제 XOR 문제를 해결할 수도 있다.


Sort:  

짱짱맨 호출에 출동했습니다!!