deep dream 機械が見た夢

47
DeepDream 機械が見た夢

Upload: harumitsu-nobuta

Post on 16-Aug-2015

374 views

Category:

Engineering


2 download

TRANSCRIPT

Page 1: Deep dream   機械が見た夢

DeepDream機械が見た夢

Page 2: Deep dream   機械が見た夢

目次1. はじめに

1.1. 本日の注意1.2. 夢とはなにか1.3. DeepDream について

2. 動かしてみる2.1. 動かしてみる2.2. 何が起こっているのか2.3. なぜ夢なのか

3. 技術的なお話3.1. 基礎知識3.2. ネットワーク構成3.3. 印象強調アルゴリズム3.4. レイヤーと抽象度

Page 3: Deep dream   機械が見た夢

第1章

はじめに

Page 4: Deep dream   機械が見た夢

1.1 本日の注意

● 技術的な点○ DeepLearning については話しません○ 正確さよりなんとなく分かる、を重視してます○ 誤りがある可能性があります

■ @halhorn が独自にコードを読んで解釈したものです

● グロい画像が出てくる可能性があります○ 世界がグロいんだからしかたありません○ 不完全な生命の描写は気持ち悪いのです

Page 5: Deep dream   機械が見た夢

1.2 夢とは何か

記憶と映像の閉じられたループ

- トリガーは外的・内的刺激であっても、見る世界は記憶から作られた映像

夢というのは、主としてレム睡眠の時に出現するとされ、睡眠中は感覚遮断に近い状態でありながら、大脳皮質や(記憶に関係のある)辺縁系の活動水準が覚醒時にほぼ近い水準にあるために、外的あるいは内的な刺激と関連する興奮によって 脳の記憶貯蔵庫から過去の記憶映像が再生されつつ、記憶映像に合致する夢のストーリーをつくってゆく

wikipedia より

現実

Page 6: Deep dream   機械が見た夢

Google、人工神経ネットワークが見た『夢』を公開

http://japanese.engadget.com/2015/06/21/google-dream/

1.3 DeepDreamについて

Page 7: Deep dream   機械が見た夢

第2章

動かしてみる

Page 8: Deep dream   機械が見た夢

2.1 動かしてみる

DeepDreamを動かすまで

http://qiita.com/halhorn/items/ff05c2735c0b60356da1(動かすまでにはそれなりに時間がかかります!)

実際に画像が徐々に変形して Dream していくところを

見たほうがこれからの説明は実感がわきます!

Page 9: Deep dream   機械が見た夢

2.1 動かしてみた

Page 10: Deep dream   機械が見た夢

2.2 何が起こっているのか (ざっくり)

画像を見る 印象を増幅(鳥っぽいなぁ)

印象から画像を描く

画像を見る 印象を増幅

...

鳥にしか見えなくなった

正確には順序は逆。印象を強める用に画像を加工する。繰り返し印象強調

Page 11: Deep dream   機械が見た夢

2.2 何が起こっているのか

岩を見る→点が目のように見えた→その印象を絵に書いた→岩を見る→岩が犬の顔に見えた→その印象を絵に書いた→・・・(不正確な表現ですが)

Page 12: Deep dream   機械が見た夢

2.3 なぜ「夢」なのか

DeepDream

記憶と映像の閉じられたループ

印象強調と映像生成の閉じられたループ

※この解釈は @halhorn の個人的解釈です

「夢」のような時系列上のループでは無いが、「閉じられたループの中で強調されていく印象」という意味では似ているのかもしれない。夢で「怖い」って思った途端、どんどん怖い方向に夢が進んでいくようなもの。かな。

Page 13: Deep dream   機械が見た夢

2.3 なぜ「夢」なのか

DeepDream

記憶と映像の閉じられたループ

※この解釈は @halhorn の個人的解釈です

「夢」のような時系列上のループでは無いが、「閉じられたループの中で強調されていく印象」という意味では似ているのかもしれない。夢で「怖い」って思った途端、どんどん怖い方向に夢が進んでいくようなもの。かな。

印象強調と映像生成の閉じられたループ

Page 14: Deep dream   機械が見た夢

もう少し詳しく!

印象強調と映像生成の閉じられたループ

がどのようなアルゴリズムなのか

● 基礎知識 - ニューラルネットについて● DeepDreamのネットワーク構成● 印象強調アルゴリズム

Page 15: Deep dream   機械が見た夢

第3章

技術的な話

Page 16: Deep dream   機械が見た夢

第3章

技術的な話

基礎知識

Page 17: Deep dream   機械が見た夢

3.1 基礎知識 - NeuralNetwork脳を模して作られた学習モデル

画像

Page 18: Deep dream   機械が見た夢

3.1 基礎知識 - NeuralNetwork

R

G

B

R

G

人間にはよくわからないもやもやとした 中間表現ができる

簡単に言うと

印象みたいなもの

0.9

0.1

0.0

1.2

0.1

0.7

0.2

Page 19: Deep dream   機械が見た夢

3.1 基礎知識 - DeepLearning多層型の NeuralNetwork を学習させる手法

多層

Page 20: Deep dream   機械が見た夢

3.1 基礎知識 - DeepDream元々は画像に写っているものの種類を答えるネットワーク

Page 21: Deep dream   機械が見た夢

第3章

技術的な話

ネットワーク構成

Page 22: Deep dream   機械が見た夢

3.2 DeepDream - ネットワーク構成

画像入力

