개요
플레이어의 행동을 예측하는 것은 여러 성향의 플레이어들에게 대항하는 AI를 만드는 데 도움이 된다. 많은 연구 결과에 따르면 인간은 무작위로 행동하는데 잼병이라 이를 이용하여 플레이어의 행동을 어느정도 예측할 수 있다.
예제로 간단하게 플레이어가 왼쪽을 고르는지, 오른쪽을 고르는지 맞추는 게임이 있다고 하자. 그렇다면 플레이어의 행동을 다음과 같은 방법으로 예측해볼 수 있다.
그냥 확률로 계산
그냥 지금까지 통계적으로 플레이어가 어떤 행동을 했는지를 이용하는 것. 이 방법은 구현이 매우 간단하지만, 플레이어가 이를 눈치채고 다르게 행동할 가능성이 높다.
N-Gram
플레이어가 왼쪽을 골랐으면 "L" 오른쪽을 골랐으면 "R"이라는 문자를 이용하여 플레이어가 지금까지 한 행동을 문자열로 표현할 수 있다. 아마 "LRRLRLLLRRLRLRR" 이런 식이 될 것이다.
N-Gram에서 N은 Window Size인데, 주어진 데이터에서 한 번에 관심을 가질 데이터의 갯수정도를 의미한다고 할 수 있다.
가령 N = 3이라면 "LRR, RRL, RLR... LRR"이런식으로 데이터를 3개씩 쪼개어 볼 수 있고, 이를 다시 활용하면 데이터 두 개를 알 때 다음 데이터는 뭐가 나왔는지에 대한 통계를 구할 수 있다.
위의 예제 "LRRLRLLLRLRRLLR"을 3-Gram으로 나타내보면..
다음에 L이 등장할 확률 | 다음에 R이 등장할 확률 | |
LL | 1/2 | 1/2 |
LR | 3/5 | 2/5 |
RL | 3/4 | 1/4 |
RR | 0/2 | 2/2 |
위와 같은 표를 만들 수 있다.
그리고 위와 같은 확률을 통해 다음에 등장할 문자를 예측해볼 수 있을 것이다.
그렇다면 Window Size는 얼마가 적당할까? 이건 상황에 따라 다르므로, 직접 측정을 해보는 것이 좋다. 주로 초반에는 Window Size가 클 수록 확률이 올라가는 경향을 보이지만, Window Size가 너무 커진다면 성능이 점점 떨어진다. 이것은 Sequence가 길 수록 더 많은 랜덤성을 가지고 있기 때문이다.
Window Size는 적당히 큰 게 좋지만, 메모리에 대한 문제도 고려해야 한다.
초반에 데이터가 적을 때는 큰 Window Size가 충분히 통계적인 데이터를 쌓지 못했을 수 있다. 이런 경우 Window size를 계층적으로 사용할 수 있는데, 데이터가 없는 초반에는 적은 갯수의 Window Size를 쓰다가 점점 사이즈를 키워나가는 것이다.
'Game AI' 카테고리의 다른 글
Decision Tree Learning - 1 (0) | 2023.11.26 |
---|---|
Decision Learning(1) - Naive Bayes Classifiers (0) | 2023.11.12 |
Learning (2) - 파라미터 학습 (0) | 2023.10.22 |
Learning (1) - 기초 (1) | 2023.10.09 |
Rule-Based System (3) - Rete (0) | 2023.01.22 |