生成系ニューラルネットワークまとめ summary of generative neural network
TRANSCRIPT
生成系ニューラルネットワークまとめ
三宅 陽一郎
(日本デジタルゲーム学会 理事)
2017.12.22
Tokyo Houdini Meetup Vol.1~ゲーム開発のためのHoudini活用編~
https://www.facebook.com/youichiro.miyakehttp://www.slideshare.net/youichiromiyake
[email protected]://miyayou.com
GenerativeNeural Network
Youcihiro Miyake
(日本デジタルゲーム学会 理事)
2017.12.22
Tokyo Houdini Meetup Vol.1~ゲーム開発のためのHoudini活用編~
https://www.facebook.com/youichiro.miyakehttp://www.slideshare.net/youichiromiyake
[email protected]://miyayou.com
神経素子(ニューロン)とは?
入力
入力
入力
出力
入力
この中にはイオン(電解,Na+,K+)溶液が入っていて、入力によって電圧が高まると出力する仕組みになっています。
100mVぐらいニューラルネットワーク内シグナル伝達スピード 100(m/sec) … 案外遅い
http://www.brain.riken.go.jp/jp/aware/neurons.html
ニューラルネットを理解しよう② 基本原理
http://www.pri.kyoto-u.ac.jp/brain/brain/11/index-11.html
医学的知識
http://www.biwako.shiga-u.ac.jp/sensei/mnaka/ut/sozai/ai.html
モデル化
数学的モデル
ニューロン 人工ニューロン
入出力関係のグラフ 入出力関係の関数(シグモイド関数)
ニューラルネットを理解しよう② 数学的原理
http://www.pri.kyoto-u.ac.jp/brain/brain/11/index-11.html
医学的知識
http://www.biwako.shiga-u.ac.jp/sensei/mnaka/ut/sozai/ai.html
モデル化
数学的モデル
ニューロン人工ニューロン
入出力関係のグラフ 入出力関係の関数(シグモイド関数)
ニューラルネットワーク(ニューロンをつなげたもの)
道具はこれで全て。これで何ができるだろう?
ニューラルネットを理解しよう③ 数学的原理
数学的モデル
入力信号=繋がっているニューロンからやって来ます
ウエイト(重み)=各ニューロン間の結合の強さ
「入力信号x重み」+「バイアス」(初期電位、適当な小さな値)
出力信号(0~1の間)
バイアスをうまく調整して、このセンシティブな領域に入力が集中するように調整しよう!(ニューラルネットの技術的なコツ)
ニューラルネットを理解しよう③ 数学的原理
数学的モデル 階層型ニューラルネットワーク… 一方向にニューロンをつなげたもの
入力層 隠れ層 出力層
重み 重み
最初に定義するもの=ウエイト(重み) 、バイアスとりあえず全ての結合を定義しておく(ニューロン間の重みを0にすれば切れる)
数値の組みが入ります
数値の組みが出ます
これは3層の例だけど、何層つなげてもよい
一旦定義してから変えることができないもの…全体の構造変えることができるもの…ウエイト(重み)
数学的モデル
数値の組みが入ります
階層型ニューラルネットで学習とは、ある入力に対して特定の出力(学習信号)になるようにウエイトを変化させることを言います。
学習信号
実際の信号
誤差信号
①手動で少しずつ勘を頼りに変えて行く。 まず無理②えらい人が考えた方法を使ってみる。 誤差伝播法
伝播する誤差信号
伝播する誤差信号
どうやって?
ニューラルネットを理解しよう 逆伝播法学習
ニューラルネットを理解しよう 逆伝播法学習
数学的モデル
数値の組みが入ります
教師信号と実際の出力の差を、ウエイトを調整することで、縮めて行く。
学習信号
実際の信号
誤差信号
伝播する誤差信号
伝播する誤差信号
ニューラルネットの出力側から、誤差分を、後ろ側に分担して
負担するように、後ろのニューロンへ、そのニューロンが詰める大きさを含んだ情報を伝播して行く。
誤差伝播法(Back Propagation Method)
ニューラルネットを理解しよう 逆伝播法学習
数学的モデル 教師信号と実際の出力の差を、ウエイトを調整することで、縮めて行く。
伝播する誤差信号
伝播する誤差信号
ニューラルネットの出力側から、誤差分を、後ろ側に分担して
負担するように、後ろのニューロンへ、そのニューロンが詰める大きさを含んだ情報を伝播して行く。
誤差伝播法(Back Propagation Method)
信号 絵
画家: ジャスパー・フランシス・クロプシーPainter: Jasper Francis Cropsey
タイトル: ポンプトン・プレインズ
⑤ニューラルネットワークの構造が進化させる「NEAT」の技術
Mat Buckland, Chapter 11, AI techniques for game programming, Premier Press, 2002
(実行ファイルとソースコードがCD-ROMにあります)
これまでニューラルネットは、最初に構造を定義した後は変化しなかった。
動的にニューラルネットの構造を変化させる技術Neuron Evoluation of Augmenting Topologies (NEAT)
NEAT回路の構成を遺伝子コードで表現する。
Weight: 1.2
From: 1
To: 3
Enabled: Y
Recurrent: N
Innovation: 1
Weight: -3
From: 1
To: 4
Enabled: Y
Recurrent: N
Innovation: 6
Weight: 0.7
From: 2
To: 4
Enabled: Y
Recurrent: N
Innovation: 2
Weight: -2.1
From: 3
To: 4
Enabled: Y
Recurrent: N
Innovation: 6
Weight: 1.1
From: 3
To: 5
Enabled: N
Recurrent: N
Innovation: 3
Weight: 0.8
From: 4
To: 5
Enabled: Y
Recurrent: N
Innovation: 4
Weight: -1
From: 5
To: 3
Enabled: Y
Recurrent: Y
Innovation: 7
ID: 1
Type: Input
ID: 2
Type: Input
ID: 3
Type: hidden
ID: 4
Type: hidden
ID: 5
Type: Output
2
1
4
35
つなぎ方を定義する遺伝子
ニューロンを定義する遺伝子
入力 出力
NEAT回路の構成を遺伝子コードで表現する。
Weight: 1.2
From: 1
To: 3
Enabled: Y
Recurrent: N
Innovation: 1
Weight: -3
From: 1
To: 4
Enabled: Y
Recurrent: N
Innovation: 6
Weight: 0.7
From: 2
To: 4
Enabled: Y
Recurrent: N
Innovation: 2
Weight: -2.1
From: 3
To: 4
Enabled: Y
Recurrent: N
Innovation: 6
Weight: 1.1
From: 3
To: 5
Enabled: N
Recurrent: N
Innovation: 3
Weight: 0.8
From: 4
To: 5
Enabled: Y
Recurrent: N
Innovation: 4
Weight: -1
From: 5
To: 3
Enabled: Y
Recurrent: Y
Innovation: 7
ID: 1
Type: Input
ID: 2
Type: Input
ID: 3
Type: hidden
ID: 4
Type: hidden
ID: 5
Type: Output
2
1
4
35
リンク(つなぎ方)を定義する遺伝子
ニューロンを定義する遺伝子
Innovation ID によってリンク、ニューロンを全遺伝子共通の管理する。
無効
入力 出力
NEATにおける交叉親1
2
1
73
4
1
1->4
2
2->4
3
3->4
6
3->7
7
7->4
12
1->7
1
1->4
2
2->4
3
3->4
4
2->5
5
5->4
8
5->9
9
9->4
15
3->9
親2
2
1
3
95 4
Innovation ID
ID順に並べます。
1
1->4
2
2->4
3
3->4
1
1->4
2
2->4
3
3->4
4
2->5
5
5->4
6
3->7
7
7->4
8
5->9
9
9->4
12
1->7
15
3->9
交叉
4
2->5
5
5->4
8
5->9
9
9->4
15
3->9
1
1->4
2
2->4
3
3->4
NEATにおける交叉親1
2
1
73
4
1
1->4
2
2->4
3
3->4
6
3->7
7
7->4
12
1->7
1
1->4
2
2->4
3
3->4
4
2->5
5
5->4
8
5->9
9
9->4
15
3->9
親2
2
1
3
95 4
Innovation ID
交叉
2
1
3
95 4
4
2->5
5
5->4
8
5->9
9
9->4
15
3->9
1
1->4
2
2->4
3
3->4
子供=新しいニューラルネットワーク
弾幕自動生成
• Applying Evolutionary Algorithms to the Galactic Arms Race
• http://aigamedev.com/open/interviews/galactic-arms-race/
https://www.youtube.com/watch?v=N8q2uOwWcFc
はじめのGAN
https://elix-tech.github.io/ja/2017/02/06/gan.html
Unsupervised Representation Learning with Deep Convolutional Generative Adversarial NetworksAlec Radford, Luke Metz, Soumith Chintala
(Submitted on 19 Nov 2015 (v1), last revised 7 Jan 2016 (this version, v2)) https://arxiv.org/abs/1511.06434
Unsupervised Representation Learning with Deep Convolutional Generative Adversarial NetworksAlec Radford, Luke Metz, Soumith Chintala
(Submitted on 19 Nov 2015 (v1), last revised 7 Jan 2016 (this version, v2)) https://arxiv.org/abs/1511.06434
ゲームエンジンにおける自動生成(例 DUNIA ENGINE)•各開発会社のゲームエンジンには、自動生成技術が組み込まれている。
• https://www.youtube.com/watch?v=FI3oR6vqn1Q
次世代ゲームにおける自動生成技術(2007年12月、三宅陽一郎)
• https://www.slideshare.net/youichiromiyake/ss-51549802
GPU-BASED PROCEDURAL PLACEMENT IN HORIZON ZERO DAWN
• https://www.guerrilla-games.com/read/gpu-based-procedural-placement-in-horizon-zero-dawn
•データからプロシージャルにマップなど、ゲームに必要なデータを生成
この300年の技術の動向
時間
規模
産業革命
情報革命
ネット革命
知能革命
機械化・自動化(オートメーション化)
電子情報化
オンライン化
知能化
第二次産業革命
電動化
1750 1860 1960 1990 Now…
現代は「知能化」の時代に入りつつある。
第一次AIブーム 第二次AIブーム 第三次AIブーム
二つの人工知能
IF (s_collison==true)register_all(s_star);
assign_edge();assign_vertex();mix_all();
シンボルによる人工知能(シンボリズム))
ニューラルネットによる人工知能(コネクショニズム)
IBM ワトソンGooogle検索
など
AlphaGoなど
http://www.nature.com/nature/journal/v518/n7540/full/nature14236.html
神経素子(ニューロン)とは?
入力
入力
入力
出力
入力
この中にはイオン(電解,Na+,K+)溶液が入っていて、入力によって電圧が高まると出力する仕組みになっています。
100mVぐらいニューラルネットワーク内シグナル伝達スピード 100(m/sec) … 案外遅い
http://www.brain.riken.go.jp/jp/aware/neurons.html
ニューラルネットを理解しよう② 数学的原理
http://www.pri.kyoto-u.ac.jp/brain/brain/11/index-11.html
医学的知識
http://www.biwako.shiga-u.ac.jp/sensei/mnaka/ut/sozai/ai.html
モデル化
数学的モデル
ニューロン人工ニューロン
入出力関係のグラフ 入出力関係の関数(シグモイド関数)
ニューラルネットワーク(ニューロンをつなげたもの)
道具はこれで全て。これで何ができるだろう?
深階層ニューラルネットワーク
http://www.nature.com/nature/journal/v518/n7540/full/nature14236.html
ニューラルネットワーク=信号(波形)処理だけで知能を作る。
2第一次AIブーム(1960年代)
もし A ならば B
もし B ならば C
よって、
もし A ならば C
シンボルによる人工知能(記号主義)
ニューラルネットによる人工知能(コネクショニズム)
推論ベース ニューラルネット誕生
3第二次AIブーム(1980年代)
IF (A) then B
IF (C) then D
IF (E) then F
IF (G) then H
IF ( I ) then J
シンボルによる人工知能(記号主義)
ニューラルネットによる人工知能(コネクショニズム)
ルールベース新しい学習法=逆伝搬法
4第三次AIブーム(2010年代)
シンボルによる人工知能(記号主義)
ニューラルネットによる人工知能(コネクショニズム)
データベース新しい学習法=ディープラーニング
データベース
検索エンジン
キーワード 検索結果
検索
人
次の章で説明します
インターネットによる膨大なデータ
4 第三次AIブーム(2010年代)
時間
規模
1960 1990 2000
第一次AIブーム 第二次AIブーム 第三次AIブーム
1970 1980 2010
ルールベース
逆伝播法
データベース
ディープラーニング
推論ベース
ニューラルネット誕生
小型・中型コンピュータの普及
大型コンピュータ専門家のみのブーム
Deep Q-Learning
Volodymyr Mnih, Koray Kavukcuoglu, David Silver, Alex Graves,Ioannis Antonoglou, Daan Wierstra, Martin Riedmiller (DeepMind Technologies)
Playing Atari with Deep Reinforcement Learninghttp://www.cs.toronto.edu/~vmnih/docs/dqn.pdf
画面を入力操作はあらかじめ教えるスコアによる強化学習
二つの人工知能
IF (s_collison==true)register_all(s_star);
assign_edge();assign_vertex();mix_all();
シンボルによる人工知能(記号主義)
ニューラルネットによる人工知能(コネクショニズム)
IBM ワトソンなど
AlphaGoなど
http://www.nature.com/nature/journal/v518/n7540/full/nature14236.html
学習過程解析
Volodymyr Mnih, Koray Kavukcuoglu, David Silver, Alex Graves,Ioannis Antonoglou, Daan Wierstra, Martin Riedmiller (DeepMind Technologies)
Playing Atari with Deep Reinforcement Learninghttp://www.cs.toronto.edu/~vmnih/docs/dqn.pdf
• Pπ ロールアウトポリシー(ロールアウトで討つ手を決める。Pπ(a|s) sという状態でaを討つ確率)
• Pσ Supervised Learning Network プロの討つ手からその手を討つ確率を決める。Pσ(a|s)sという状態でaを討つ確率。
• Pρ 強化学習ネットワーク。Pρ(学習済み)に初期化。• Vθ(s’) 局面の状態 S’ を見たときに、勝敗の確率を予測する関数。つまり、勝つか、負けるかを返します。
Mastering the game of Go with deep neural networks and tree searchhttp://www.nature.com/nature/journal/v529/n7587/full/nature16961.htmlhttps://deepmind.com/research/alphago/
ブラウン運動
ロバート・ブラウン博士によって、1827年に発見された現象。微粒が媒質(液体)の中で行う不規則な運動。
アインシュタイン博士によって、熱運動する媒質の不規則な衝突によって引き起こされると説明された。
http://ja.wikipedia.org/wiki/%E3%83%96%E3%83%A9%E3%82%A6%E3%83%B3%E9%81%8B%E5%8B%95
ブラウン運動から地形生成
ロバート・ブラウン博士によって、1827年に発見された現象。微粒が媒質(液体)の中で行う不規則な運動。
アインシュタイン博士によって、熱運動する媒質の不規則な衝突によって引き起こされると説明された。
http://ja.wikipedia.org/wiki/%E3%83%96%E3%83%A9%E3%82%A6%E3%83%B3%E9%81%8B%E5%8B%95
宮田一乗「プロシージャル技術の動向」(CEDEC 2008)
ブラウン運動から地形生成
http://ja.wikipedia.org/wiki/%E3%83%96%E3%83%A9%E3%82%A6%E3%83%B3%E9%81%8B%E5%8B%95
https://www.youtube.com/watch?v=m4JDNzwFZFI
ブラウン運動から地形生成
http://ja.wikipedia.org/wiki/%E3%83%96%E3%83%A9%E3%82%A6%E3%83%B3%E9%81%8B%E5%8B%95
http://www.kenmusgrave.com
ブラウン運動から地形生成
http://ja.wikipedia.org/wiki/%E3%83%96%E3%83%A9%E3%82%A6%E3%83%B3%E9%81%8B%E5%8B%95
http://www.kenmusgrave.com
NO MAN’S SKY (Hello Games, 2016)
http://www.no-mans-sky.com/
宇宙、星系、太陽系、惑星を自動生成する。
FarCry2 (Dunia Engine ) デモ
草原自動生成 時間システム
樹木自動生成 動的天候システム
動的天候システム
http://www.farcry2-hq.com/downloads,18,dunia-engine-nr1.htm
Procedural Generation in WarFrame
• Warframeではダンジョンが自動生成される。
Daniel Brewer, AI Postmortems: Assassin's Creed III, XCOM: Enemy Unknown, and Warframe (GDC2015)http://www.gdcvault.com/play/1018223/AI-Postmortems-Assassin-s-Creed
Black Combination in WarFrame
• ブロックを組み合わる
• 完全に零からの生成
ではない。
このような生成のことを
Semi-proceduralと言う。
Daniel Brewer, AI Postmortems: Assassin's Creed III, XCOM: Enemy Unknown, and Warframe (GDC2015)http://www.gdcvault.com/play/1018223/AI-Postmortems-Assassin-s-Creed
WarFrame における自動生成マップの自動解析によるナビゲーションデータ作成
抽出した骨格に沿って自動的にナビゲーション・データを作成します。
Daniel Brewer, AI Postmortems: Assassin's Creed III, XCOM: Enemy Unknown, and Warframe (GDC2015)http://www.gdcvault.com/play/1018223/AI-Postmortems-Assassin-s-Creed
スタートポイント、出口、目的地の自動生成
Daniel Brewer, AI Postmortems: Assassin's Creed III, XCOM: Enemy Unknown, and Warframe (GDC2015)http://www.gdcvault.com/play/1018223/AI-Postmortems-Assassin-s-Creed
ヒートマップ(影響マップ)を用いてゲーム中にプレイヤーの周囲を自動解析
Daniel Brewer, AI Postmortems: Assassin's Creed III, XCOM: Enemy Unknown, and Warframe (GDC2015)http://www.gdcvault.com/play/1018223/AI-Postmortems-Assassin-s-Creed
ヒートマップ(影響マップ)とは、対象(ここではプレイヤー)を中心に、位置に温度(影響度)を与える方法です。距離に応じて減衰します。また時間が経つと、周囲に熱が拡散します。
Tactical Map の例 (影響マップ)(例)敵と自分の勢力をリアルタイムに計算する。
4 6 8 8 8 8 6 4 2 0 -1 -2 -4 -4 -4 -2
4 6 8 8 8 8 4 2 1 0 -2 -4 -4 -2
4 6 8 8 8 6 3 1 0 -2 -4 -4 -4 -2
4 6 8 8 8 6 6 4 1 0 -2 -4 -4 -2
2 4 6 8 6 6 4 4 0 -1 -2 -4 -4 -4 -2
1 2 4 6 6 4 2 2 -4 -5 -3 -3 -4 -4 -2 -1
3 3 3 3 4 2 2 0 -4 -5 -5 -8 -8 -6 -4 -2
3 3 2 2 2 0 -2 -4 -8 -10 -10 -8 -4 -2
3 3 3 2 2 1 0 -4 -8 -10 -10 -8 -8 -4 -2
2 2 2 2 1 1 0 -3 -8 -10 -10 -8 -8 -4 -2
1 1 1 1 0 0 -2 -4 -8 -8 -8 -8 -8 -8 -8 -8
0 0 0 0 0 -1 -1 -2 -5 -6 -6 -6 -8 -8 -8
0 0 0 0 -1 -2 -2 -2 -4 -4 -4 -6 -8 -8 -8 -8
0 0 0 0 -1 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2
0 0 0 0 -1 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2
0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
ヒートマップ(影響マップ)を用いてゲーム中にプレイヤーの周囲を自動解析
「ヒートが増加する=プレイヤーが近づく点」「ヒートが減少する=プレイヤーが遠ざかる点」
Daniel Brewer, AI Postmortems: Assassin's Creed III, XCOM: Enemy Unknown, and Warframe (GDC2015)http://www.gdcvault.com/play/1018223/AI-Postmortems-Assassin-s-Creed
アクティブ・エリアセット(Active Are Set)
Daniel Brewer, AI Postmortems: Assassin's Creed III, XCOM: Enemy Unknown, and Warframe (GDC2015)http://www.gdcvault.com/play/1018223/AI-Postmortems-Assassin-s-Creed
アクティブ・エリアセットは、プレイヤーの周囲の領域で、リアルタイムにメタAIがゲームを調整する領域
メタAIがアクティブ・エリアセット内でゲームを調整する
「ヒートが増加する=プレイヤーが近づく点」なので、モンスターを生成する。「ヒートが減少する=プレイヤーが遠ざかる点」なので、モンスターを停止する。
Daniel Brewer, AI Postmortems: Assassin's Creed III, XCOM: Enemy Unknown, and Warframe (GDC2015)http://www.gdcvault.com/play/1018223/AI-Postmortems-Assassin-s-Creed
メタAI (AI Director,)による動的ペース調整
Daniel Brewer, AI Postmortems: Assassin's Creed III, XCOM: Enemy Unknown, and Warframe (GDC2015)http://www.gdcvault.com/play/1018223/AI-Postmortems-Assassin-s-Creed
メタAI(自動適応ペーシング)メタAI (AI Director,)による
動的ペース調整
Daniel Brewer, AI Postmortems: Assassin's Creed III, XCOM: Enemy Unknown, and Warframe (GDC2015)http://www.gdcvault.com/play/1018223/AI-Postmortems-Assassin-s-Creed
メタAIによる出会うモンスターの数の大域調整
Daniel Brewer, AI Postmortems: Assassin's Creed III, XCOM: Enemy Unknown, and Warframe (GDC2015)http://www.gdcvault.com/play/1018223/AI-Postmortems-Assassin-s-Creed
プレイヤーのスタート地点から出口までの道のりで、コンスタントにモンスターと出会うようにする。
FarCry 4 の事例
Julien Varnier, Far Cry's AI: A Manifesto for Systemic Gameplay http://archives.nucl.ai/recording/far-crys-ai-a-manifesto-for-systemic-gameplay/
FarCry 4 の事例
Julien Varnier, Far Cry's AI: A Manifesto for Systemic Gameplay http://archives.nucl.ai/recording/far-crys-ai-a-manifesto-for-systemic-gameplay/
FarCry 4 の事例
Julien Varnier, Far Cry's AI: A Manifesto for Systemic Gameplay http://archives.nucl.ai/recording/far-crys-ai-a-manifesto-for-systemic-gameplay/
FarCry 4 の事例
Julien Varnier, Far Cry's AI: A Manifesto for Systemic Gameplay http://archives.nucl.ai/recording/far-crys-ai-a-manifesto-for-systemic-gameplay/