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
1.2k
機械学習を用いたポケモン対戦選出予測
2024/05/26 のリモートポケモン学会で発表した内容です。
https://twitter.com/rimopoke
Yusuke Fukasawa
May 26, 2024
Tweet
Share
More Decks by Yusuke Fukasawa
See All by Yusuke Fukasawa
ファインディLT_ポケモン対戦の定量的分析
fufufukakaka
0
1.1k
対戦におけるポケモンの “意味変化”を追う_リモートポケモン学会
fufufukakaka
0
200
Poke_Battle_Logger の紹介: リモポケ学会20230714
fufufukakaka
1
1k
Poke_Battle_Loggerの紹介
fufufukakaka
0
370
Cookpad TechConf2022 / Machine-Learning-At-Cookpad-Mart
fufufukakaka
1
3.3k
20221116_MLOps勉強会_クックパッドマートにおける推薦タスクとMLOps
fufufukakaka
2
1.9k
RedshiftML in Cookpad
fufufukakaka
2
7.8k
Other Decks in Research
See All in Research
EcoWikiRS: Learning Ecological Representation of Satellite Images from Weak Supervision with Species Observation and Wikipedia
satai
3
130
引力・斥力を制御可能なランダム部分集合の確率分布
wasyro
0
240
Large Language Model Agent: A Survey on Methodology, Applications and Challenges
shunk031
16
9.9k
IMC の細かすぎる話 2025
smly
2
630
20250624_熊本経済同友会6月例会講演
trafficbrain
1
610
単施設でできる臨床研究の考え方
shuntaros
0
2.7k
AIによる画像認識技術の進化 -25年の技術変遷を振り返る-
hf149
7
4k
問いを起点に、社会と共鳴する知を育む場へ
matsumoto_r
PRO
0
610
診断前の病歴テキストを対象としたLLMによるエンティティリンキング精度検証
hagino3000
1
130
ストレス計測方法の確立に向けたマルチモーダルデータの活用
yurikomium
0
1.5k
Stealing LUKS Keys via TPM and UUID Spoofing in 10 Minutes - BSides 2025
anykeyshik
0
110
SSII2025 [TS3] 医工連携における画像情報学研究
ssii
PRO
2
1.3k
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
The Straight Up "How To Draw Better" Workshop
denniskardys
236
140k
4 Signs Your Business is Dying
shpigford
184
22k
BBQ
matthewcrist
89
9.8k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.1k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.6k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.7k
jQuery: Nuts, Bolts and Bling
dougneiner
64
7.9k
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