기계학습에 대해 알려주마

프로그래밍된 지능에서 가장 관건이 되는 것은 평가 함수를 정확하게 만드는 것이다. 바둑으로 치면 형세를 얼마나 정확하게 수치화하느냐가 관건이 되겠다. 20수 앞을 내다보든 50수 앞을 내다보든 중요한 것은 판의 유불리를 정확하게 계산하는 일이다. 이 판단이 정확하지 않다면 정확하지 않은 판단력으로 50수 앞을 내다보는 일이 무슨 의미가 있겠는가. 단지 20수, 50수 정도가 아니라 모든 가능한 경우의 수를 다 따질 수 있다면 컴퓨터가 완벽하게 형세를 판단할 수 있겠지만 둔 자리에 또 돌을 둘 수도 있는 바둑의 경우 경우의 수를 모두 따져보는 것이 사실상 불가능하다. 양자 컴퓨터가 나온다면 얘기는 달라질 수도 있겠지만 현재 기술로는 명백하게 불가능하다. 그동안 바둑이 컴퓨터에게 넘지 못할 산이었던 것도 다른 보드 게임과 달리 컴퓨터의 능력으로 모든 경우의 수를 다 따져 볼 수 없었기 때문이다. 그러니 동원되는 가장 쉬운 방법은 적당히 계산할 수 있는 경우의 수 중에서 대충 유리해 보이는 것을 선택하는 것이 되겠다. 여러가지 경우의 수중 가장 유리해 보이는 것을 판단하는 정확도가 바둑 인공지능의 수준을 결정하게 되는 것이다.  방법은 여러가지가 있을 수 있다. 바둑의 원리를 잘아는 프로그래머가 하나하나 경우에 따른 착지점의 가치를 매겨 줄 수도 있고, 정석에 대한 다양한 데이터를 넣어 다음 착지점을 결정할 수도 있을 것이다.  이러한 것들도 컴퓨터 사이언스에서는 인공지능이라 부른다. 사람이 지능을 프로그래밍해준 것이다. 이러한 프로그래밍 방법은 명확한 논리적 절차를 갖는다. 컴퓨터가 어떤 선택을 했을 때 왜 그런 선택을 했는지 개발자는 자신이 프로그래밍한 로직으로 설명을 할 수 있는 것이다. 오랫동안 컴퓨터의 인공지능이란 이런식으로 개발되어왔으며 그 결과 인공지능의 수준이란 게 인간에게는 그저 하찮게 보이는 정도에 그치고 말았다. 알파고의 대국 이전까지 바둑계의 사람이든 아니든 기계가 인간을 이길 줄, 아니 이기고 지고를 떠나 저렇게 자유분방하고 창의적으로 플레이할 줄 예상한 사람은 많지 않았던 것도 우리가 이미 접한 인공지능이란 것의 수준 때문이었다.

이런 수준의 인공지능을 접한 사람들은 알파고의 패턴이 익숙하지 않아서 그렇지 익숙해지면 사람이 손쉽게 가지고 놀 수 있을 거라 이야기하기도 한다. 그런데 알파고는 기존의 프로그래밍과 메커니즘이 완전 다르게 프로그래밍 된 지능을 가지고 있다.

결론적으로 알파고가 어떤 착지점에 돌을 놓았을 때 왜 그런 돌을 놓았는지는 알파고를 개발한 프로그래머도 알 수가 없다. 어떻게 그런 일이 가능한지 이야기해보자.

우선 기계가 학습을 한다는 것의 이미를 알아야한다. 알파고는 바둑을 학습하는 인공지능이라는데 바둑을 학습한다는 건 너무 막연한 말이다. 정확하게 말하면 위에서 말한 평가 함수를 학습을 통해 스스로 더 정확하게 조율해 나간다고 볼 수 있다.  즉 판세를 판단하는 판단력을 학습한다.  어떻게 학습하냐면 방대한 데이터를 원리를 따지지 않고 승패만을 기준으로 가치를 매기는 방식으로 학습한다. 이런 모양일 때 지는 경우가 많았다면 불리하게 판단하고, 이기는 경우가 많으면 유리하게 판단한다. 이기는 경우가 많아 좋게 평가했는데, 지는 경기가 생기면 생각보다 좋은 형세가 아니구나 판단하고 좋게 생각했던 것을 안 좋은 방향으로 수정해 간다.  바둑을 두면 어떤 경기든 서로 겹치는 기보다 없다는 사실은 중복 데이터가 없다는 것으로 컴퓨터가 학습하기에 더 없이 좋은 조건이다. 중복없는 방대한 데이터를 승패를 기준으로 유불리의 가치를 매기고 이를 다시 조율하기를 반복한다. 이게 기계 학습의 요약이다.

