brunch

AI가 서바이벌 프로그램에 나간다면

(feat. 데블스플랜 2)

by 여운

최근에 공개된 <데블스플랜 2>는 내가 처음으로 열심히 본 두뇌 서바이벌 프로그램이다. 괴로운 마음에 차마 끝까지 보진 못했지만, 두뇌 서바이벌에 관심이 생기긴 했다. 만약 내가 만든 AI가 두뇌 서바이벌 프로그램에 참여한다면, 모델을 어떻게 설계해야 할까? 연합 만들기 단계부터 심히 걱정되지만, 그 문제는 차치하고 '목적 함수(objective function)' 부분만 고민해 보았다.


많은 두뇌 서바이벌 프로그램이 날마다 한 게임씩 하고, 그 게임으로 보상을 얻고, 그 보상이 많아야 살아남을 수 있는 구조로 이루어져 있다. 래서 가장 단순하게는 날마다 하는 각 게임에서 얻는 보상의 기댓값을 목적 함수로 정의하고, 이를 최대화하는 방법으로 AI를 학습할 수 있다. 그러나 날마다 하는 각 게임만 독립적으로 고려하면 '국소적인 최대(local maximum)' 보상에 도달하기 쉽다. 어느 정도 괜찮은 전략이지만, 1등을 노린다면 '전체 최대(global maximum)' 보상을 찾아야 한다.

예를 들어, <지니어스 1>의 '123게임'은 각 플레이어에게 '1'이 써진 카드 3장, '2'가 써진 카드 3장, '3'이 써진 카드 3장을 주고, 다른 플레이어들과 대결하면서 더 높은 숫자의 카드를 낸 플레이어에게 승점을 주는 게임이었다. 대부분의 플레이어는 둘씩 연합을 맺어 세 판은 져주고, 세 판은 이기는 식으로 동일한 승점을 챙겼다. 그런데 플레이어 A와 B는 연합을 맺어 A에게만 모든 승점을 몰아주는 극단적인 전략을 구사했다. 이 전략은 '123게임'만 고려하면 B에게 최악인 전략이다. 하지만 <지니어스 1>에서 게임의 1등은 자신이 원하는 사람에게 '생명의 징표'를 줄 수 있다. '생명의 징표'를 받으면 탈락하지 않는다. 보상 또한 플레이어끼리 주고받을 수 있다. 따라서 '123게임'밖의 더 큰 게임인 <지니어스 1> 전체를 고려했을 때 플레이어 A와 B의 전략은 합리적이다. 압도적인 승점으로 A가 1등을 하고, B에게 '생명의 징표'를 주고, 보상은 둘이 나누면 되기 때문이다.

그래서 목적 함수는 "각 게임의 보상"뿐만 아니라 "서바이벌 프로그램 전체의 보상"까지 더해서 정의해야 한.


그런데 플레이어의 인생은 서바이벌 프로그램이 끝난다고 끝나지 않는다. 그래서 "서바이벌 프로그램이 방송되었을 때 얻을 수 있는 보상"도 목적 함수에 더해야 한다. 끝없이 배신하기, 남의 공적 가로채기, 다른 플레이어에게 악담을 퍼부어 멘탈 공격하기 등이 "각 게임의 보상"과 "서바이벌 프로그램 전체의 보상"을 합한 것을 최대화해 주더라도, "서바이벌 프로그램이 방송되었을 때 얻을 수 있는 보상"을 거대한 음수로 만든다면, 그리 적절한 전략은 아닐 것이다.


목적 함수가 여러 항으로 이루어질 경우, 각 항을 어느 정도 비율로 반영할 것인가는 주로 '하이퍼파라미터(hyperparameter)' 정한다. 하이퍼파라미터는 모델이 학습해서 알아내는 것이 아니라, 학습이 진행되기 전에 인간이 직접 정해주는 값이다. 따라서 "서바이벌 프로그램이 방송되었을 때 얻을 수 있는 보상"을 어느 정도의 비율로 반영할 것인지는 각 플레이어의 몫이다. 하지만 본인의 행동에 따른 "서바이벌 프로그램이 방송되었을 때 얻을 수 있는 보상"을 적절히 예측하지 못한다면, 그 비율을 아무리 높여도 아무 쓸모없겠지.




keyword