Page 23: Deep dream   機械が見た夢
Page 24: Deep dream   機械が見た夢
Page 25: Deep dream   機械が見た夢
Page 26: Deep dream   機械が見た夢

画像に写っているものの種類

大変、Deep です。

Page 27: Deep dream   機械が見た夢

3.2 DeepDream - ネットワーク構成

全体図はこれ

Page 28: Deep dream   機械が見た夢

3.2 DeepDream - ネットワーク構成

ざっくり分けると、入力(画像)・3つの中間層・出力(種類) に分けられる

inception

3inception

4inception

5

Page 29: Deep dream   機械が見た夢

第3章

技術的な話

印象強調アルゴリズム

Page 30: Deep dream   機械が見た夢

「印象」を生成

R

G

B

R

G

inception

3inception

5inception

4

3.2

0.3

-0.1

5.7

-7.6

生成

3.3 印象生成アルゴリズム

↑中間層に「印象」 (=中間層のパターン )が作られる

Page 31: Deep dream   機械が見た夢

「印象」を強調

R

G

B

R

G

inception

3inception

5

逆伝播 印象(=中間層のパターン )を強調するよう画像修正

画像に印象が乗る

inception

4

3.2

0.3

-0.1

5.7

-7.6

3.3 印象生成アルゴリズム

Page 32: Deep dream   機械が見た夢

更に「印象」を生成

R

G

B

R

G

inception

3inception

5

生成

inception

4

5.2

0.7

-0.3

8.5

-8.7

3.3 印象生成アルゴリズム

↑「印象」がより強くでるよう画像を変えたので、印象が強くなる

Page 33: Deep dream   機械が見た夢

更に「印象」を強調

R

G

B

R

G

inception

3inception

5

逆伝播 どんどん「印象」が強固に!どんどん画像が「印象」で歪む!

画像に印象が乗る

inception

4

5.2

0.7

-0.3

8.5

-8.7

3.3 印象生成アルゴリズム

Page 34: Deep dream   機械が見た夢

コード上では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 のコード

Page 35: Deep dream   機械が見た夢

アルゴリズムまとめ

中間層=「印象」の発火パターンが

顕著になるよう、

入力画像を修正していく

3.3 印象生成アルゴリズム

通常の NeuralNetwork 学習 DeepDream

逆伝播するもの -(出力の二乗誤差の微分 ) あるレイヤーのニューロンの発火状況

更新するもの ネットワークの重み 入力の画像(=入力ニューロンの発火)

更新方向 誤差を少なくする方向 有るレイヤーの発火パターンを強調する方向

Page 36: Deep dream   機械が見た夢

第3章

技術的な話

レイヤーと抽象度(おまけ)

Page 37: Deep dream   機械が見た夢

画像識別

どうやって画像識別してるの?

inception

3inception

4inception

5

3.4 レイヤーと抽象度

Page 38: Deep dream   機械が見た夢

画像識別

画像から徐々に、写っているものの種別になってるはず!

inception

3inception

4inception

5

3.4 レイヤーと抽象度

Page 39: Deep dream   機械が見た夢

画像識別

深い中間層ほど、抽象的な情報を扱う

inception

3inception

4inception

5

抽象度低            抽象度高

3.4 レイヤーと抽象度

Page 40: Deep dream   機械が見た夢

DeepDreamで実験!

どの中間レイヤーの

「印象」を強調するか

inception

3

inception

4

inception

5

元画像

3.4 レイヤーと抽象度

その中間レイヤーの

性質が出る

Page 41: Deep dream   機械が見た夢

中間層 3a を強調

inception_3a/output(3のレイヤーの画像寄り)● エッジ● つぶつぶ

inception

3

inception

4

inception

5

3.4 レイヤーと抽象度

Page 42: Deep dream   機械が見た夢

中間層 3b を強調

inception_3b/output(3aの一つ奥)● テクスチャ的なの● 絵画的

inception

3

inception

4

inception

5

3.4 レイヤーと抽象度

Page 43: Deep dream   機械が見た夢

中間層 4a を強調

inception_4a/output(4のレイヤーの画像寄り)● 目、犬● 意味が出てくる

inception

3

inception

4

inception

5

3.4 レイヤーと抽象度

Page 44: Deep dream   機械が見た夢

中間層 4c を強調

inception_4c/output(4のレイヤーa-eのうち3番目)● 目、犬、木、建物(?)● より意味が出てくる● 目=微小単位が少し抑制

inception

3

inception

4

inception

5

3.4 レイヤーと抽象度

Page 45: Deep dream   機械が見た夢

中間層 5a を強調

inception_5a/output(5のレイヤーの画像寄り)● 魚?● 体の部分ではなく体全体● 微小単位がより抑制

○ 目が殆ど無い

inception

3

inception

4

inception

5

3.4 レイヤーと抽象度

Page 46: Deep dream   機械が見た夢

中間層 5b を強調

inception_5a/output(最も奥のレイヤー)● なんかの生物● 全体像

inception

3

inception

4

inception

5

3.4 レイヤーと抽象度

Page 47: Deep dream   機械が見た夢

まとめ

● DeepDream○ 画像 → 印象 → 印象強調 → 画像 → 印象 …○ 印象強調と映像生成の閉じられたループ

● 学習手法○ 重みの更新の代わりに入力画像を更新○ 特定の「印象」レイヤーの発火を強調する方向に

● 試したい!○ DeepDreamを動かすまで○ DeepDreamのWebInterface○ DeepDreamのソースコード