"이게 사람이냐 AI냐" 실제 유저 같은 AI를 만들기 위한 두 가지 방법

게임뉴스 | 윤서호 기자 | 댓글: 5개 |


▲ 스퀘어에닉스 마나베 카즈코 AI 엔지니어

알파고 등장 이후 한동안 머신러닝, AI가 사회적으로 큰 이슈가 됐다. 그 전까지는 아무리 고성능의 프로세서를 장착하더라도 일반적으로 기계는 '시키는 대로만 하는' 존재였다. 따라서 자기가 직접 학습해서 인간과 유사하게 혹은 능가하는 수를 두리라고 생각했다. 그러나 알파고 이후 AI와 머신러닝 기술은 IT업계 전반에 영향을 미쳤으며, 게임업계 또한 이를 주목했다.

그간의 사례를 보면, 게임 개발 부문 중 QA 및 레벨테스트에서 AI, 머신러닝 기술이 여러 면에서 각광을 받았다. 전원만 켜져있으면 피로를 느끼지 않고 계속 학습하고 테스트를 반복하는데다가, 자가학습한 결과를 개발자가 조건에 따라서 분류해서 출력하기도 쉬웠기 때문이다. 이외에도 다양한 이점이 발견되면서 AI, 머신러닝, 자가학습은 게임업계에서 여러 모로 연구되고 있다.

흔히 말하는 고인물이 많아질 수밖에 없는 게임에서 새로 진입한 플레이어들을 돕기 위해 AI 매칭을 보강하는 등, 게임플레이에서도 점차 AI 및 자가학습 기술 도입을 시도하고 있다. 이번 세덱 2020에서 스퀘어에닉스의 마나베 카즈코 AI 엔지니어는 어떤 식으로 유저들이 만족할 만한, 혹은 테스터로 쓸만한 AI 플레이어를 만들고자 했는지 '드래곤퀘스트 라이벌즈'의 사례를 통해서 설명했다.





2017년 11월 2일에 출시된 '드래곤퀘스트 라이벌즈'는 드래곤퀘스트 IP를 활용한 모바일 TCG 게임이다. 시리즈의 레귤러 캐릭터들이 리더로 등장하며, 그외 원작 시리즈에 나온 주문과 몬스터들이 카드로 등장한다. 현세대의 여타 TCG과 동일하게 각 유저는 각기 다른 클래스의 리더를 고르고 그에 맞춰서 최대 30장의 카드를 골라 덱을 짠 뒤, 다른 유저들과 전투를 벌이게 된다.

이와 같은 장르는 PVP를 기본으로 하기 때문에 AI 기술이 크게 필요하지 않다고 여겨지기도 한다. 그러나 마나베 엔지니어는 여러 관점에서 볼 때 TCG에도 AI 기술이 필요하다고 봤다. 초보 단계에서 중수까지 가기 위해서 AI와 연습을 한다던가, 승패에 상관하지 않고 덱을 실험한다던가, 밸런스 테스트를 위해서 시뮬레이션을 하는 등 여러 방면으로 활용할 수 있기 때문이다.



▲ TCG라 플레이어끼리의 대전만 갖추면 되지 않나 싶지만, AI 기술의 수요가 없진 않다

또한 TCG는 업데이트에 따라서 카드가 추가되거나 정식 랭크에서 배제되는 카드도 있으며, 그에 따라 메타의 변화도 지속적으로 일어나는 장르다. 이런 장르에서 단순히 기존의 조건식 AI로 일일이 개발진이 입력하기보다는, 각각의 환경에 자가학습을 통해서 AI가 알아서 대응하게 하는 것이 더 수월하다.

이미 '드래곤퀘스트 라이벌즈'에서는 AI 기술을 다각도로 도입해 오토플레이 기능 등도 추가한 상태지만, 이번 강연에서는 AI 플레이어를 구현할 때 사용한 기술에 대해서만 언급됐다. TCG에서는 AI 플레이어를 구축하기 위해서 첫 번째로는 리더와 카드의 정보를 활용해서 덱을 짜는 AI와 그 덱을 활용하는 AI 두 종류를 요구한다. 그중 오늘 강연에서는 주어진 덱을 활용하는 AI를 구축한 방법에 대해서만 설명했다.

TCG에서 AI를 구축할 때 난제는, AI가 볼 수 없는 정보가 있고 랜덤 요소가 있다는 점이다. 플레이어 입장에서는 상대방이 필드에 낸 카드와 손패, 덱에 남은 카드의 '수'만 알 수 있고 어떤 카드가 있는지 알 수가 없다. 이 상황에서 유저는 그간 게임을 했던 경험과 상대방이 냈던 카드, 체력 상황, 필드 상황 등을 종합해서 상대방이 낼 카드와 손패를 예측하면서 플레이하지만, 그 사고방식을 현재의 AI 기술로도 바로 동일하게 적용할 수 없다.



