Kaggle のボードゲームAIの勝率予測コンテスト UM - Game-Playing Strength of MCTS Variants に参加しました

This image is generated with ChatGPT-4, and edited by the author.
作成日:2024年12月16日(月) 00:00
最終更新日:2024年12月16日(月) 19:02
カテゴリ:Kaggle
タグ:  Monte-Carlo tree search Ludii Boosting

KaggleのボードゲームAI勝率予測コンテストに参加しました.最終順位は209/1608位とイマイチでしたが,Boosting や特徴エンジニアリングを学べたのは良かったです.

こんにちは.高山です. KaggleのUM - Game-Playing Strength of MCTS Variants というコンテストに参加していました.
普段は専門である手話言語処理のことばかり考えているのですが,もう少し一般的なデータサイエンスも勉強しないといけないな,と感じており参加を決めました.
Boosting や専門外の特徴エンジニアリングに苦戦して,最終順位も 209/1608 位とイマイチでしたが,その分学びの多いコンテストでした.

コンテストの紹介

突然ですが,モンテカルロ木探索 (MCTS: Monte Carlo tree search) というアルゴリズムは聞いたことがありますか?
このアルゴリズムはゲーム AI に良く使われており,今回のコンテストではゲーム AI の勝率を予測するのが目的となります.

図1に概要を示します.

ゲームAIの勝率予測処理の全体像と,コンテストの対象範囲を説明する図です.画像に続いて詳細説明があります.
ゲームAIの勝率予測

このコンテストでは,MCTS を用いた 2種類のゲームAI (コンテストでは Agent と呼んでいます) をボードゲームで対戦させます.
各エージェントには,それぞれ異なる MCTS アルゴリズムとパラメータが与えられており,勝率データが与えられています.

ボードゲームは Ludii [Piette'20] というゲーム記述システムで定義されており,定義されている各種パラメータが特徴量になります.
特徴量には,2値データ,整数データ,連続データ,および文字データなどが含まれます.

これらの特徴量と勝率データを用いて,勝率予測モデルを学習し,テストデータ (特徴量だけが与えられます) における勝率予測の正確さを競い合います.

このコンテストでは,有効な特徴を見出して取捨選択,および変換する特徴エンジニアリングと,予測モデルの選択およびチューニングが大きなポイントになります.
今回は様々な特徴量から回帰予測で勝率を求めるというタスクでしたので,LightGBM [Ke'17] と CatBoost [Prokhorenkova'17] を Optuna でチューニングして,予測値の平均を用いる (所謂アンサンブルという手法です) というアプローチを用いました.

大きく性能向上はしませんでしたが,Boosting や離散データの特徴エンジニアリング,および Optuna など今まで触ってこなかった手法を経験して色々と勉強になりました.

トップチームのアプローチは公開されているので,時間があれば勉強して試してみたいと思います.

  • [Piette'20]: E. Piette, et al., "Ludii -- The Ludemic General Game System," Proc. of the ECAI, available here, 2020.
  • [Ke'17]: G. Ke, et al., "LightGBM: A Highly Efficient Gradient Boosting Decision Tree," Proc. of the NIPS, available here, 2017.
  • [Prokhorenkova'17]: L. Prokhorenkova, et al., "CatBoost: unbiased boosting with categorical features," arXiv: 1706.09516, available here, 2017.