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
kzmssk
August 28, 2019
Technology
0
3.4k
マールタスの仕組みを解説
RPGアツマールのゲームのプレイ方法を学習するシステム「マールタス」の学習アルゴリズムであるDeep Q-Learningの基本的な仕組みを解説しています。
kzmssk
August 28, 2019
Tweet
Share
More Decks by kzmssk
See All by kzmssk
[email protected]
参加レポ
kzmssk
0
980
強化学習による3Dキャラクターの モーション生成@SIGGRAPH ASIA2018
kzmssk
0
1.2k
Montezuma’s Revenge Solved by Go-Explore, a New Algorithm for Hard-Exploration Problems
kzmssk
0
390
深層学習を用いた3D仮想物理環境における キャラクターの動的な行動生成
kzmssk
0
290
Other Decks in Technology
See All in Technology
より良いプロダクトの開発を目指して - 情報を中心としたプロダクト開発 #phpcon #phpcon2025
bengo4com
1
3.1k
地図も、未来も、オープンに。 〜OSGeo.JPとFOSS4Gのご紹介〜
wata909
0
110
プロダクトエンジニアリング組織への歩み、その現在地 / Our journey to becoming a product engineering organization
hiro_torii
0
130
LinkX_GitHubを基点にした_AI時代のプロジェクトマネジメント.pdf
iotcomjpadmin
0
170
PHP開発者のためのSOLID原則再入門 #phpcon / PHP Conference Japan 2025
shogogg
4
720
25分で解説する「最小権限の原則」を実現するための AWS「ポリシー」大全 / 20250625-aws-summit-aws-policy
opelab
9
1.1k
Clineを含めたAIエージェントを 大規模組織に導入し、投資対効果を考える / Introducing AI agents into your organization
i35_267
4
1.6k
Fabric + Databricks 2025.6 の最新情報ピックアップ
ryomaru0825
1
130
~宇宙最速~2025年AWS Summit レポート
satodesu
1
1.8k
データプラットフォーム技術におけるメダリオンアーキテクチャという考え方/DataPlatformWithMedallionArchitecture
smdmts
5
630
Navigation3でViewModelにデータを渡す方法
mikanichinose
0
220
初めてのAzure FunctionsをClaude Codeで作ってみた / My first Azure Functions using Claude Code
hideakiaoyagi
1
220
Featured
See All Featured
BBQ
matthewcrist
89
9.7k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.1k
Balancing Empowerment & Direction
lara
1
370
GitHub's CSS Performance
jonrohan
1031
460k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Making the Leap to Tech Lead
cromwellryan
134
9.3k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
790
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
5.9k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.6k
Transcript
マールタスの仕組みを解説
マールタスとは? RPGアツマールに投稿されたゲームのプレイ⽅法を ⾃動的に学習するシステム
ゲームのプレイ⽅法を学習する プレイ⽅法を⼈間がデザインするのではなく 学習によって獲得する 何度もプレイして試⾏錯誤してデータ取集 強化学習と呼ばれる⽅法でシステムを更新し成⻑ ハイスコアを⽬指す ܦա࣌ؒ είΞɿ είΞɿ
είΞɿ
この時間で話したいこと マールタスの学習の仕組み Deep Q-Network(DQN)の基本 マールタスのが得意/不得意なゲームの特徴 %2/
ビデオゲームAIを作る? 伝統的な⽅法:ルールベース 「〜のときは〜せよ」 • ఢΩϟϥΫλʔ͕࠲ඪ ̋ɺ̋ ʹ౸ୡͨ͠Β"ϘλϯΛԡ͢ • ࣌ؒͷΧϯλʔ͕˘ඵʹͳΔ·ͰԣҠಈΛଓ͚Δ
• ʜ
ビデオゲームAIを作る? 伝統的な⽅法:ルールベース 「〜のときは〜せよ」 • ఢΩϟϥΫλʔ͕࠲ඪ ̋ɺ̋ ʹ౸ୡͨ͠Β"ϘλϯΛԡ͢ • ࣌ؒͷΧϯλʔ͕˘ඵʹͳΔ·ͰԣҠಈΛଓ͚Δ
• ʜ ήʔϜ͕ෳࡶʹͳΔͱॻ͘ͷ͕͘͠ͳΔ
攻略法を機械に学ばせる:機械学習 ルールを⼈間が記述するのは諦める 機械に攻略法を探してもらう
機械学習による(ビデオ)ゲームAI 様々な⽅法が提案されてきた 遺伝的アルゴリズム モンテカルロ⽊探索 などなど マールタスの学習⽅法:強化学習
強化学習によるビデオゲームAI 古いゲームから新しいゲームまで ⼈⼯知能研究の題材としてゲームが使われることも ATARI Dota 2 Starcraft-II .OJI 7
FUBM IUUQTPQFOBJDPNGJWF IUUQTEFFQNJOEDPNCMPHBMQIBTUBSNBTUFSJOHSFBM UJNFTUSBUFHZHBNFTUBSDSBGUJJ
強化学習の枠組み 環境とエージェントの相互作⽤ ゲーム:環境 エージェント:ゲームプレイヤー ΤʔδΣϯτ ڥ
環境とエージェントの相互作⽤ マールタスがボタンを選択 ゲーム画⾯が変わる
環境とエージェントの相互作⽤ マールタスがボタンを選択 ゲーム画⾯が変わる 新たな画⾯とスコアが与えられる マールタスは画⾯をみて 次のボタンを選択
環境とエージェントの相互作⽤ マールタスがボタンを選択 ゲーム画⾯が変わる 新たな画⾯とスコアが与えられる マールタスは画⾯をみて 次のボタンを選択 スコア差分: ゲームの画⾯が変わるときの 良さを測る指標
環境とエージェントの相互作⽤ エージェントが⾏動を選択 環境が変わる 新たな状態と報酬が与えられる エージェントは状態をみて次の ⾏動を選択 報酬: 環境の状態が変わるときの良 さを測る指標
エージェントが⾏動選択をするルール ⽅策:状態を⼊⼒として⾏動を出⼒する関数 ํࡦ ೖྗͨͪ ग़ྗ
強化学習で⽬指すこと ⽅策:状態を⼊⼒として⾏動を出⼒する関数 ํࡦ ೖྗͨͪ ग़ྗ ྑ͍ํࡦΛݟ͚͍ͭͨʂ
良い⽅策とは? 良い⽅策:たくさん報酬(=スコア差分)がもらえる⽅策 たくさんとは? ゲームの終わりまでの報酬の合計を考える ελʔτ ήʔϜΦʔόʔ
1ステップのみの場合
⻑いエピソード BͱCͲ͕ͬͪྑ͍ʁ
ܭࢉͯ͠ΈΑ͏
ܭࢉͯ͠ΈΑ͏
ܭࢉͯ͠ΈΑ͏
ܭࢉͯ͠ΈΑ͏
ܭࢉͯ͠ΈΑ͏
ܭࢉͯ͠ΈΑ͏
ܭࢉͯ͠ΈΑ͏
C
⾏動選択の価値を考える 価値:ある状態におけるゲームの終わりまでの報酬の総和 (報酬の総和の期待値) ⾏動価値(Q値) :ある状態において、ある⾏動を選択した場合の報酬の総和
Q値があれば良いルートがわかる ߦಈBͷ2 ʼ ߦಈCͷ2 ߦಈB͕͓ಘ
Q値を計算したい Q値を計算したい 関数を考える ؔ ೖྗ ग़ྗ
Q値を計算したい Q関数:状態を⼊⼒してQ値を出⼒する関数 2ؔ ঢ়ଶ ֤Ϙλϯͷ2
Q関数は簡単に求められない ⾮常に限られた環境では正確 なQ関数を作ることができる が。。。 実際には組み合わせが膨⼤ 計算できない!
Q関数の近似 正確なQ値を計算するのを諦める 実際にエピソードを集める
Q関数の近似 正確なQ値を計算するのを諦める 実際にエピソードを集める 集めた中でのQ値を使ってQ関数を近似する 2ؔ ঢ়ଶ ֤Ϙλϯͷ2 ͷ༧ଌ 0,
どうやってQ関数を近似するの? ニューラルネットワークと呼ばれるものを使う 脳の神経回路を模したモデル ॏΈɺόΠΞε ೖྗ ग़ྗ
どうやってQ関数を近似するの? ニューラルネットワークと呼ばれるものを使う 脳の神経回路を模したモデル ग़ྗ ॏΈʹ όΠΞεʹ = ೖྗ
×[重み]+όΠΞε = . × . +.
ニューラルネットワークの学習 1. 重みとバイアスをランダムに決める 2. 出⼒を計算 3. 欲しい出⼒(正解データ)を使って誤差を計算 4. 誤差を使って重みとバイアスを修正する 5.
2に戻る ೖྗ ग़ྗ ਖ਼ղ ޡࠩ मਖ਼
ニューラルネットワークの拡張 ೖྗ ग़ྗ ͭͷೖྗɺ̍ͭͷग़ྗ
ニューラルネットワークの拡張 複数⼊⼒、複数出⼒に拡張 ⼤規模なニューラルネットワーク=Deep Neural Network
ニューラルネットワークに画像を⼊⼒ ը૾ ϐΫηϧ
ニューラルネットワークに画像を⼊⼒ ը૾ ϐΫηϧ
ニューラルネットワークに画像を⼊⼒ Deep Neural NetworkでQ値を予測する ֤Ϙλϯͷ2 ͷ༧ଌ ʢը૾ʣ %FFQ2/FUXPSL %2/
Deep Q-Network(DQN)の学習 1. Deep Q-Networkの重みとバイアスを初期化(乱数とか) 2. 状態を⼊⼒してQ値を予測 3. ゲームをプレイさせてデータを集める 4.
集めたデータで重みとバイアスを更新 5. 2に戻る ঢ়ଶʢը૾ʣ %FFQ2/FUXPSL ༧ଌͨ͠2
データ収集の効率化 重みとバイアスの修正の時間 < データ収集にかかる時間 並列してデータ収集
データ収集の効率化 重みとバイアスの修正の時間 < データ収集にかかる時間 並列してデータ収集 • ࣮ࡍʹ৭ʑΛՃ͑ͨ"QF9ͱݺ ΕΔख๏Λ͍ͬͯΔ •
࣮3-MJCʢ1ZUIPOͷڧԽֶशͷͨΊ ͷϥΠϒϥϦʣΛར༻ <)PSHBO FUBM >
マールタスが得意なゲーム ⾏動に対して報酬が即座に反映する:アクションゲーム ⾏動に対する報酬の反映が遅いと学習が難しい ⾏動パターンが少ない:クリックよりもキーボード操作 Q学習は離散の値を前提にしている
マールタスが不得意なゲーム 報酬がすぐに与えられない:RPG系 ゲームオーバー時にしかスコアがもらえない スコアがもらえるが限られた複雑な操作をしないと進めない ⾔語の理解を必要とする ⾏動パターンが連続:マウス操作とか
ルールを機械に学ばせる ⾏動に対して報酬が即座に反映する:アクションゲーム ⾏動に対する報酬の反映が遅いと学習が難しい ⾏動パターンが少ない:クリックよりもキーボード操作 Q学習は離散の値を前提にしている
まとめ エージェントと環境、⾏動、状態、報酬 ある状態で⾏動を選択した場合の未来のスコアを考える(Q値) Q値は簡単に求められないので近似する データを集める Deep Q-NetworkでQ値を予測させる 得意なゲーム/不得意なゲームがあるよ