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.

MIRU MIRU わかる GAN

7,662 views

Published on

MIRU 2018 でのチュートリアル講演

Published in: Technology

MIRU MIRU わかる GAN

  1. 1. MIRU MIRU わかる GAN オムロン株式会社(前 株式会社ABEJA) 高橋 智洋 * 今のところ,動画は未対応です...
  2. 2. 自己紹介 • 高橋 智洋 • 所属: オムロン (2018 年 6 月入社) • 興味 • 理論物理: 学生時代は一般相対論の研究をしてました. • 数理計画法: 仕事で分枝限定法など離散最適について調査・実 装. • 機械学習: 今の仕事.最近はロボティクス関連も.
  3. 3. 目次 1. Original GAN の説明 2. Original GAN の勾配消失と不安定性 3. GAN の training は収束しないことも 4. 応用例 - 異常検知- 5. まとめ 発表用に作成したコードは,全部ではないが https://github.com/takat0m0 にあります!
  4. 4. Original GAN GAN 概要 どういう最適化問題を解けば良いの? 何故その最適化問題で良いの? 実験結果 参考文献 - arXiv:1406.2661 - arXiv:1511.06434 - arXiv:1701.07875
  5. 5. GAN 概要 • 登場人物は,p_data, p_z, discriminator, generator の四人 . p_z(z) 〜 z p_data 〜 G D True False
  6. 6. GAN 概要 • 登場人物は,p_data, p_z, discriminator, generator の四人 . p_z(z) 〜 z p_data 〜 G D True False データの分 布 Z を種に D を騙せるよう なデータ作成 データを True, G(z) を False と答え る 人工的な分布
  7. 7. GAN 概要 p_data からのサンプル Generator が 作るデータ
  8. 8. GAN 概要 p_data からのサンプル False True Discriminator は 判別面を学習. Generator が 作るデータ
  9. 9. GAN 概要 p_data からのサンプル False True Generatorは,判別面を固定して True と言われる様に学習Generator が 作るデータ
  10. 10. GAN 概要 p_data からのサンプル Generator が 作るデータ False TrueDiscriminator は 判別面を学習.
  11. 11. GAN 概要 p_data からのサンプル Generator が 作るデータ False True Generatorは,判別面を固定して True と言われる様に学習
  12. 12. どういう問題を解けば良いの? • 以下が前項に対応しそうな最適化問題.
  13. 13. どういう問題を解けば良いの? • 以下が前項に対応しそうな最適化問題. P_data からの draw x に対して, D(x) = 1 とすれば最大. G(z) に対して, D(G(z)) = 0 とすれば最大.
  14. 14. どういう問題を解けば良いの? • 以下が前項に対応しそうな最適化問題. G(z) に対して, D(G(z)) = 1 とすれば最小.
  15. 15. どういう問題を解けば良いの? • 以下が前項に対応しそうな最適化問題. • 次項以降で,何故これで良いのかを見る. • 結論は,上記の最適解が以下の二つの確率分布が一致するときだから. • データ分布 p_data • p_z と G から導出される確率分布 p_g ( p_g(G(z)) = p_z(z)/(dG/dz) )
  16. 16. 何故その問題で良いの? • まず,max_D を考えてみる. の時に最大
  17. 17. 何故その問題で良いの? • 続いて min_G を考える. p_data = p_g の時に最小
  18. 18. 提案手法 • min max 最適化? どうすれば良いか分からないから交互で. Gを止めて,D について以下を一回だけ勾配降下 Dを止めて,G について以下を一回だけ勾配降下
  19. 19. 提案手法 • min max 最適化? どうすれば良いか分からないから交互で. Gを止めて,D について以下を一回だけ勾配降下 Dを止めて,G について以下を一回だけ勾配降下
  20. 20. 提案手法 • min max 最適化? どうすれば良いか分からないから交互で. Gを止めて,D について以下を一回だけ勾配降下 Dを止めて,G について以下を一回だけ勾配降下
  21. 21. ここまでのまとめ • 以下の最適化問題を解くことで,p_data = p_g と学習できる. • ちょっとした疑問: 本当に一致するの?
  22. 22. 簡単な実験結果 p_z から draw して G で送った先 ≒p_g のランダムサンプル • p_data: 2 次元の Gaussian 𝑁( 1 2 , − 1 2 , 0.5𝐼) • p_z: 256 次元[0,1]一様分布 p_data
  23. 23. p_data が一様分布な例 • p_data: 特定の二次元格子点のサンプリング(一様 MIRU 分布!) • p_z: 192 次元正規分布 𝑁(0, 𝐼) p_data p_z から draw して G で送った先 ≒p_g のランダムサンプル
  24. 24. 画像の例 DCGAN論文(arXiv:1511.06434)より引用 • p_data: 手持ち画像の一様サンプリング • p_z: 100 次元[0, 1] 一様分布
  25. 25. GAN まとめ • train することで例えば非常に綺麗な画像を生成できる. • 二つの確率分布の一致という理論背景がある. • ただし,次項以降で述べるようにやっぱり色々と問題は ある. • 勾配消失と不安定性 • 収束性
  26. 26. 勾配消失と不安定性 Original GAN の勾配消失 勾配消失のためによくやること 不安定性 対策例 参考文献 - M.Arjovsky et al., ICLR2017. - arXiv:1611.04076 - arXiv:1704.00028 - arXiv:1711.10337 - arXiv:1802.05957
  27. 27. 勾配消失 𝐷 𝑥 = 𝜎 𝑓 𝑥 といつも通り sigmoid が最後にあるとする. 偽物を完全に偽物と言える状況だと勾配消失. * 高画質なほど input の自由度が多く,discriminator の判断材料が増 えるため,勾配消失が起きやすく学習が止まりやすいと言われてい る.
  28. 28. 勾配消失の例 初期として「全てを false と答える discriminator」を用意した結果.
  29. 29. 勾配消失のためによくやること • Loss をちょっと違ったものに置き換えてしまう.
  30. 30. 置き換え結果 初期として「全てを false と答える discriminator」を用意した場合の結果比較. *置き換えると,discriminatorがgeneratorが作ったものを True と言うと勾配消失 が,discriminator は False と言いたがると信じれば, こちらの方が安定しそう
  31. 31. 置き換え後の不安定性 • 以下のような不安定性が生じうる. Discriminator 強いと,分母 ≒ 0. 分子の大きさが普通くらいでも微分が大きくなりうる. * M.Arjovsky et al., ICLR2017.では,上記のように議論しているが, arXiv:1802.05957 では,𝐷 𝑥 = 𝜎(𝑓(𝑥))として, 𝛻𝐷 𝐷 = 1 − 𝜎 𝑓 𝑥 𝛻𝑓 と計算されるが𝛻𝑓 が発散しうる,という形で議論している.
  32. 32. 不安定性の例 • 以下のように不安定さと |𝛻𝐷/𝐷| は関係があるケースも. 各 epoch の |𝛻𝐷/𝐷|の最大値各 epoch での生成画像
  33. 33. 置き換え前 置き換え後 勾配消失,置き換えで一応対処可 勾配が大きくなって不安定かも
  34. 34. 対策 1: loss を修正してみる • divergence 最小化で一致を狙う • 確率分布間距離 最小化で一致を狙う. 例: Least Square GAN(arXiv:1611.04076) 例: WGAN-GP(arXiv:1704.00028)
  35. 35. 対策 2: 𝛻𝐷が大きくならないように • Spectral Normalization が注目されている(arXiv:1802.05957,詳細は論 文を) |𝑁𝑁 𝑥+𝜖 −𝑁𝑁(𝑥)| |𝜖| ≤ 𝑙 𝑆𝑁 𝑊 𝑙 NeuralNet の Lipschitz norm は weight matrix の最大特異値の積で抑えられる. 上式が成立することを利用して,NeuralNet の変化量なり微分なりを抑え る手法.
  36. 36. 無い時 ある時 対策 2: 𝛻𝐷が大きくならないように • Discriminator に Spectral Normalization 入れた例.
  37. 37. 勾配消失と不安定性まとめ • Original GAN では 勾配消失とか不安定性がありそう. • 対策として,loss の変更や normalization などが考えられている. • なんか計算がうまく行かないなぁ,というときには是非これらの変更を!
  38. 38. 収束しないことも 収束せず周期的になることも なぜ周期的? 対策例 参考文献 - arXiv:1705.10461 - L.Mescheder et al., ICML2018
  39. 39. 収束せず周期的になることも • 近くまで行くが,収束せずに周期的になることが多い. 赤が p_data で,青が G(z) の頻度
  40. 40. • GAN の training は速度場に沿った動きと見ることもできる. なぜ周期的? δt は learning rate. 交互に勾配降下するが 大体同時だと思うと左記.
  41. 41. • GAN の training は速度場に沿った動きと見ることもできる. なぜ周期的? δt は learning rate. 交互に勾配降下するが 大体同時だと思うと左記.
  42. 42. • GAN の training は速度場に沿った動きと見ることもできる. なぜ周期的?
  43. 43. • GAN の training は速度場に沿った動きと見ることもできる. なぜ周期的? (Lars Mescheder et al., ICML2018) 𝜃 𝜙
  44. 44. なぜ周期的? • GAN の速度場はどっち系? ある点に収束する系 ぐるぐる回って真ん中に行けない系
  45. 45. なぜ周期的? • 𝜕𝐿 𝐷 𝜃, 𝜙 = 𝜕𝐿 𝐺 𝜃, 𝜙 = 0 となる( 𝜃, 𝜙)の近くで考えてみる.
  46. 46. なぜ周期的? • 𝜕𝐿 𝐷 𝜃, 𝜙 = 𝜕𝐿 𝐺 𝜃, 𝜙 = 0 となる( 𝜃, 𝜙)の近くで考えてみる.
  47. 47. なぜ周期的? • 𝜕𝐿 𝐷 𝜃, 𝜙 = 𝜕𝐿 𝐺 𝜃, 𝜙 = 0 となる( 𝜃, 𝜙)の近くで考えてみる.
  48. 48. なぜ周期的? • 𝜕𝐿 𝐷 𝜃, 𝜙 = 𝜕𝐿 𝐺 𝜃, 𝜙 = 0 となる( 𝜃, 𝜙)の近くで考えてみる. V’ に純虚数な固有値があればV’ の固有値が全て負の実数であれば
  49. 49. なぜ周期的? • 混合 Gaussian を p_data とした場合の計算結果. arXiv:1705.10461より引用) 収束後の固有値 p_data ということで, 微分 = 0 の点の周りは ぐるぐる系!
  50. 50. 対策 • 固有値を捻じ曲げるようなRegularized term を入れる. • 例えば以下のように速度が小さくなるようなインセンティブを 与える.
  51. 51. Regularized term あるなし比較 赤が p_data で,青が G(z) の頻度 無い時 ある時
  52. 52. 収束性まとめ • GAN の収束性を議論.実は,なかなか収束しないことを確認. • 収束させるためには,正規化項を入れるなどの工夫が必要. • 簡単な例を用いて,正規化項がないと収束は厳しいと主張する話 もある( L.Mescheder et al., ICML2018 ). • この論文では違う正規化項も主張している. • 「収束するほど,分布をよく近似できる = 生成画像の質も良くな る」と思われる.生成画像の質をもう少し高めたいときに是非!
  53. 53. 応用例 – 異常検知- motivation 手法 結果 参考文献 - arXiv:1703.05921 - arXiv:1804.04488
  54. 54. motivation • 製造業などでの外観検査を考える.その際には,傷などが ない正常データが圧倒的に多数だと考えられる. • 正常データだけから正常異常を見分けられるようにしたい 正常データ 異常データ >> (arXiv:1703.05921より引用)
  55. 55. 手法(第一段階) • このような学習を行うと,Generator は正常データかそれに近 い画像のみ生成できるようになる. 正常データのみを使って学習 (arXiv:1703.05921より引用)
  56. 56. 手法(第二段階) • GAN 学習後に画像 𝑥 に対して,以下の最適化問題を解く. 正常データ 異常データ 小 大 適当な threshold で判定 (arXiv:1703.05921より引用) min 𝑧 𝑥 − 𝐺 𝑧 2 min 𝑧 𝑥 − 𝐺 𝑧 2 min 𝑧 𝑥 − 𝐺 𝑧 2
  57. 57. 結果 上から input, 一番近い画像, diff, 閾値処理の結果 正常データ 異常データ (arXiv:1703.05921より引用)
  58. 58. 異常検知まとめ • GAN が分布を一致させるもの,ということを利用した異常検知を紹 介. • vector z と画像が結びついているので,z の方で探索するという発 想が面白いように思う. • ただ探索方法はどうするか一考の余地がありそう. • ちょっと遊んでみた感触.第二段階を gradient descent で解い たらlocal minimum に入ることがちょくちょく見られた. • auto encoder (あるいは VAE)も絡めたアーキテクチャも考案されてい る(arXiv:1804.04488)
  59. 59. まとめ
  60. 60. まとめ • GAN は,二つの分布を一致させるような学習. • そのために綺麗な絵を作れたりする. • ただ問題も結構ある. • 問題解決に向けて loss の変更や regularization term などの工夫が考案. • GAN の training がうまく行かないときに試して頂ければ! • 画像生成以外のタスクへの応用もちょっとだけなされている. • ここでは異常検知を紹介.

×