알파고의 버그 ? Etc

알파고가 둔 엉뚱한 수를 버그라고 표현하는데..
버그는 프로그래머의 실수로 찾아내어 고칠 수 있는 걸 말한다.
머신러닝은 아래와 같은 데이터로 출발한다.
이해를 위해 아주 단순화 시켜서 O은 나쁜 수(향후 확률 계산시 마이너스) 네모는 좋은수(확률계산에서 플러스)라고 하자
아래 그림은 바둑판이 아니다. 

<그림1>

위와 같은 학습데이터를 학습시키면 아래와 같이 데이터를 구분하기 위한 구분선을 만들어 낸다. 
이 과정을 train 혹은 fit 한다고 한다. 학습 데이터에 "맞춰" 구분선을 긋는 작업이다. 


<그림2>

위의 처럼 구분선이 그어졌다. 선 위쪽 영역은 나쁜 수.. 아래 쪽 영역은 좋은 수라고 할 수 있다. 
사람이 보기에도 대충 잘 그은 것 같다. 

학습이 끝나서 구분선이 만들어지면, 아래 삼각형같은 input data에 대해 예측 (predict)를 할 수 있다. 

<그림3>
삼각형이 학습된 수는 아니지만, 위치가 아래쪽 영역 즉 구분선 아래 쪽에 위치하므로, "좋은 수"로 분류하는 것이다. 

그런데 학습데이터가 위와 같이 단순하지는 않다. 
아래 처럼 동그라미가 아래 쪽에 위치한 학습데이터도 있다. 

< 그림4>

그러면 구분선을 거기에 맞춰 (fit) 그어야 한다. 아래 그림처럼 그으면 될 것같다. 

<그림5>
위에 처럼 그어 놓으면 더 구분을 잘할 것다. 그런데 이렇게 학습된 기계에 아까 삼각형 데이터 (학습데이터가 아닌 입력 데이터)를 넣으면 어떻게 될까.. 삼각형은 좋은 수(아래쪽)로 분류해야 정답인 거였다. 그런데 아래그림처럼 위쪽으로 분류되게 된다(나쁜수)
이것이 이세돌의 신의 한수 였다. 

<그림6>
이건 버그가 아니라, 그냥 학습된게 이렇게 분류하도록 학습된 것 뿐이다. 
이세돌이 둔 신의 한수를 별거 아닌 수로 판단하게 계산해서 그렇게 된것이다.
사실 신의 한수는 아니다, 우연히, 알파고가 틀리게 예상하는 지점에 놓은 것 뿐이다. 
거기가 알파고의 예측이 틀리는 지점이라고 알고 뒀을 리는 없다. 
그리고 그걸 버그라고 부르는 건 더더욱 아닌거 같다. 
구글에서는 이걸 신경망에 구멍이 났다고 표현했다. 맞는 표현이다. 
혹자는 오버피팅이라고 얘기하는데 나는 꼭 그렇게 볼 수는 없다고 생각한다. 
아래 그림을 보자. 아래 처럼 네모에 대한 학습데이터가 하나 더 있었다고 치자.

<그림 7>
그러면 기계는  위와같이 구분선을 그어서 갖고 있을 것이다. 이렇게 학습되었다면, 삼각형인 신의 한수에 대해 

<그림8>
위의 그림처럼 예측 할 때 아래쪽 (즉 좋은 수)로 분류하고 거기에 맞게 계산해서 대응했을 것이다. 
기존의 머신러닝에서는 위처럼 정교하게 구분선을 긋기 어렵다. 
신경망이 심층화 되면서 위처럼 정교하게 구분선을 그을 수 있게 된 것이다. 
그렇지만 그건 그림7처럼 학습데이터가 있을 때 얘기다. 
학습되지 않은 데이터이기 때문에 오류를 범했다고 하는것도 반만 맞는 말이다. 
모든 데이터를 학습하면 100%의 정확도를 가질 수 있다. 
그런데 그것은 불가능하다. 
어떤 기계학습도 모두를 다 학습하는 건 없다.
학습된 데이터를 바탕으로 학습하지 않은 데이터를 예측 하는 것이 기계학습, 머신러닝이다. 
알파고는 이세돌보다는 아니 그 어떤 인간보다는 많이 학습했다. 
그래서 인간보다 오류가 적게 판단하는 것이다. 
이걸 버그라고 부를 수 있을까?

바둑은 복잡하다.  바로 옆 데이터 (바둑판의 옆을 의미하는 것이 아니다)도 다른 결과값을 가질 수 있다. 
그걸 다 학습할 수는 없다. 그렇다고 제각각 (체크 무늬?) 인 것도 아닌것 같다. 

그래서 알파고는 이세돌 보다는 많이 학습했다. 
그래서 알파고가 이긴다고 본 것이다. 

모든 수를 다 학습하지 않는 한 100% 정확하게 구분을 할 수는 없다.  
다만, 바둑에 있어서는 그 정확도가 이미 사람을 앞선다고 생각된다. 

사람이 맞고 기계가 틀린 상황에서 둔 한수가 얼마 승부에 영향을 미치는지는 잘 모른다. 
하지만, 누적된 정확도가 전체 승부의 가능성을 높인다고 보기에 
오늘도 알파고의 승리를 예상해 본다. 



덧글

  • dex 2016/03/16 08:53 # 삭제 답글

    본문 설명은 interpolation의 한계가 원인이다.라고 하신 듯...

    제 생각에는 extrapolation 영역의 문제에서 기계학습의 한계가 아닐까 싶네요.
  • 최대선 2016/03/20 19:42 #

    구분이 있을까요? 바둑에서 어떻게 구분을 해야 할지 잘 모르겠습니다. 사실 바로 인접한 것도 전혀 다른 클래스인듯하여..
    그리고 이걸 polation이라고 하기에는..좀
댓글 입력 영역