중요한 포인트는 왜 유리한지를 컴퓨터는 생각하지 않는다는 것이다. 그냥 특정 모양의 돌에서 이기는 경기가 많았다면 유리하게 가치를 매긴다. 어떤 돌의 모양에서는 이기는 경기와 지는 경기가 확률적으로 비슷하게 나왔다면 승부랑 상관 없는 지점이므로  지금 그 지점에 돌을 두지 않는다. 이 지점에 돌을 두는 게 어떤 맥락에서 나에게 유리하게 작용하는지에 대한 아무런 처리가 없다. 그래서 컴퓨터가 들여다본 데이터를 모두 분석할 수 없는 프로그래머는 알파고가 왜 저 지점에 돌을 두는지 설명할 수 없고 그럴 필요도 없다.

곰곰히 생각해보면 인간도 저렇게 학습하는 경우가 많다. 나중에 알게되니 이해가 안되면 일딴 외우는 식의 학습이 우리가 한 학습의 구할이다. 우리는 생명체와 무생명체를 논리와 그 정의에 입각해 판단하는 게 아니라 그냥 판단한다. 우리의 많은 판단은 논리적인 절차에 따르는 게 아니라 경험에 바탕을 둔 즉각적인 반응에 의한 것이 대부분이다. 기계학습은 인간의 이런 습성에서 아이디어를 얻어 이유와 논리를 배제하고 축적된 경험(데이터)을 통해 가치를 매기거나 판단 기준 만드는 인공지능의 구현 방법론이다.

자 이제 사람들이 하도 이세돌이 이기기를 희망하니 내가 그 비법에 대해 이야기 하겠다. 이세돌이 이글을 볼 가능성은 없지만 어쨌든 이세돌은 세겨들으시라. 우선 이세돌은 컴퓨터랑 싸우는 게 아니다. 그동안 바둑을 둔 모든 인간들이랑 싸우는 것이다. CPU 1202개는 중요한 것이 아니다. 알파고가 학습한 데이터가 문제다. 무수한 인간들이 바둑을 둔 그 방대한 데이터가 알파고의 판단 근거다. 그리고 알파고는 그 원리를 모른다. 돌의 모양과 승패의 결과를 연관시켜 가치를 매겨 놓았을 뿐이다. 그러니 일반적으로 불리하다고 평가되는 모양, 가치절하되는 모양 중 자기는 이상하게 승률이 좋았던 패턴을 잘 생각해 보시기 바란다.  알파고가 평가 절하하고 있을만한, 하지만 자신은 승부를 걸 수 있는 판세에 대해 고민해 보시기 바란다. 알파고가 학습한 데이터는 인류의 바둑 기보이고 그렇다는 것은 결국 알파고의 판단 근거 안에는 당연히 인류의 오류까지 포함되어있기 때문이다.

하지만 이런 주문은 이세돌에게 결국 인류를 뛰어넘으라는 것과 다를바 없는 것이어서, 이세돌에게 굳이 그렇게 까지 주문해서 이기길 희망해야하는 것인가 하는 생각을 하게 되는 것이다. 그보다는 인류가 그동안 축적해온 지혜를 편견없이 활용하면 이렇게 창의적이고 아름다운 바둑을 둘 수 있구나, 알파고를 그렇게 즐길 수는 없는 것일까. 새로운 영감을 얻고 인식을 확장해 그동안 축적해온 인류의 지혜위에 새로운 지혜를 얹힐 수 있는 기회로 삼을 수 있지 않을까 그런 생각이다. 네트워크에 연결되어있고 CPU를 몇개 쓰고 몇수를 내다보니 불공정한 경기라고 얼굴을 붉히는 것은 너무 못난 인류의 모습이다.

 

 

 

 

기계학습에 대해 알려주마

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중