Download - Deep dream 機械が見た夢
DeepDream機械が見た夢
目次1. はじめに
1.1. 本日の注意1.2. 夢とはなにか1.3. DeepDream について
2. 動かしてみる2.1. 動かしてみる2.2. 何が起こっているのか2.3. なぜ夢なのか
3. 技術的なお話3.1. 基礎知識3.2. ネットワーク構成3.3. 印象強調アルゴリズム3.4. レイヤーと抽象度
第1章
はじめに
1.1 本日の注意
● 技術的な点○ DeepLearning については話しません○ 正確さよりなんとなく分かる、を重視してます○ 誤りがある可能性があります
■ @halhorn が独自にコードを読んで解釈したものです
● グロい画像が出てくる可能性があります○ 世界がグロいんだからしかたありません○ 不完全な生命の描写は気持ち悪いのです
1.2 夢とは何か
記憶と映像の閉じられたループ
- トリガーは外的・内的刺激であっても、見る世界は記憶から作られた映像
夢というのは、主としてレム睡眠の時に出現するとされ、睡眠中は感覚遮断に近い状態でありながら、大脳皮質や(記憶に関係のある)辺縁系の活動水準が覚醒時にほぼ近い水準にあるために、外的あるいは内的な刺激と関連する興奮によって 脳の記憶貯蔵庫から過去の記憶映像が再生されつつ、記憶映像に合致する夢のストーリーをつくってゆく
wikipedia より
現実
夢
Google、人工神経ネットワークが見た『夢』を公開
http://japanese.engadget.com/2015/06/21/google-dream/
1.3 DeepDreamについて
第2章
動かしてみる
2.1 動かしてみる
DeepDreamを動かすまで
http://qiita.com/halhorn/items/ff05c2735c0b60356da1(動かすまでにはそれなりに時間がかかります!)
実際に画像が徐々に変形して Dream していくところを
見たほうがこれからの説明は実感がわきます!
2.1 動かしてみた
2.2 何が起こっているのか (ざっくり)
画像を見る 印象を増幅(鳥っぽいなぁ)
印象から画像を描く
画像を見る 印象を増幅
...
鳥にしか見えなくなった
正確には順序は逆。印象を強める用に画像を加工する。繰り返し印象強調
2.2 何が起こっているのか
岩を見る→点が目のように見えた→その印象を絵に書いた→岩を見る→岩が犬の顔に見えた→その印象を絵に書いた→・・・(不正確な表現ですが)
2.3 なぜ「夢」なのか
DeepDream
記憶と映像の閉じられたループ
夢
印象強調と映像生成の閉じられたループ
※この解釈は @halhorn の個人的解釈です
「夢」のような時系列上のループでは無いが、「閉じられたループの中で強調されていく印象」という意味では似ているのかもしれない。夢で「怖い」って思った途端、どんどん怖い方向に夢が進んでいくようなもの。かな。
2.3 なぜ「夢」なのか
DeepDream
記憶と映像の閉じられたループ
夢
※この解釈は @halhorn の個人的解釈です
「夢」のような時系列上のループでは無いが、「閉じられたループの中で強調されていく印象」という意味では似ているのかもしれない。夢で「怖い」って思った途端、どんどん怖い方向に夢が進んでいくようなもの。かな。
印象強調と映像生成の閉じられたループ
もう少し詳しく!
印象強調と映像生成の閉じられたループ
がどのようなアルゴリズムなのか
● 基礎知識 - ニューラルネットについて● DeepDreamのネットワーク構成● 印象強調アルゴリズム
第3章
技術的な話
第3章
技術的な話
基礎知識
3.1 基礎知識 - NeuralNetwork脳を模して作られた学習モデル
画像
犬
猫
鳥
3.1 基礎知識 - NeuralNetwork
R
G
B
R
G
犬
猫
鳥
人間にはよくわからないもやもやとした 中間表現ができる
簡単に言うと
印象みたいなもの
0.9
0.1
0.0
1.2
0.1
0.7
0.2
3.1 基礎知識 - DeepLearning多層型の NeuralNetwork を学習させる手法
犬
猫
鳥
多層
3.1 基礎知識 - DeepDream元々は画像に写っているものの種類を答えるネットワーク
犬
猫
鳥
第3章
技術的な話
ネットワーク構成
3.2 DeepDream - ネットワーク構成
画像入力
画像に写っているものの種類
大変、Deep です。
3.2 DeepDream - ネットワーク構成
全体図はこれ
3.2 DeepDream - ネットワーク構成
ざっくり分けると、入力(画像)・3つの中間層・出力(種類) に分けられる
犬
猫
鳥
inception
3inception
4inception
5
第3章
技術的な話
印象強調アルゴリズム
「印象」を生成
R
G
B
R
G
犬
猫
鳥
inception
3inception
5inception
4
3.2
0.3
-0.1
5.7
-7.6
生成
3.3 印象生成アルゴリズム
↑中間層に「印象」 (=中間層のパターン )が作られる
「印象」を強調
R
G
B
R
G
犬
猫
鳥
inception
3inception
5
逆伝播 印象(=中間層のパターン )を強調するよう画像修正
画像に印象が乗る
inception
4
3.2
0.3
-0.1
5.7
-7.6
3.3 印象生成アルゴリズム
更に「印象」を生成
R
G
B
R
G
犬
猫
鳥
inception
3inception
5
生成
inception
4
5.2
0.7
-0.3
8.5
-8.7
3.3 印象生成アルゴリズム
↑「印象」がより強くでるよう画像を変えたので、印象が強くなる
更に「印象」を強調
R
G
B
R
G
犬
猫
鳥
inception
3inception
5
逆伝播 どんどん「印象」が強固に!どんどん画像が「印象」で歪む!
画像に印象が乗る
inception
4
5.2
0.7
-0.3
8.5
-8.7
3.3 印象生成アルゴリズム
コード上ではdef make_step(net, step_size=1.5, end='inception_4c/output', jitter=32, clip=True): '''Basic gradient ascent step.''' ... net.forward(end=end) # 決められた「印象」のレイヤーまで生成
dst.diff[:] = dst.data # 中間層の発火パターンを逆伝播の微分要素として代入 (ここよくわかってない) net.backward(start=end) # 逆伝播の実行
g = src.diff[0] # apply normalized ascent step to the input image src.data[:] += step_size/np.abs(g).mean() * g # 逆伝播された結果を基に画像を変更
通常の NeuralNetwork 学習 DeepDream
逆伝播するもの -(出力の二乗誤差の微分 ) あるレイヤーのニューロンの発火状況
更新するもの ネットワークの重み 入力の画像(=入力ニューロンの発火)
更新方向 誤差を少なくする方向 有るレイヤーの発火パターンを強調する方向
3.3 印象生成アルゴリズム
DeepDream のコード
アルゴリズムまとめ
中間層=「印象」の発火パターンが
顕著になるよう、
入力画像を修正していく
3.3 印象生成アルゴリズム
通常の NeuralNetwork 学習 DeepDream
逆伝播するもの -(出力の二乗誤差の微分 ) あるレイヤーのニューロンの発火状況
更新するもの ネットワークの重み 入力の画像(=入力ニューロンの発火)
更新方向 誤差を少なくする方向 有るレイヤーの発火パターンを強調する方向
第3章
技術的な話
レイヤーと抽象度(おまけ)
画像識別
どうやって画像識別してるの?
犬
猫
鳥
inception
3inception
4inception
5
3.4 レイヤーと抽象度
画像識別
画像から徐々に、写っているものの種別になってるはず!
犬
猫
鳥
inception
3inception
4inception
5
3.4 レイヤーと抽象度
画像識別
深い中間層ほど、抽象的な情報を扱う
犬
猫
鳥
inception
3inception
4inception
5
抽象度低 抽象度高
3.4 レイヤーと抽象度
DeepDreamで実験!
どの中間レイヤーの
「印象」を強調するか
犬
猫
鳥
inception
3
inception
4
inception
5
元画像
3.4 レイヤーと抽象度
その中間レイヤーの
性質が出る
中間層 3a を強調
inception_3a/output(3のレイヤーの画像寄り)● エッジ● つぶつぶ
犬
猫
鳥
inception
3
inception
4
inception
5
3.4 レイヤーと抽象度
中間層 3b を強調
inception_3b/output(3aの一つ奥)● テクスチャ的なの● 絵画的
犬
猫
鳥
inception
3
inception
4
inception
5
3.4 レイヤーと抽象度
中間層 4a を強調
inception_4a/output(4のレイヤーの画像寄り)● 目、犬● 意味が出てくる
犬
猫
鳥
inception
3
inception
4
inception
5
3.4 レイヤーと抽象度
中間層 4c を強調
inception_4c/output(4のレイヤーa-eのうち3番目)● 目、犬、木、建物(?)● より意味が出てくる● 目=微小単位が少し抑制
犬
猫
鳥
inception
3
inception
4
inception
5
3.4 レイヤーと抽象度
中間層 5a を強調
inception_5a/output(5のレイヤーの画像寄り)● 魚?● 体の部分ではなく体全体● 微小単位がより抑制
○ 目が殆ど無い
犬
猫
鳥
inception
3
inception
4
inception
5
3.4 レイヤーと抽象度
中間層 5b を強調
inception_5a/output(最も奥のレイヤー)● なんかの生物● 全体像
犬
猫
鳥
inception
3
inception
4
inception
5
3.4 レイヤーと抽象度
まとめ
● DeepDream○ 画像 → 印象 → 印象強調 → 画像 → 印象 …○ 印象強調と映像生成の閉じられたループ
● 学習手法○ 重みの更新の代わりに入力画像を更新○ 特定の「印象」レイヤーの発火を強調する方向に
● 試したい!○ DeepDreamを動かすまで○ DeepDreamのWebInterface○ DeepDreamのソースコード