베이지안 딥러닝이 보여준 인공지능의 한계와 미래

매일 경제 신문에 영국에 있는 인공지능 스타트업 하나와의 인터뷰 기사가 실렸는데 내용이 참 흥미롭다. 알파고에 쓰인 딥러닝 기술이 가진 문제점을 지적하고, 그 문제점을 어떻게 수학적으로 해결하려고 하는지, 그래서 어느 분야에 활용할려고 하는지에 대한 개략적인 내용인데, 솔직히 인터뷰 내용만 보면 아직 사업 모델은 없고, 박사들 여러 명이 모여서 연구만 하고 있는 것 같기는 하다. 그래도 연구 아이디어 자체는 굉장히 재밌는 내용이라서, 그리고 필자가 쓸려고 하는 방법이어서 여러 사람과 공유하고 싶다.

 

1. 알파고의 명백한 한계와 극복 과정

2016년 3월 9일, 알파고가 이세돌 9단과 대국을 시작하고 30분도 지나지않아 바둑 고수들은 이세돌 9단의 패배를 염두에 두기 시작했다. 그리고 1시간이 채 안 되어서 알파고의 초반 착수점들이 대국 중후반에 얼마나 큰 영향을 미치는지를 본 바둑 전문가들은 알파고의 실력에 혀를 내둘렀고, 이세돌 9단의 패배가 확정되자 인간이 CPU 1202개를 어떻게 이기냐는 “치졸한 변명”이 나오기 시작했다.

그렇게 내리 3연패를 하고 위축되었을 법한 이세돌 9단이 4국에서 “신의 한 수”라고 격찬을 받은 78수를 바탕으로 불계승을 이끌어냈다. 그 때 알파고 시스템이 어떻게 돌아갔는지 아래 구글 딥마인드 CEO 데미스 하사비스의 캠브리지 대학 강연을 들어보자.

 

33분쯤부터 4국 78수 이야기를 하는데, 이 수를 알파고가 0.007%의 확률로 예측했다고 한다. 말을 바꾸면, 예측을 못했다는 이야기다. 알파고 시스템 자체가 주어진 제한 시간 안에 착수를 해야된다는 바둑의 룰 때문에 높은 확률의 수를 예측하고, 그 수 다음에 일어날 상황을 또 예측하고, 또 그 다음.. 이런식으로 몇 십 수 앞을 예측하는 방식으로 진행된다. (더 정확하게는 마지막 수를 먼저 예측하고, 거꾸로 그 전, 그 전, 그 전… 같은 방식으로 수를 예측하겠지만…) 그런데 느닷없는 수가 나타나니 새로운 계산을 처음부터 다시해야되는 상황이 온 것이다. 결국 그 혼란한 수 하나에 알파고의 계산 시스템은 무너졌고, 그 다음부터 황당한 수를 여러차례 두다가 패배하고 말았다.

하사미스 CEO는 이런 문제를 극복하기 위해서 혼란을 일으키면 점수를 받는 알파고를 하나 더 만들어서 원래의 알파고를 훈련시키는 방식을 활용했다고 한다. (위 Youtube 강연 38분쯤부터 나온다.) 필자가 몸 담았던 온라인 광고 시장의 리타게팅 (유저가 봤던 상품 중에 제일 끌릴만한 상품을 머신러닝으로 찾아서 배너로 보여주고 다시 쇼핑몰로 끌어들이는 광고) 상품에 머신러닝을 적용할 때도, 혼란을 일으키는 알파고처럼 Serendipity를 이끌어내는 알고리즘을 쓴다. 참고로 Serendipity는 “우연한 행운” 정도로 번역할 수 있겠는데, 머신러닝 알고리즘을 적용하다보면 데이터가 한쪽으로 쏠림 현상이 일어나고 이런 over-fitting (과적합)을 막기 위해서 뭔가 뚱딴지 같은 결과값을 몇 개 집어 넣어준다. 그런 Outlier 들 값을 얼마나 잘 고르냐에 따라 그 리타게팅 엔진의 퀄리티가 결정됨은 물론이다.

얼마나 연관관계가 높을지는 모르겠지만, 자연계에서 생물의 진화가 일어날 때도 언제나 돌연변이에서 시작한다. 그 돌연변이가 생태계에 적응을 더 잘 할 수 있는 특징이면  살아남을 것이고, 아니면 그 돌연변이가 갖고 있는 DNA 전체가 생태계에서 사라지게 된다.