▲ 상대가 어떤 패를 들고 있는지 알고 하는 건 AI가 아니고 핵이다

여기에 랜덤 요소까지 가미되면서 AI를 구축하는 것은 한 층 더 어려워진다. 대전을 시작할 때 30장의 카드가 어떻게 섞이는지, 해당 턴에 어떤 카드가 드로우되는지도 다 랜덤으로 결정되기 때문이다. 뿐만 아니라 카드 중에는 랜덤한 효과가 발동되는 카드도 있어 이러한 변수까지 고려하게끔 AI를 설계해야 하는 과제가 생긴다.



▲ 누구한테 데미지가 박히느냐에 따라 게임 판도가 확 바뀌니, AI로 이걸 신경쓰게 하기는 골치아프다

드래곤퀘스트 라이벌즈에서는 이 문제를 해결하기 위해서 몬테카를로 방법과 딥마인드가 개발한 알고리즘인 DQN 두 가지 방식을 활용했다. 첫 번째 방법인 몬테카를로 방식은 다수의 샘플링을 만들어낸 뒤, 확률 모델을 기본으로 해서 지정치를 얻는 방식이다.

여기에 트리 검색 모델을 도입해 트리 방식으로 모든 경우의 수를 분류해서 표현한 뒤, 최선의 평가치를 검색해서 지정하는 모델을 도입했다. 이는 토탈 워: 로마2에서 활용된 방식으로, 각 턴마다 플레이어 빼고 다른 국가끼리 전투를 벌이거나 그외 다양한 행동을 하는 알고리즘을 만들 때 사용됐다.

흔히 '게임 트리'라고 일컫는 방식은 위에서부터 아래로 가면서 각 단계의 상황과 행동, 그에 따라서 다음 단계에 벌어지는 상황을 정리해서 그려넣게 된다. 그리고 위에서부터 아래로 각 상황과 행동을 연산해서 나열한 뒤, 최종 국면에서부터 첫 상황까지 역순으로 가면서 각 단계별로 최선의 방식을 피드백해서 평가값을 산출하게 된다. 그리고 그 평가값에 따라서 AI는 최선의 수를 선택해서 고르게 된다.



▲ 각각의 경우를 트리노드로 표현한 뒤, 역순으로 분석하면서 최선의 결과를 선택하게 된다

여기서 마나베 엔지니어는 중간 단계의 데이터까지만 보존하고, 나머지 데이터는 파기한 뒤에 시뮬레이션을 돌렸다. 이렇게 중간에 끊지 않으면 최선의 수만 나와 난이도가 기하급수적으로 높아지고, 불완전한 상태를 가정해서 시뮬레이션하기가 어렵기 때문이다.



▲ 개중에 최종 결과는 파기한 뒤, 100회의 시뮬레이션을 돌렸다

드래곤퀘스트 라이벌 같이 불확정, 불완전 정보가 있는 TCG에서는 기존의 몬테카를로 트리 모델에 한 가지 변수가 추가된다. 행동 중간중간에 랜덤 요소에 대응하는 '액션' 노드를 새로 추가하고, 그에 따른 분기점을 추가로 만들어가는 방식이다. 각각의 액션 노드의 평가값은, 자식 노드의 평가값의 평균으로 산출했으며 평가값의 평균은 수치와 시뮬레이션 횟수 등을 종합해서 산출해냈다.

상대가 패를 내기 전까지 확인이 불가능한 상대방의 손패와 덱 등 불완전 정보는 최대한 배제, AI가 직접 확인할 수 있는 것만 놓고 상황을 판단하게끔 설정했다. 즉 필드 상황과 AI의 손패가 동일한 상태에서 상대방이 손패를 다르게 갖고 있어도, 직전에 낸 카드가 동일하다면 동일한 상황이라고 인식하게끔 한 것이다. 이는 '보이지 않는 정보'를 간접적으로 알 수 있게 되는 어떤 조건을 거는 순간 AI의 승률은 비약적으로 상승하기 때문에 취한 조치였다.



▲ 랜덤 요소를 고려하기 위해 기존 모델에 '액션노드'를 추가했고



▲ 확인할 수 없는 정보를 배제한 상태에서 다른 변수가 똑같은 상황이면 동일 상황으로 정의했다

이와 같은 모델을 도입해서 만든 MCTS 플레이어는 기존 AI와 대전에서 91.3%의 승률을 보이는 등, 한 층 더 진전된 모습을 보였다. 다만 실제로 사람들과 약 1만 번의 시뮬레이션 대전을 해본 결과, 톱플레이어급은 아니라는 평가를 들었다. 또한 MCTS를 운용한 결과 한 번 행동을 취할 때마다 269밀리초를 소모하고, 여기에 드는 리소스 때문에 플레이어의 대기시간에도 영향을 미치는 것으로 파악됐다. 그외에도 셔플 및 여러 상황에 대한 시뮬레이터를 별도로 개발해야 했다.

