1679
2017-07-13 09:07:45
0
머신러닝이 가장 어려워 하는 부분을 짚어내는 부분이네요, 잘 만들면 논문 여러 편 나올듯 ㅋㅋ 몇몇 분들께서 머신러닝이 아니라 그냥 통계기법으로 가능한 것이 아닐까 라고 하셨는데 그렇지는 않을 듯 합니다. 여러 수를 내다보아야 하기 때문이지요.
가장 큰 어려움을 알려드리자면, 대다수의 초보적인 머신러닝 기법은 각각의 입력 - 출력 쌍이 독립적이라는 것을 전제로 합니다. 무슨 말인고 하니, 이미지 인식 같은 경우 이미지가 주어지면 그게 뭔지 맞추는 것이고, 게임은 현재 판세를 주면 다음 최적의 액션을 선택하는 식이죠. 그 전 이미지나 게임이 지금까지 어떻게 진행되어왔는가는 고려되지 않습니다. 알파고의 경우에도 게임을 진행하는 도중에는 러닝을 하지 않는다고 발표한 바 있습니다. 아무튼 요새 인기 있는 뉴럴넷, 정확히는 Feed-Forward Neural Network(FFNN) 가 가장 약한 부분이 입력 - 출력이 연속적으로(sequentially) 들어올 때 입니다. 이를테면 자연어 처리나 소리 데이터 등은 대응하기 어렵지요.
예로 드신 쿵쿵따 게임의 경우, 이번 판에 지금까지 어떤 단어들이 사용되었는지가 전략적 선택의 매우 중요한 열쇠가 됩니다. 인간이 사용하는 전략을 생각해볼까요? 대표적으로 특정 글자로 몰아가는 방법이 있는데, 이 경우 상대방이 낌새를 치면 역으로 낚아버린다든지, 혹은 그 글자로 가기 어려운 단어를 선택한다든지 하게 되겠죠. 또 게임이 굉장히 길게 진행된 경우, 앞에서 단어들이 사용되어버렸기 때문에 우월 전략이 바뀌게 됩니다.
즉 한 게임에서 랜덤하게 단어를 선택할 때 마다 승리확률과 패배확률이 변하게 됩니다. 물론 이걸 고려 안 해도 됩니다. 그건 설계자의 자유지요. 솔직히 이 고려 없이 의미있는 인공지능이라고 보기 어려울 것 같습니다.
우리의 인공지능은 그러므로 현재 내가 마주한 단어 뿐 만 아니라, 그 게임 내에서 지금까지 나왔던 단어들을 모두 고려할 수 있어야 합니다. 앞서 말씀드렸다싶이, 이 분야는 뉴럴넷과 여타 머신러닝 기법들이 잘 못하는 분야인데, 대표적으로 2가지 돌파구가 있습니다.
- 입력 변수의 차원을 늘려버린다 : 입력 자체를, 최근 나온 50개의 단어 이런식으로 만들어버리는 겁니다. 파라메터도 많아지고, 트레이닝도 굉장히 오래 걸리겠지만, 충분히 가능합니다. 사실 러닝 과정에서 가능한 모든 50개 열을 살펴보는 것은 불가능합니다. 그러나 뉴럴넷의 강점 중 하나는 강력한 generalization 능력으로, 처음 보는 상황에서도 꽤나 정확한 선택이 가능할 것이라고 믿을 수 있을 겁니다.
- Recurrent Neural Network (RNN) 을 이용한다 : RNN 이 게임을 위해 사용된 예는 그리 많지 않습니다. 꽤 흥미로운 연구주제가 될 것 같습니다. RNN 은 쉽게 생각하면 위에 얘기한 보통의 FFNN 에다가, 기억력이라는 변수를 추가한 것이라고 보면 될 것 같습니다. 최근의 자동번역, 음성인식, 인공지능 작곡, 이미지 주석 등의 분야에서 이 RNN 기반의 기술들이 응용되고 있습니다. 이걸 게임에 적용하는 것도 재미있을 것 같네요.