Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
DeepDream
機械が見た夢
目次
1. はじめに
1.1. 本日の注意
1.2. 夢とはなにか
1.3. DeepDream について
2. 動かしてみる
2.1. 動かしてみる
2.2. 何が起こっているのか
2.3. なぜ夢なのか
3. 技術的なお話
3.1. 基礎知...
第1章
はじめに
1.1 本日の注意
● 技術的な点
○ DeepLearning については話しません
○ 正確さよりなんとなく分かる、を重視してます
○ 誤りがある可能性があります
■ @halhorn が独自にコードを読んで解釈したものです
● グロい画像...
1.2 夢とは何か
記憶と映像の閉じられたループ
- トリガーは外的・内的刺激であっ
ても、見る世界は記憶から作ら
れた映像
夢というのは、主としてレム睡眠の時に出現するとされ、睡眠中は感覚遮断に近い状態でありながら、大
脳皮質や(記憶に関係の...
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
3
inception
4
inception
5
第3章
技術的な話
印象強調アルゴリズム
「印象」を生成
R
G
B
R
G
犬
猫
鳥
inception
3
inception
5
inception
4
3.2
0.3
-0.1
5.7
-7.6
生成
3.3 印象生成アルゴリズム
↑中間層に「印象」(=中間層のパターン)が作...
「印象」を強調
R
G
B
R
G
犬
猫
鳥
inception
3
inception
5
逆伝播 印象(=中間層のパターン)を強調するよう画像修正
画像に印象
が乗る
inception
4
3.2
0.3
-0.1
5.7
-7.6
3...
更に「印象」を生成
R
G
B
R
G
犬
猫
鳥
inception
3
inception
5
生成
inception
4
5.2
0.7
-0.3
8.5
-8.7
3.3 印象生成アルゴリズム
↑「印象」がより強くでるよう画像を変えた...
更に「印象」を強調
R
G
B
R
G
犬
猫
鳥
inception
3
inception
5
逆伝播 どんどん「印象」が強固に!
どんどん画像が「印象」で歪む!
画像に印象
が乗る
inception
4
5.2
0.7
-0.3
8.5...
コード上では
def make_step(net, step_size=1.5, end='inception_4c/output', jitter=32, clip=True):
'''Basic gradient ascent step.'...
アルゴリズムまとめ
中間層=「印象」の発火パターンが
顕著になるよう、
入力画像を修正していく
3.3 印象生成アルゴリズム
通常の NeuralNetwork 学習 DeepDream
逆伝播するもの -(出力の二乗誤差の微分 ) あるレイヤ...
第3章
技術的な話
レイヤーと抽象度
(おまけ)
画像識別
どうやって画像識別してるの?
犬
猫
鳥
inception
3
inception
4
inception
5
3.4 レイヤーと抽象度
画像識別
画像から徐々に、写っているものの種別になってるはず!
犬
猫
鳥
inception
3
inception
4
inception
5
3.4 レイヤーと抽象度
画像識別
深い中間層ほど、抽象的な情報を扱う
犬
猫
鳥
inception
3
inception
4
inception
5
抽象度低            抽象度高
3.4 レイヤーと抽象度
DeepDreamで実験!
どの中間レイヤーの
「印象」を強調するか
犬
猫
鳥
ince
ptio
n
3
ince
ptio
n
4
ince
ptio
n
5
元画像
3.4 レイヤーと抽象度
その中間レイヤーの
性質が出る
中間層 3a を強調
inception_3a/output
(3のレイヤーの画像寄り)
● エッジ
● つぶつぶ
犬
猫
鳥
ince
ptio
n
3
ince
ptio
n
4
ince
ptio
n
5
3.4 レイヤーと抽象度
中間層 3b を強調
inception_3b/output
(3aの一つ奥)
● テクスチャ的なの
● 絵画的
犬
猫
鳥
ince
ptio
n
3
ince
ptio
n
4
ince
ptio
n
5
3.4 レイヤーと抽象度
中間層 4a を強調
inception_4a/output
(4のレイヤーの画像寄り)
● 目、犬
● 意味が出てくる
犬
猫
鳥
ince
ptio
n
3
ince
ptio
n
4
ince
ptio
n
5
3.4 レイヤーと抽象度
中間層 4c を強調
inception_4c/output
(4のレイヤーa-eのうち3番目)
● 目、犬、木、建物(?)
● より意味が出てくる
● 目=微小単位が少し抑制
犬
猫
鳥
ince
ptio
n
3
ince
ptio
n
4...
中間層 5a を強調
inception_5a/output
(5のレイヤーの画像寄り)
● 魚?
● 体の部分ではなく体全体
● 微小単位がより抑制
○ 目が殆ど無い
犬
猫
鳥
ince
ptio
n
3
ince
ptio
n
4
inc...
中間層 5b を強調
inception_5a/output
(最も奥のレイヤー)
● なんかの生物
● 全体像
犬
猫
鳥
ince
ptio
n
3
ince
ptio
n
4
ince
ptio
n
5
3.4 レイヤーと抽象度
まとめ
● DeepDream
○ 画像 → 印象 → 印象強調 → 画像 → 印象 …
○ 印象強調と映像生成の閉じられたループ
● 学習手法
○ 重みの更新の代わりに入力画像を更新
○ 特定の「印象」レイヤーの発火を強調する方向に
● 試し...
Deep dream   機械が見た夢
Deep dream   機械が見た夢
Deep dream   機械が見た夢
Upcoming SlideShare
Loading in …5
×

Deep dream 機械が見た夢

9,344 views

Published on

Google の作った画像識別エンジンが見た「夢」 DeepDream を自分の理解の範囲で解説します。

Published in: Engineering
  • Be the first to comment

Deep dream 機械が見た夢

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

×