이러한 단점을 보완하기 위해서 DQN(Deep Q-Network)도 대입하게 됐다. 딥러닝에서 주로 사용되는 이 방식은 각 행동마다 Q함수를 사용한다. Q함수란 상태와 행동을 입력으로 주면 기대값을 출력해주는 함수로, 매 행동마다 해당 행동이 얼마나 유효한지 수치로 나타내준다. 이를 풀어쓰면, 기계는 매번 Q에 의거해서 플레이하고 그 결과에 따라서 Q를 평가, Q가 더 높은 수치가 나오는 방향으로 유도된다. 여기서 가장 중요한 Q의 학습과 변수 정의가 AI 기술의 큰 장벽이었지만, 딥마인드에서 두 차례 발표한 논문을 통해서 어느 정도 공식화되면서 이 문제는 해결이 됐다.



▲ Q함수는 딥마인드에서 논문을 발표하면서 어느 정도 공식화가 됐다

다만 DQN을 드래곤퀘스트 라이벌즈 같은 게임에 바로 도입하기는 어렵다. 해당 논문에 사용됐던 예시보다 더 많은 여러 종류의 행동과 파라미터값을 고려해야하며, 무엇보다도 상대의 손패나 덱 등 플레이어의 시야에서 확인할 수 없는 불완전 정보들이 있기 때문이다. 이는 DQN 등 딥러닝에서 기반으로 하고 있는 인공신경망 분야에서 아직까지도 완벽히 대처하지 못하는 분야인 만큼, 추가로 손을 볼 필요가 있었다.

이를 보완하기 위해서 DQN은 람다 대수로 두고 보다 장기적인 보수에 초점을 두도록 설계하면서, 순환형 신경망을 추가로 도입했다. 단순히 한 층의 뉴런이 연결되는 방식이 아니라, 직전의 행동을 기억한 뒤에 다른 행동으로 넘어가는 순환형 신경망을 활용해서 일부 불완전 정보로 발생하는 오차들을 보완하는 형태를 취했다.

해당 턴에서 사용하게 되는 카드와 리더의 능력치는 ID 형태로 구축하되, 임베딩해서 수치화시킨 뒤 특징을 벡터화시켜 표현하도록 했다. 그렇게 해서 상태 공간에 카드와 리더가 어떤 것이 나와도 빠르게 의미적 특성을 포착해서 식에 도입할 수 있게끔 했다.



▲ 해당 턴의 행동을 선택하고 실행하기 전, 직전의 행동 정보를 기억해내는 과정을 추가했다

이러한 정보들을 바탕으로 해서 AI는 손패에 있는 패를 낼 때마다, 혹은 특정 유닛을 사용할 때, 특정 카드를 어떤 유닛에 사용할 때, 턴을 그냥 종료할 때 등 각각의 상황에 따라서 노드를 내리면서 결과를 도출하게 된다. 이렇게 해서 도출된 결과물을 필터링한 뒤, 최대값과 평균값들을 산출해서 행동을 취하는 것이 드래곤퀘스트 라이벌즈에서 DQN 설계라고 설명했다.

여기서 추가로 조금 더 빠르게 학습시키기 위해서 시뮬레이터로 생성된 50만 개의 로그파일이 사용됐으며, 배치사이즈는 200게임 정도로 잡았다. 또한 20회 행동해서 도출된 손실을 기반으로 해서 중요도를 갱신하는 식으로 학습을 시키는 식으로 모델을 잡았다. 그 결과 MCTS 모델의 AI를 상대로 67.6%의 승률을 올리는 AI를 구축했으며, MCTS 모델보다 리소스가 적게 소모되는 것이 확인됐다. 그러나 DQN에서는 게임이 갱신되면 재학습 절차가 필요해지며, 특히 대형 업데이트로 신규 메카니즘이 도입되거나 룰이 변경되면 AI 네트워크 구조 자체를 변경할 필요가 있다는 단점이 있다.

현재 드래곤퀘스트 라이벌즈에는 두 가지 모델 다 게임밸런스 조정 등에 활용되고 있으며, OP 카드와 리더가 있는지, 그것이 디자이너의 의도대로인지 로그를 분석하거나 밸런스를 가시화하는 데 쓰이고 있다. 이처럼 기존의 AI 기술은 아직 게임에 전면적으로 활용되기엔 일부 부족하지만, 어느 정도 응용하면 가시적인 수치를 도출하면서 여러 모로 활용할 수 있기 때문에 눈여겨볼 필요가 있다고 마나베 엔지니어는 조언했다.






▲ 각 방식이 완벽하지는 않지만, 밸런스 조정 등에 다방면에 응용하고 있다

댓글

새로고침
새로고침

기사 목록

1 2 3 4 5