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

in kr-steemit •  7 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 문제를 해결할 수도 있다.


Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

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