저는 인공지능 전문가는 아닙니다만,
취미로 종종 가지고 노는 엔지니어입니다.
대학시절 축제 때 인공지능 오목 프로그램으로 내기 오목으로 돈도 좀 챙기고 그랬죠...
알파고에 관심들이 많아져서,
무슨 아주 새롭고 대단한 기술이나 터미네이터 VS 인간 양상으로 -_- 받아들이시는 분들도 계신듯 하여,
간단히 흥미위주의 잡학 수준 정도로 설명 드려볼까 합니다.
탐색과 평가함수
인공지능은 꽤 여러 분야가 있는데, 그중 다양한 가능성 중 최적의 수를 선택하는데 사용되는 것을 탐색 알고리즘이라고 합니다.
말은 거창한데, 그냥 전부 다 해보고 제일 좋은 것을 고르는 겁니다.
제일 좋은 것을 고르려면, 여러 가능성 중 어떤 것이 더 나은지 판별할 수 있어야 하는데,
이를 평가 함수라고 합니다.
즉, 가능한 모든 수를 다 전개해보고 각각의 상황에 대해 평가함수를 실행한 다음, 제일 높은 점수가 나오는 수를 선택하는 것이지요.
물론 알파고도, 이러한 탐색 알고리즘이 들어가 있습니다만,
여기까지만 있다면, 중학생도 만들 수 있을 만큼 간단합니다.
(물론 평가함수를 제대로 짜려면 바둑 룰에 대한 이해가 좀 필요하긴 하겠죠.)
이러한 접근법의 문제점은, 체스나 장기 처럼 경우의 수가 별로 많지 않은 경우엔 일반 컴퓨터로도 손쉽게 사람을 발를 수 있지만,
경우의 수가 너무나 큰 경우엔, 도저히 논리적으로 모든 분석을 제한된 시간 내에 마치고 최적의 수를 결정할 수 없다는 점입니다.
이런 경우 인간은 "감"을 이용합니다.
감을 이용해서, 정말 중요한 경우의 수를 추려낸 다음, 그 수들에 대해서만 대뇌를 이용해 연산을 수행하죠.
그렇다면 알파고가 "감"이란게 있느냐 하면, 뭐 그런건 아닙니다만, 일단 설명을 이어가겠습니다.
바둑판은 가로 세로 19줄 씩 있습니다. 즉 첫수를 착수할 수 있는 위치는 361군데 이고,
그 다음수는 360, 그다음은 359 이런식으로, 총 가능한 경우의 수는 (19x19)! = 121,645,100,408,832,000 이나 됩니다.
무려 12경이라는 낯선 숫자가 되지요.
그런데, 바둑은 중간에 따내게 되면서 빈공간이 다시 생기게 되므로 실제는 이보다 더 많은 경우의 수가 나올겁니다.
하지만 대충 봐 줘서, 이정도라고 하죠.
1GHhz CPU는 1초에 1,000,000,000 번 덧셈을 할 수 있습니다.
물론 현 대국상황을 평가하는 함수는 덧셈 보다는 훨씬 더 복잡하고 오래 걸리지만,
대충 -_- 그렇게할 수 있다 칩시다. (덧셈 한번 하는 거나, 대국 상황의 유리한 정도를 측정하는 것에 동일한 시간이 걸린다고 가정)
그렇게 할 수 있다 쳐도, 1Ghz CPU가 모든 가능성을 계산하려면 1,407일, 즉 4년 가까이 걸립니다.
쿼드 코어로 돌린다면 1년이 될거고, 쿼드 코어 컴퓨터 100대를 그리딩 한다면, 오버헤드 포함해서 5~6일 정도 걸릴겁니다.
(이것도 아주 이상적으로 오버로드가 없다고 가정한 경우입니다. 실제로는 컴퓨터 두대를 갖다 놓으면 2배 빨라질 것 같지만, 협력과 분산으로 소비되는 비용 때문에 실제로는 140%정도 나와야 잘 나온겁니다.)
어쨌든 이렇게 하면, 이세돌 할아버지가 와도 못 이깁니다.
모든 경우의 수를 전부 체크 해보고 두니까요.
하지만 문제는 바둑에는 총 시간 제한과 초읽기가 있다는 점이죠.
즉, 컴퓨터는 별 의미도 없는 쓸데 없는 수들을 전부 연산하느라, 제한 시간내에 최적의 수를 고르지 못하고,
단지 그 시간 동안 탐색한 것 중 제일 좋은 차선의 수를 착수할 수 밖에 없습니다.
소거법과 신경망
정말 말도 안되는 수들을 걸러내어 탐색의 수를 대폭 줄여, 탐색의 성능을 높히는 기법을 소거법이라고 합니다.
그런데, 이게 정말 말이 안되는 수인이 되는 수인지 어떻게 알까요?
사람은 "감"으로 압니다만, 컴퓨터는 그럴 수 없죠.
이 때, 알파고는 신경망이라고 하는 다른 인공지능 기술 분야를 씁니다.
이름은 거창한데, 간단합니다.
고양이 사진을 수백장 보여주고, 고양이라고 가르쳐 주면, 처음 보는 고양이 사진도 고양이라고 추론할 수 있게 되는거죠.
좀더 과게 답게 쓰자면, 특정 2차방정식을 만족하는 x, y값을 수백개 알려준 뒤,
이를 전부 데카르트 2차원 좌표계에 점을 찍어보면, 알려주지 않은 x값에 대해서도 y값을 예측 할 수 있는 곡선의 모양이 대략적으로 나올겁니다.
신경망이 하는 일이 바로 이것입니다.
작동원리는 뇌세포의 연결을 모방하는 것인데요,
인간의 뇌세포, 시냅스들 사이의 연결 구성은 사람마다 각기 다르게 발달합니다.
자주쓰는 부위들이 서로 더 강하게 연결되며, 하나의 논리 회로를 구축하게 됩니다.
인간은 학습을 통해, 긍정적인 피드백이 있는 경우, 그 결과를 낸 회로의 연결 강도를 높히고,
실패한 경우, 회로의 강도를 조절해, 처음 보는 문제에 대해서도 정답에 이르도록 뇌세포의 연결을 재 설정합니다.
이걸 그냥 컴퓨터로 똑같이 시뮬레이션 하는 거죠.
학습의 기본은, 입력을 주고, 의도한 결과치를 제시한 다음,
오차가 있는 경우, 이를 역전파 하여, 가상 시냅스들의 연결 강도를 조절하는 것입니다.
이를 인간의 뇌를 기준으로 자기 조직화라고 하고, 쉽게 말해 "학습" 이라고도 합니다.
이런 신경망의 최대 장점은, 일단 연결이 구성되고 나면, 입력 신호를 주었을 때, 연결 강도에 따라 단순히 곱셈들만 일어나 출력 시냅스의 값이 나오는 것이기 때문에, 입력이 무엇이든 동일한 속도로 작동하며, 매우 빠르게 구동된다는 점입니다.
우리가 아주 복잡한 동작들을 동시에 해 낼 수 있는 이유는, 이러한 신경망이 일단 한 번 구성되어, 대뇌가 개입하여 "생각" 이나 "연산"을 할 필요가 없이 바로 결과가 나오는 신경망이 이미 자기 조직화 되었기 때문입니다.
알파고는 유의미한 수와, 무의미한 수에 대해, 신경망과 무수한 대국(입력)과 승패(기대값)을 신경망에 전파시켜 학습 시킬겁니다.
물론 여기에는 좀 더 기술기술 구글구글스러운 뭔가가 훨씬 더 있겠지만, 기본 뼈대는 크게 다르지 않으리라 짐작합니다.
알파고는 현 대국 상황에서 가능한 착수점들에 대해, 이 신경망을 이용해 "택도 없는" 허수들을 걸러내고 탐색을 진행 할 겁니다.
그리고 착수 후, 그 다음 사용자의 착수 후, 대국 유리한 정황을 평가 한 후, 이전의 선택에 대해 재 학습을 시키는 작업을 반복적으로 진행하겠죠.
즉, 신경망을 이용하여, 탐색 수를 줄이고, 결과를 다시 신경망에 반영함으로써, 알파고는 계속해서 대국을 진행하거나, 남의 대국을 보면서 학습할 수 있을 겁니다.
어때요? 생각보다 간단하죠?
세부사항엔 복잡한 것들이 많이 들어가겠지만, 알파고는 이런 방식으로 작동할 겁니다.
이 전략의 단점
보통 이러한 신경망의 최대 단점은 스스로 고안한 목적에 대한 학습 계획을 세울 수 없다는 것입니다.
입력과 결과를 일일히 사람히 설계해서 학습시켜야 하지요. (알파고의 경우, 대국의 유리한 정도를 평가하는 함수를 프로그래밍 한 사람이 되겠죠)
알파고가 아무리 바둑천재가 된 들, 다른 게임을 할 수 있거나, 고양이를 알아본다거나, 스카이넷을 만들어 인류를 점령할 수는 없다는 뜻입니다.
신경망은 "창의성" 영역에선 젬병이며, 일부 딥 러닝들이 스스로 학습목표를 일부 설정할 수는 있지만, 그것도 창의성과는 거리가 멉니다.
학습의 강도가 지나치게 되면, 로직화 되어 융통성을 잃는 단점도 있습니다.
추가 잡담 1.
만약 컴퓨터가 A-Z까지의 글자를 랜덤하게 계속 출력한다고 해봅시다.
이것만 가지고도 언젠가 컴퓨터는 벤허나 백경같은 소설을 쓸수 있을 겁니다.
만일 양자 컴퓨터를 이용한다면, 순식간에 노벨 문학상에 해당하는 작품들을 수백편도 넘게 쓸 수 있을 겁니다.
하지만, 그 글의 아름다움을 평가하는 평가함수가 과연 존재할 수 있을까요?
추가 잡담2.
제 생각이요?
이세돌이 이깁니다. 신경망은 의외성을 보이는 문제에 쥐약이니까요. 그런데 그분이 워낙 그쪽으로 강하지 않습니까?
하지만, 언젠가 컴퓨팅 연산 속도가 너무나도 강력해져서, 신경망을 이용한 소거법을 안써도 될 정도로 빠른 컴퓨터가 나온다면, 인간에겐 승산이 없다고 봐야겠죠. 아직은 아닙니다.
컴퓨터 과학 분야에서 30년동안 거의 아무런 진보도 없는 (딥러닝이라는 말장난 빼고) 유일한 분야가 인공지능이구요,
거기엔 이유가 있습니다.
똥글 싸질러서 죄송합니다.