‘알파고’는 어느덧 인공지능과 동의어가 됐다. 의료, 법률, 금융과 같은 전문분야는 물론이고, 축구나 예능에서조차 인공지능을 뜻하는 용어로 알파고가 쓰인다. 심지어 최근에는 인간이 제공한 데이터 없이, 무(無)에서 출발해서 혼자 가상 대국을 하며 스스로 기력을 쌓았다는 알파고 ‘제로(Zero)’가 발표됐다. 알파고 제로는 고작 사흘을 학습한 뒤 이세돌 9단을 물리친 알파고를 100대 0으로 이겼다. 인류가 수천 년에 걸쳐 축적한 바둑 실력을 스스로 돌파한 지능은 과연 어느 정도로 똑똑할까.
인간의 직관이나 자의식이 어떤 원리로 발현되는지 알고 있거나 밝혀졌다고 들은 사람이 있는가. 아무도 모르는 비밀을 구글이나 천재적인 인공지능 학자들이 파헤쳐서 판도라의 상자라도 열었다고 말한다면, 뭘 잘 모르거나 혹세무민(惑世誣民) 하려는 게 아닐까 싶다.
이번에 새롭게 업그레이드 된 알파고 제로에 대한 세간의 관심이 뜨겁다. 스스로 학습하는 능력을 두고 ‘소름끼친다’는 표현을 쓰기도 한다. 그럴수록 그 원리와 능력치를 최대한 과학적으로 살펴볼 필요가 있다.
구글 딥마인드 팀은 알파고 제로가 역사상 가장 강력한 바둑 플레이어라고 강조했다. 지금까지 개발된 알파고는 총 4가지다. 2015년 판 후이(Fan Hui) 2단을 이기고 2016년 과학학술지 ‘네이처’에 실린 알파고 ‘판(Fan)’, 2016년 3월 이세돌 9단을 4대 1로 이긴 알파고 ‘리(Lee)’, 올해 5월 커제 9단을 3대 0으로 이긴 알파고 ‘마스터(Master)’, 그리고 이번에 알파고 제로다.
구글 딥마인드 팀은 알파고 제로의 연구결과를 ‘네이처’에 발표하면서 공식 블로그를 통해 기존 알파고와 다른 알파고 제로의 장점을 세 가지로 설명했다.
[ 장점 1 ] 신경망 통합
구글 딥마인드 : 알파고 제로는 하나의 신경망을 사용합니다. 기존의 알파고 버전은 다음 수를 선택하기 위해 ‘정책망’을 사용하고, 각 수의 위치에 따른 승률을 계산하기 위해 ‘가치망’을 사용했습니다. 알파고 제로에서는 이 두 가지가 합쳐지면서 선택과 계산이 좀 더 효율적이게 바뀌었습니다. 또 알파고 제로는 바둑을 빠르게 무작위로 끝까지 둬 보는 ‘롤아웃(rollouts)’을 제거했습니다. 그 대신 고품질의 신경망을 이용해 수에 따른 승률을 계산하고 있습니다.
알파고는 바둑에서 최적의 수를 찾는 컴퓨터 프로그램이다. 이미 알파고 이전에도 수십 개의 유사 프로그램이 있었는데, 기본 원리는 현재 판의 모양을 입력(x)해서 가장 이길 가능성이 높은 지점을 출력(y)하는 함수(F)를 만드는 것이다.
인간은 다년간의 경험을 통해, 판의 모양에 따라 어떤 곳에 돌을 두는 것이 이길 가능성이 높다는 직관을 갖고 있다. 이 직관으로 게임을 한다. 컴퓨터도 판의 모양을 패턴으로 보고 다음 수를 결정할 수 있겠지만, 확실한 방법은 둘 수 있는 모든 지점에 대해 실제로 끝까지 둬보고 이기는 지점에 두는 것이다.
즉 내가 둘 수 있는 모든 지점에 대해 상대방이 둘 수 있는 모든 지점, 또 그에 대해 내가 둘 수 있는 모든 지점 등과 같이 끝까지 경우의 수를 다 따져보면 승패를 알 수 있는 지점에 도달한다. 그 중에서 이긴 지점에 해당하는 경로의 첫 수를 다음 수로 정한다. 이것을 ‘트리탐색(Tree Search)’ 알고리즘이라고 한다.
문제는 이런 방식으로 모든 경우의 수를 다 따지는 것은 시간 상 불가능하다는 사실이다. 바둑 한 경기 당 경우의 수가 10170개 이상 존재한다. 따라서 실제로는 트리의 모든 분기를 다 시도하지 않고 확률적으로 일부만 따지는 ‘몬테카를로 방식’과, 트리의 끝까지 다 해보지 않고 도중에 그 이후의 승률을 추정하는 ‘경험 함수(heuristic function)’를 사용해왔다.
기존의 알파고는 이를 두 개의 함수로 나누고 두 가지 종류의 심층신경망으로 구현했다. 즉 우리가 만들고 싶은 바둑 프로그램 F(x)를 f(p(x), v(x))로 만들었다. 함수 f는 ‘몬테카를로 트리탐색(MCTS·Monte Carlo Tree Search)’ 알고리즘이고, 함수 p는 ‘정책망(policy network)’으로 구현된 분기결정 경험 함수, 함수 v는 ‘가치망(value network)’으로 구현된 승률계산 경험 함수다. x는 바둑판의 모양에서 얻어진 특징값이다.
알파고 제로는 이렇게 정책망과 가치망으로 분리된 승률평가 경험 함수를 하나로 단순화 했다. 하나의 심층신경망 내에서 두 가지 함수의 값을 테스트함으로써 속도를 높이고 오류를 줄였다. 이것은 두 번째 설명할 새로운 강화학습 알고리즘을 가능케 했다.
[ 장점 2 ] 셀프 플레이(self play) 강화학습
구글 딥마인드 : 알파고 제로는 스스로가 교사가 되는 새로운 형태의 강화학습을 합니다. 시스템은 바둑 게임에 대해 아무것도 모르는 신경망으로 시작합니다. 알파고 제로는 이 신경망을 강력한 검색 알고리즘과 통합해 자체적으로 게임을 반복합니다. 게임을 할수록 수의 이동과 게임의 승률을 예측하는 신경망이 정확해지고 능력이 향상 됩니다.
앞서 기존의 알파고는 정책망과 가치망으로 구현된 두 개의 승률계산 경험 함수를 사용한다고 했다. 이렇게 학습된 두 개의 신경망을 이용하면 MCTS 알고리즘으로 바둑 게임에서 다음 수를 계산하는 프로그램이 완성된다.
기존 알파고는 이 두 함수를 만들기 위해 영상인식에 널리 사용되는 심층신경망인 콘벌루션 신경망(CNN·Convolutional Neural Network)을 16만 개의 기보로 학습시켰다. 16만 개의 기보도 상당히 많은 데이터이기는 하지만 바둑의 형세를 모두 포함하기에는 역부족이다. 때문에 이렇게 만든 함수가 완벽할 리 없었다.
콘벌루션 신경망
영상인식을 위한 심층신경망(DNN)으로 잘 알려져 있다. 학습에 의해 자동으로 결정된 다양한 콘벌루션(하나의 함수와 또 다른 함수를 반전 이동한 값을 곱한 다음, 구간에 대해 적분해 새로운 함수를 구하는 수학 연산자) 필터를 층으로 쌓아 주어진 영상을 인식하는 데 필요한 특징을 자동으로 추출한다.
그래서 추가적으로 도입한 기술이 로봇의 제어나 의사결정에서 활용되는 강화학습이었다. 즉, 알파고 프로그램을 복제해서 하나는 검은 돌의 수를 계산하고, 다른 하나는 흰 돌의 수를 계산하면 두 프로그램으로 바둑 게임을 할 수 있다. 그 승패에 따라 이긴 프로그램의 함수에는 보상을 주고, 진 프로그램의 함수에는 벌을 주는 방식으로 함수를 개선시켰다.
물론 보상과 벌은 은유적인 표현이다. 실제로는 신경망의 가중치를 올려주거나 낮추는 식으로 매개변수를 보정한다. 즉, 무작위로 설정된 함수 F0으로부터 16만 기보 데이터를 사용해 F1을 만들고, 이를 강화학습으로 조정해 F*를 만든 것이다.
그런데 알파고 제로는 16만 기보를 사용해 F1을 만드는 과정을 생략하고 무작위로 설정된 함수 F0으로부터 최종 함수 F*를 만들었다. 아무것도 모르는 두 개의 알파고 제로 프로그램이 대국을 반복하면서 그 결과를 가지고 최종 함수를 도출해 기존 알파고를 모두 패배시켰다.
상식적으로 기본 데이터로 초기화된 함수를 최적화하는 것이 무작위 함수에서 시작하는 것보다는 더 효율적일 것처럼 보인다. 하지만 알파고 제로는 초반의 학습 효율성을 조금 포기하고, 부적절한 특징값에 의해 왜곡될 수 있는 초기화를 피했다. 그리고 학습 중간에 MCTS 방식으로 이후 승률을 미리 보여줄 수 있는 개선된 강화학습 알고리즘을 사용함으로써, 함수를 좀 더 빠르게 개선하고, 정확하고 안정된 학습을 수행했다.
[ 장점 3 ] 흑백 돌을 그대로 입력
구글 딥마인드 : 알파고 제로는 바둑판 위 검은 돌과 흰 돌의 위치를 입력으로 사용합니다. 이전 버전의 알파고는 사람이 정의한 다양한 특징을 입력으로 사용했습니다.
세 번째로 알파고 제로는 흰 돌과 검은 돌의 위치 정보만 입력으로 사용했다. 기존의 알파고는 사람이 정한 다양한 특징을 입력으로 사용했다. 활로의 수, 사석의 수, 불가능한 수의 위치 등을 일일이 점수로 매겨 입력값으로 썼다. 알파고 제로는 사람이 정한 특징값을 기반으로 함수를 만들 때 생길 수 있는 오류를 배제하기 위해, 흑백 돌의 바둑판 영상을 그대로 입력했다.
이때 원시 데이터로부터 학습을 용이하게 하기 위해 콘벌루션 신경망의 최신 구조를 도입했다. 입력을 흑백 돌의 바둑판 영상으로 한 ‘레즈넷(ResNet)’ 신경망을 사용해서 더 많은 신경망 층을 쌓음으로써 더 정확한 함수를 얻었다. 이런 효율화를 통해 기존의 알파고가 48개의 TPU(Tensor Processing Unit)칩을 사용했던 것과 달리, 4개의 TPU 칩만으로 알파고 제로를 사흘 만에 학습시키는 것이 가능해졌다.
많은 사람들이 최근의 인공지능은 고성능 컴퓨터와 데이터만 많으면 완성된다고 여기고 있는데, 알파고 제로의 핵심은 이처럼 그 둘이 배제된 알고리즘에 있다는 점에서 새로운 돌파구를 열었다고 볼 수 있다.
인공지능 핵심은 알고리즘
알파고 제로에 적용된 인공지능 기술은 바둑 게임에서만 유효하다. 알파고 제로는 바둑 게임에서 승률평가 경험 함수를 최적화 한 것일 뿐이다. 이와 같이 통제된 폐쇄 영역에서 성공한 인공지능이 현실의 개방 영역에서도 선형적으로 통할 것이라는 기대는 안일한 낙관론이다. 또한 바둑의 규칙에 따르는 승률평가 경험 함수에 기반한 트리탐색 알고리즘은 똑똑한 소프트웨어 개발자가 만들었다.
그렇다면 우리는 왜 진작 알파고 제로를 만들지 못했을까? 오픈소스 트렌드에 맞춰 인공지능 분야의 기술이 대거 공개돼 있는데도 말이다. 아마도 막연하게 무작위 함수로부터 심층신경망을 강화학습으로 만들 수는 없다는 생각에 시도조차 하지 않고 포기했거나, 간단한 가능성만 확인하고 완성시키지 않은 채 중단했을 가능성이 높다.
이제 관건은 차별화된 결과를 내는 것이다. 별다른 전문지식이 없어도 오픈소스의 데이터만 바꾸면 대충 쓸 만한 결과가 나오는 상황에서, 앞으로는 공개된 인공지능 기능을 활용해 더 좋은 알고리즘을 개발하는 능력이 중요해질 것이다.
알파고 기술을 활용한 실질적인 제품이나 서비스는 구글 딥마인드 팀조차도 아직 완성하지 못했다. 알파고 제로의 강화학습 방법은 양질의 데이터를 확보하기 어려운 분야에서 특히 유용할 것이다. 의료, 법률, 투자, 예측 등의 분야에서 문제를 발굴하고 궁극적으로는 불치병이나 에너지 문제와 같은 인류의 난제를 푸는 인공지능의 활용 방안을 모색해야 할 시점이다.