알파고가 그렇게 잘 진화했는지, 2017년 5월에 커제 9단을 만나서는 단 한 번의 실수도 없이 완승을 이끌어냈다.

 

2. 혼란을 일으키는 알파고만으로 모든 인공지능의 문제가 극복될까?

혼란을 일으키는 알파고, 혹은 Serendipity를 만들어낼 수 있는 머신러닝 시스템으로 인공지능이 가진 모든 문제를 극복할 수 있을까? 솔직히 말해서, 주어진 시스템 안에서 나타나는 과적합을 막는 대안으로 Serendipity를 만들어내는 것 이외에 다른 아이디어는 없다. 필자만 없는게 아니라, 필자보다 월등히 뛰어난 전문가들도 마찬가지일 것이다.

여기서 핵심은 “주어진 시스템”이라는 표현이다. 인공지능 모델들이 “활약”하고 있는 상품군을 잘 살펴보면, 바둑처럼 정해진 룰과 구성이 짜여져 있는 곳에 국한된다. 처음 보는 “신의 한 수” 정도의 혼란이 아니라, 항상 불확실성이 존재하고 있는 경우에는 어떻게 될까? 인공지능 세계에서 가장 Hot Topic인 자율주행차를 예로 들면, 중앙선 반대편의 차가 갑자기 돌진을 하는데 뒷 차 속도도 빠르고, 피할려고 보니 2차선에도 공간이 없고 등등 운전 중에 생길 수 있는 다양한 불확실성을 모두 제어하려면 지금까지는 “경우의 수”를 열심히 만들어야 했다. 

CommitStrip.com에 올라온 만화에서 아주 적나라하게 묘사를 했는데, hundreds of “IF”s 라는 표현 자체가 무수히 많은 경우의 수를 고려하도록 시스템을 디자인했다는 뜻이다. 바둑판 안 같이 잘 짜여진 시스템 안에서라면 Neural network만으로 시스템이 스스로 학습하도록 만들 수 있을지 모르지만, 잘 짜여진 시스템 밖에서 나타나는 경우도 다 고려해야하면, 새로운 설정을 해주거나, 불확실성을 배우도록 알고리즘이 구성되어야 한다. 

인간이 새로운 룰을 배우는 과정을 보면 설명서를 읽거나, Trial-and-error를 통해서 여러번 반복적으로 유사 상황을 겪으며 Yes/No를 구분해내는 방식을 취한다. 인공지능도 마찬가지다. 시스템 자체가 바뀌가 되면 모델을 만든 데이터 사이언티스트가 새로운 룰을 입력하거나, 아니면 데이터를 쏟아부어서 Trial-and-error로 새로운 룰을 익히도록 만들어야한다.

그래서 등장한 토픽이 “Uncertainty in Deep Learning”이고, 여기에 쓰이는 방법론이 Neural Network (신경망 모델)를 진화시킨 Bayesian Neural Network다.

*참고
Bayesian 통계학은 기존의 확률을 놓고, 새로운 사건이 주어졌을 때 그 사건을 바탕으로 확률값을 변화시킨다는 아이디어에서 출발했다. 가장 쉬운 예를 들자면, 지금까지 동전을 100번 던져서 앞면이 60번, 뒷면이 40번 나왔다고 치면, 앞 면이 나올 확률을 60%로 잡은 다음, 다음번에 다시 동전을 던져보니 뒷면이 나오게되면 앞면이 나올 확률을 59.4%로 내리는 방식이다.

다른 글에서 설명했듯이 신경망 모델은 인간이 인지하는 변수와 인간이 찾아내고자 하는 결과값 사이에 다수의 가상 변수를 집어넣어서 결과값을 더 잘 찾아낼 수 있도록하는 알고리즘을 말한다. 여기서 가상 변수를 어떻게 쓰느냐에 따라 정확성이 차이가 나는데, Bayesian 버젼은 그 가상 변수들에 들어가는 가중치만 바꾸는 방식이 아니라, 중간에 다른 가상 변수를 생성하는 내용까지 포함된다. 새로운 환경이 주어지면 다른 방식으로 현상을 이해해야하고, 그걸 컴퓨터 프로그램으로 짜놓은 것이라고 이해하면 된다.

