Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
機械学習を用いたポケモン対戦選出予測
Search
Yusuke Fukasawa
May 26, 2024
Research
1
700
機械学習を用いたポケモン対戦選出予測
2024/05/26 のリモートポケモン学会で発表した内容です。
https://twitter.com/rimopoke
Yusuke Fukasawa
May 26, 2024
Tweet
Share
More Decks by Yusuke Fukasawa
See All by Yusuke Fukasawa
Poke_Battle_Logger の紹介: リモポケ学会20230714
fufufukakaka
1
810
Poke_Battle_Loggerの紹介
fufufukakaka
0
260
Cookpad TechConf2022 / Machine-Learning-At-Cookpad-Mart
fufufukakaka
1
3k
20221116_MLOps勉強会_クックパッドマートにおける推薦タスクとMLOps
fufufukakaka
2
1.7k
RedshiftML in Cookpad
fufufukakaka
2
5.6k
Other Decks in Research
See All in Research
授業評価アンケートのテキストマイニング
langstat
1
320
ヘルプデスクの事例で学ぶAIエージェント
masatoto
13
7k
第60回名古屋CV・PRML勉強会:CVPR2024論文紹介(AM-RADIO)
naok615
0
200
Isotropy, Clusters, and Classifiers
hpprc
3
490
snlp2024_multiheadMoE
takase
0
340
SSII2024 [PD] 30周年記念特別企画SSII 技術マップ / LLMサーベイ
ssii
PRO
0
740
20240626_金沢大学_新機能集積回路設計特論_配布用 #makelsi
takasumasakazu
0
140
大規模言語モデルのバイアス
yukinobaba
PRO
4
510
LLM時代の半導体・集積回路
kentaroy47
1
390
Generative Predictive Model for Autonomous Driving 第61回 コンピュータビジョン勉強会@関東 (後編)
kentosasaki
0
160
WikipediaやYouTubeにおける論文参照 / joss2024
corgies
1
240
SSII2024 [OS1] 研究紹介100連発(オープンニング)
ssii
PRO
0
470
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
653
58k
The Mythical Team-Month
searls
218
43k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
23
1.7k
The World Runs on Bad Software
bkeepers
PRO
64
11k
Typedesign – Prime Four
hannesfritz
39
2.3k
A Modern Web Designer's Workflow
chriscoyier
691
190k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2k
The Language of Interfaces
destraynor
153
23k
What the flash - Photography Introduction
edds
67
11k
The Pragmatic Product Professional
lauravandoore
31
6.2k
YesSQL, Process and Tooling at Scale
rocio
167
14k
How to train your dragon (web standard)
notwaldorf
85
5.6k
Transcript
機械学習を用いた ポケモン対戦選出予測 2024/05/26 fufufukakaka @ リモートポケモン学会
自己紹介 fufufukakaka(fu3ka3) pron. ふふふかかか・ふか 普段は機械学習エンジニア リモポケ学会では2 回発表しました 対戦データを収集するシステム GPT-4 で発表を要約するシステム
ポケモンの対戦を嗜んでいます レート1800 で安定してる 2
お話したいこと 1. ポケモン対戦とは 2. 選出と技選択 3. 選出データの収集 4. いい感じの予測モデル作り 5.
結果とエラー分析 6. まとめ 3
ポケモン対戦とは 6 体を見せ合う → 3 体( ダブルでは4 体) を出して対 戦開始
→ 先に相手のポケモンをすべて 倒したほうが勝ち 今日はシングル対戦の話 1. ポケモン対戦とは 4
ポケモン対戦の何かを予測して 強くなりたい!( ?) 2. 選出と技選択 5
選出と技選択 選出 どのポケモンを使うのかを相手のプールを見て決める マクロ的な視点による思考が必要 技選択 自分と相手の対面状況、裏を考慮して技・交代選択をする ミクロ的な視点による思考が必要 2. 選出と技選択 6
→ 選出と技選択で考え方が違う!! 2. 選出と技選択 7
選出と技選択、どっちを予測するほう が簡単そう... ? → 選出予測 のほうがまだできそう 2. 選出と技選択 8
選出データ収集 こういう枠組みで 捉える 自分と相手の6 体、相手が出した 3 体があれば予測 できそう 3. 予測のための選出データ収集
9
選出データ収集 自分の対戦データ: Poke Battle Logger で集められる ただし、自分の対戦データだけだと予測できた!とは言えない ( 集計するだけで良さそう) 3.
予測のための選出データ収集 10
他の人の対戦データも集めよう! 3. 予測のための選出データ収集 11
選出データ収集 どうやって対戦データを集めるか? → YouTube で配信されている対戦から収集する ( メンバー限定配信は対象としない) 自動で集められるか? → YouTube
の規約上 bot アクセスができない → 色んな画面レイアウトで配信されているため、Poke Battle Logger の対象にできないものが多い 3. 予測のための選出データ収集 12
人力で集めよう!!! 3. 予測のための選出データ収集 13
人力で!選出データ収集 候補となる対戦動画を集めてくる 編集が入っていない配信を対象に する クラウドソーシングで作業者を募集 して依頼 → 約1000 試合( レギュレーションF)
を 集められた 3. 予測のための選出データ収集 14
いい感じの予測モデル作り どんなモデルが必要? 1. ポケモンをベクトルに変換するモデル 2. ポケモンベクトルで予測を行うモデル 選出ポケモンを予測するタスク その中での初手を予測するタスク なんかいっぱい必要... 4.
いい感じの予測モデル作り 15
1. ポケモンをベクトルに変換するモデル ポケモン名はそのままだとモデルに入力できない 何らかの変換を行う必要がある ※ 普通の日本語ではないので、一から学習させる必要がある ( 普通の日本語であれば事前学習済モデルが使えるが...) → ポケモン名を新しい単語として定義して、パーティの並びから
ベクトルを学習させる 4. いい感じの予測モデル作り 16
1. ポケモンをベクトルに変換するモデル 穴埋め問題を解かせることで、単語の意味及び関係性を学習できる → Pokemon Team BERT を作る (BERT ...
言語理解のための強いモデル) 4. いい感じの予測モデル作り 17
1. ポケモンをベクトルに変換するモデル 受けループに必要な残り一体を推測させている様子↓ パーティの概念を学習したベクトル変換モデルが手に入った 4. いい感じの予測モデル作り 18
2. ポケモンベクトルで選出予測を行うモデル パーティの並びを文章とみなして、Token Classification で解く Token Classification → 固有表現抽出とかで使われているタスク 4.
いい感じの予測モデル作り 19
2. ポケモンベクトル で選出予測を行うモ デル 選出された、初手選出 された、選出されなか った、のラベルを用意 して予測 4. いい感じの予測モデル作り
20
2. ポケモンベクトルで選出予測を行うモデル target_sentence = " カイリュー ハバタクカミ ... 暁ガチグマ[SEP] ママンボウ
オーロンゲ ... 水オーガポン" predict_res = trained_model.predict(target_sentence) print(predict_res) { " ママンボウ": { " 選出された確率": 0.95, " 初手選出された確率": 0.86, " 選出されなかった確率": 0.01 },... } 4. いい感じの予測モデル作り 21
結果とエラー分析 どれくらいの予測精度になったでしょうか? 初手ポケモン予測の正解率 選出ポケモン予想の平均正解数(1 試合あたり: 0~3) 5. 結果とエラー分析 22
比較手法 ランダム ... 6 体の中からランダムに3 体選ぶ。その中の一匹をランダ ムに初手と予想 集計ベース ... 試合データを集計して、初手回数が多かったポケモ
ン・選出回数が多かったポケモンを把握。相手パーティの中でその 上位から予想として出す 5. 結果とエラー分析 23
結果 モデル 初手の正解率 選出予想の平均正解数 pokemon_team_BERT 0.3671 1.7578 ランダム 0.1666 1.4981
集計ベース 0.1250 1.4531 5. 結果とエラー分析 24
結果 モデル 初手の正解率 選出予想の平均正解数 pokemon_team_BERT 0.3671 1.7578 ランダム 0.1666 1.4981
集計ベース 0.1250 1.4531 → ( 一応) 大勝利! 5. 結果とエラー分析 25
エラー分析 ケース1 {' 相手のチーム': ' コノヨザル イーユイ 岩オーガポン 暁ガチグマ イダイトウ・オス
ミミッキュ', ' 自分のチーム': ' ディンルー カイリュー サーフゴー パオジアン ハバタクカミ ウーラオス', ' 予想選出( 機械学習)': [' コノヨザル', ' イダイトウ・オス', ' 岩オーガポン'], ' 予想選出( 集計)': [' 暁ガチグマ', ' イーユイ', ' イダイトウ・オス'], ' 実際の選出': [' 暁ガチグマ', ' 岩オーガポン', ' イダイトウ・オス'], } 初手コノヨザルという予想は悪くない イダイトウ・オス、岩オーガポンは当てられた 集計ベースもまあまあ 5. 結果とエラー分析 26
エラー分析 ケース2 {' 相手のチーム': ' サケブシッポ ハバタクカミ 暁ガチグマ ウーラオス 炎オーガポン
パオジアン', ' 自分のチーム': ' ハバタクカミ キョジオーン 霊獣ランドロス ウーラオス ブリジュラス パオジアン', ' 予想選出( 機械学習)': [' サケブシッポ', ' ハバタクカミ', ' ウーラオス'], ' 予想選出( 集計)': [' ハバタクカミ', ' ウーラオス', ' パオジアン'], ' 実際の選出': [' サケブシッポ', ' ハバタクカミ', ' ウーラオス'], } 完璧に的中したパターン! 5. 結果とエラー分析 27
エラー分析 ケース3 {' 相手のチーム': ' カイリュー 暁ガチグマ パオジアン ハバタクカミ ブリジュラス
炎オーガポン', ' 自分のチーム': ' ハバタクカミ サーフゴー カイリュー ウーラオス ママンボウ 暁ガチグマ', ' 予想選出( 機械学習)': [' 暁ガチグマ', ' パオジアン', ' ブリジュラス'], ' 予想選出( 集計)': [' ハバタクカミ', ' パオジアン', ' 暁ガチグマ'], ' 実際の選出': [' カイリュー', ' ハバタクカミ', ' 炎オーガポン'], } 完全に外したパターン こちらにママンボウがいるので、暁ガチグマが負荷をかけにくるの では、と予想するのはそこまで変じゃない... ような気がする 5. 結果とエラー分析 28
エラー分析 BERT というモデルは (Self)Attention という仕組み を持っていて、どの単語に反 応したかが見えるようになっ ている Source-Target Attention
での 例 → 5. 結果とエラー分析 29
[ 自分のパーティ] ハバタクカミ, イーユイ, 暁ガチ グマ, タケルライコ, カイリュー, ハッサム [
相手のパーティ] マスカーニャ, カイリュー, ブリ ジュラス, ママンボウ, ウーラオ ス, ハバタクカミ ブリジュラスにめちゃくちゃ 引っ張られている→ 5. 結果とエラー分析 30
( 同じパーティ) 警戒されているママンボウの 様子( 一部のAttention) 5. 結果とエラー分析 31
エラー分析 Attention 可視化分析を踏まえると、モデルは筋の良い目の付け所 を持っている( 多分) 定性的にも悪くない挙動と言えそう だが、良くも悪くも頻出のものに引っ張られる 選出全体でみると集計ベースとの差はわずか... 5. 結果とエラー分析
32
まとめ 自動・人力でシングル対戦のデータを収集 選出予測を行うモデルを作ってみた 初手予測はそれなり、選出予測はまあまあでできることがわかった これから 集めたデータをベンチマークとして公開したい OBS で使えるツールにしたい モデルの改善、レギュレーションG データの収集など引き続きやっ
ていきます まとめ 33