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.3k
機械学習を用いたポケモン対戦選出予測
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.2k
対戦におけるポケモンの “意味変化”を追う_リモートポケモン学会
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.4k
20221116_MLOps勉強会_クックパッドマートにおける推薦タスクとMLOps
fufufukakaka
2
1.9k
RedshiftML in Cookpad
fufufukakaka
2
7.9k
Other Decks in Research
See All in Research
情報技術の社会実装に向けた応用と課題:ニュースメディアの事例から / appmech-jsce 2025
upura
0
240
GPUを利用したStein Particle Filterによる点群6自由度モンテカルロSLAM
takuminakao
0
480
Towards a More Efficient Reasoning LLM: AIMO2 Solution Summary and Introduction to Fast-Math Models
analokmaus
2
980
20250605_新交通システム推進議連_熊本都市圏「車1割削減、渋滞半減、公共交通2倍」から考える地方都市交通政策
trafficbrain
0
950
PhD Defense 2025: Visual Understanding of Human Hands in Interactions
tkhkaeio
1
280
Stealing LUKS Keys via TPM and UUID Spoofing in 10 Minutes - BSides 2025
anykeyshik
0
150
2021年度-基盤研究B-研究計画調書
trycycle
PRO
0
400
カスタマーサクセスの視点からAWS Summitの展示を考える~製品開発で活用できる勘所~
masakiokuda
2
210
問いを起点に、社会と共鳴する知を育む場へ
matsumoto_r
PRO
0
680
投資戦略202508
pw
0
570
J-RAGBench: 日本語RAGにおける Generator評価ベンチマークの構築
koki_itai
0
880
RHO-1: Not All Tokens Are What You Need
sansan_randd
1
200
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
How GitHub (no longer) Works
holman
315
140k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
650
Making the Leap to Tech Lead
cromwellryan
135
9.6k
Designing for humans not robots
tammielis
254
26k
Site-Speed That Sticks
csswizardry
13
940
Unsuck your backbone
ammeep
671
58k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
10
910
Rebuilding a faster, lazier Slack
samanthasiow
84
9.2k
YesSQL, Process and Tooling at Scale
rocio
174
15k
How to train your dragon (web standard)
notwaldorf
97
6.3k
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