더 궁금하신 분은 아래의 논문들을 참조해주시면 되겠다. (언제 시간이 나면 논문 내용을 좀 쉬운 표현으로 정리한 글도 올려볼까 한다.)

논문: https://arxiv.org/abs/1703.04977

논문 설명한 블로그: http://mlg.eng.cam.ac.uk/yarin/blog_2248.html

도움되는 (좀 쉬운) 블로그: https://medium.com/towards-data-science/adding-uncertainty-to-deep-learning-ecc2401f2013

 

Bayesian 학회에 가면 자주 만나는 표현이 있다. “The importance of what we don’t know”, “The importance of unknown unknowns” 인데, “우리가 모르는 것들의 중요성”, “우리가 모르고 있는데 안 알려진 것들의 중요성” 정도로 번역하면 될 것 같다. Bayesian이 바로 그런 unknown들이 나타났을 때 우리의 인지 체계가 변화하는 방식을 잡아낸 통계 모델이고, 이걸 이제 신경망 모델에 적용해서 인공지능을 한 단계 더 진화시킬 수 있는 모델이라고 이해하면 좋을 것 같다.

 

3. 인공지능을 어디에 써야 할까?

기존의 인공지능 연구는 어떤 사물을 얼마나 잘 “인식”하느냐에 집중되어 있었다. 그림을 보고 어느 화가의 그림인지 맞추고, 도로 주행 중에 화면상의 물체가 사람인지, 신호등인지를 식별해내고, 여러 사진 중에 같은 사람을 찾아내고 등의 상품이 이미 시장에 나와있다. 이렇게 주어진 내용물 안에서 정확도를 높이는데만 집중하다보니, 정작 인공지능을 어디에 쓰는지에 대해서는 고민이 많이 없는 것 같다.

우선 온라인에서 유저들의 행동 데이터에 머신러닝을 적용하는 상품들이 이미 시장에 나온지 4-5년이 지났고, 요즘은 많이 고도화되고 있다. 또 게임 시장에서 인공지능을 활용해 더 똑똑한 인공지능 플레이어를 만들어내고 있다는 사실도 고무적이다.

한 발자국 더 나아가, 이제 베이지안이 머신러닝계에 도입되면 인간과 협력할 수 있는 인공지능도 나올 것이다. 지난 2017년 5월 구글 딥마인드 챌린지에서 번외 게임으로 바둑 “팀플”이 있었는데, 알파고 + 롄샤오 8단 팀이 알파고 + 구리 9단 팀을 이기는 경기를 보면, 구리 9단의 착수가 나올 때마다 알파고 자체적으로 계산한 승리 확률이 떨어지는 모습을 볼 수 있었다. 필자는 그 경기 후반부에 들어서 알파고와 구리 9단이 완전히 다른 두 개의 게임을 하고 있다고 생각하는 건 아닐까 착각이 들 정도로 둘의 “조화”가 안 좋았다는 생각을 했다. 아마 구리 9단과 함께 팀을 이룬 알파고가 구리 9단의 플레이 스타일을 알고 알고리즘 레벨에서 “협조”할 수 있었다면 결과는 많이 달라졌을지 모른다. 

자율주행도 인간 운전자와 자율주행차가 뒤 섞인 도로에서 다른 운전자와 “협조”할 수 있는 수준이 되어야 도로 위를 달릴 수 있게될텐데, 환경에서 나오는 불확실성, 인간의 반응에서 나오는 불확실성을 모두 감당할 수 있는 인공지능이어야 하지 않을까?

금융시장에서도 기존의 머신러닝이 못하던 “예측”을 해볼 수 있을지도 모른다. 지금까지 우리가 알고 있는 머신러닝은 주어진 환경 안에서만 작동하는, 불확실성을 고려하지 못하는 모델이었는데, 그래서 무한대의 불확실성을 갖춘 금융시장에서 “예측”을 하는데 합리적인 성과를 못 가져왔다. 그러니 베이지안으로 불확실성을 모델 내부로 끌어들일 수 있으면 결과는 상당히 다르게 나올 수 있다. 방금 검색해보니 뉴욕에서 이달 말에 관련 학회모임도 있다.

갑자기 든 생각인데, 배울게 너무 많아서 감당을 못 할 것 같다. 나 대신 러닝해 줄 알파고가 필요하다. 하하하

X