Publicité
Publicité

Contenu connexe

Présentations pour vous(20)

Publicité

Dernier(20)

GANの簡単な理解から正しい理解まで

  1. DDoS2023春 小宮和真 武蔵野大学 データサイエンス学部 2年 misya11p @ds33miya GAN (敵対的生成ネットワーク) 武蔵野大学 DDoS(脱初心者データサイエンスオンラインセミナー) 2023春 2023/3/15
  2. DDoS2023春 目次 2023/3/15 1 1. GANとは 2. GANの仕組み 3. GANの実装 4. 色々なGAN 5. GANの正しい理解
  3. DDoS2023春 目次 2023/3/15 2 1. GANとは 2. GANの仕組み 3. GANの実装 4. 色々なGAN 5. GANの正しい理解 簡略化した説明 (ちょいちょい嘘が混じってる) 正しい説明
  4. DDoS2023春 1. GANとは 2023/3/15 3
  5. DDoS2023春 GAN 敵対的生成ネットワーク1 (Generative Adversarial Networks) 二つのニューラルネットワークを敵対させて学習させる仕組み 2023/3/15 4 1. GANとは 1. I. J. Goodfellow, et al., “Generative Adversarial Nets”, NIPS, 2014.
  6. DDoS2023春 GANの発想 GANの発想を考える.なおこの発想は私が捏造したもので本来の背景とは異な るので注意. まずニューラルネットワークを考える.これは人間の脳の神経回路を模した機 械学習モデル. 2023/3/15 5 1. GANとは 入 力 出 力
  7. DDoS2023春 GANの発想 NNは損失(正解との差)を小さくする様に学習を進める.しかし,正解として 一つのデータを定められない場合が存在する. 例)文章 → 画像 ある文章表現に沿った画像を正解とする場合,正解が大量に存在する 例)“かわいい猫” 2023/3/15 6 1. GANとは
  8. DDoS2023春 GANの発想 NNの評価指標が必ずしも損失である必要はないため,他の指標を考える ここで,人間の主観による評価を考える.NNの出力結果を人間が見て点数をつ けるということ.これなら正解を用意する必要がない. しかし以下の様な問題が生じる • 微分ができない • 時間がかかる 2023/3/15 7 1. GANとは
  9. DDoS2023春 GANの発想 うーん…人間の様にNNの出力を評価できて,評価結果を微分できるような都合 のいいモデルとかないかなぁ… → NNがあるじゃん といった発想で,NNの評価を別のNNに任せる仕組みが生まれた.これがGAN. 2023/3/15 8 1. GANとは 入 力 出 力 NN 評価用 NN 評 価
  10. DDoS2023春 GAN GANは生成モデルを得るための手法として使われる 生成モデル あるデータ集合の特徴を捉え,似たデータの生成が可能になったモデル 2023/3/15 9 1. GANとは 生成 モデル 学習 生成
  11. DDoS2023春 GAN GANで学習させるNNへの入力は乱数とする.これはノイズと呼ぶ. 「テキスト → 画像」の様に何らかの入力を考えたい場合,それは「条件」とし て入力とは異なる形で与える(詳細は4章) 2023/3/15 10 1. GANとは ノ イ ズ 出 力 NN
  12. DDoS2023春 GAN 生成したいデータの例を事前に集めておき,それを学習させることで,ノイズ から似たデータを生成できる様になる 2023/3/15 11 1. GANとは NN 1. 学習フェーズ NN 2. 生成フェーズ ノ イ ズ
  13. DDoS2023春 2. GANの仕組み 2023/3/15 12
  14. DDoS2023春 GANの仕組み まず用語を整理する • 生成器:ノイズからデータを生成するNN • 本物:生成したいデータ(予め集めておくデータ) • 偽物:生成器が生成したデータ • 識別器:データが偽物である確率を予測するNN 2023/3/15 13 2. GANの仕組み ノ イ ズ 偽 物 生成器 識別器 確 率
  15. DDoS2023春 識別器の学習 識別器:データが偽物である確率を予測するNN 本物に0,偽物に1のラベルを割り当てたデータで学習させる.偽物のデータは 生成器から得る. 2023/3/15 14 2. GANの仕組み 識別器 ノ イ ズ 生成器 本 物 偽 物 = 1 = 0 学習
  16. DDoS2023春 生成器の学習 生成器:ノイズからデータを生成するNN 識別器が出力した確率を元に逆伝播を行うことで,識別器に偽物と判断されな くなるデータ=本物に近いデータを生成するための勾配を得る.それを元に勾配 降下法でパラメータを更新する. 2023/3/15 15 2. GANの仕組み ノ イ ズ 偽 物 生成器 識別器 確 率 逆伝播
  17. DDoS2023春 敵対的学習 生成器と識別器を交互に何回も学習させること 識別器の学習→生成器の学習 という2ステップで生成器の学習が完了しそうだが, これだと上手くいかない.初めに強い識別器を作ってしまうと良い勾配が得ら れない為,生成器と並行して学習させる必要がある. 2023/3/15 16 2. GANの仕組み 識別器の学習 生成器の学習
  18. DDoS2023春 3. GANの実装 2023/3/15 17
  19. DDoS2023春 ノートブック参照 https://github.com/misya11p/GAN/blob/main/GAN_simple.ipynb 2023/3/15 18 3. GANの実装
  20. DDoS2023春 4. 色々なGAN 2023/3/15 19
  21. DDoS2023春 色々なGAN GANの発展系は大量に存在する ここに色々まとまっている: https://github.com/hindupuravinash/the-gan-zoo 2018時点で500以上のGANが提案されている 主要なものをいくつか紹介する 2023/3/15 20 4. 色々なGAN
  22. DDoS2023春 DCGAN1 Deep Convolutional GAN 畳み込み層を用いたGAN.それだけ.「普通のGAN」がDCGANも含めること もある. 畳み込みを使わないGANに比べて画像が綺麗になる. 識別器には普通の畳み込み層,生成器には転置畳み込み層というものを用いる. 2023/3/15 21 1. A. Redford, et al., “Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks”, ICLR, 2016. 4. 色々なGAN
  23. DDoS2023春 CGAN1 2023/3/15 22 1. M. Mirza, et al., “Conditional Generative Adversarial Nets”, arXiv: 1411.1784, 2014. 4. 色々なGAN Conditional GAN 条件付きGAN.生成するデータに制限をかける. 例)任意の数字の手書き画像生成 普通のGANと異なる点が3つ存在する
  24. DDoS2023春 CGAN 2023/3/15 23 4. 色々なGAN 1. 生成器と識別器が条件を考慮できる様にする 条件はone-hotベクトルとか文章ベクトルとかが考えられる.このベクトルを生 成器・識別器のどこかから入力できる様にする. ノ イ ズ 条 件 生成器 データ
  25. DDoS2023春 CGAN 2023/3/15 24 4. 色々なGAN 2. 学習データに適切な条件を割り当てておく 例) 5 ↓ 0 ↓ 4 ↓ 1 ↓ 9 ↓ 2 ↓
  26. DDoS2023春 CGAN 2023/3/15 25 4. 色々なGAN 3. 識別器が「本物で且つ条件が正しい場合」を識別できる様にする (学習時に)識別器に与えるデータと条件の組として以下を考える 1. 本物 & 正しい条件 2. 本物 & 間違った条件 3. 偽物 & (生成時に)生成器に与えた条件 識別器は,1かそれ以外かを識別できる様に学習する.こうすることで,生成器 が条件に沿ったデータを生成する様になる.
  27. DDoS2023春 pix2pix1 CGANの条件を画像にしたもの.ただノイズを入力しないのでただの画像変換モ デルという感じ(一応ドロップアウトでランダム性は持たせているらしい). 変換前と変換後の画像のペアを学習させることで以下の様な画像変換が行える. デモが試せるサイト: https://affinelayer.com/pixsrv/ 2023/3/15 26 1. P. Isola, et al., “Image-to-Image Translation with Conditional Adversarial Nets”, CVPR, 2017 4. 色々なGAN
  28. DDoS2023春 CycleGAN1 「あるドメイン(ある特徴を持ったデータ集合)から別のドメインへの変換を 行うモデル」を得るための手法.画像のスタイル変換などが可能になる. 2023/3/15 27 1. J. Y. Zhu, et al., “Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks”, ICCV, 2017. 4. 色々なGAN
  29. DDoS2023春 CycleGAN pix2pixとは違い,画像のペアを用意しなくていい.これが大きな利点. 以下の4つを定義する.また扱う二つのドメインをドメインA, ドメインBとする. • ドメインAからドメインBへの変換を行うモデル • ドメインBからドメインAへの変換を行うモデル • データがドメインAに属するかを判定するモデル • データがドメインBに属するかを判定するモデル 2023/3/15 28 4. 色々なGAN 生成器 識別器
  30. DDoS2023春 CycleGAN 二つの生成器は以下の2種類の損失を元に学習を進める 敵対的損失:変換後のデータを対象の識別器に入れた時の出力値 サイクル一貫性損失:「変換後のデータをもう片方の生成器に入れた時のデー タ」と「変換前のデータ」の差 生成器(A→B)の学習の場合 2023/3/15 29 4. 色々なGAN データ(A) 偽物 敵対的損失 偽物 サイクル 一貫性損失 生成器(A→B) 生成器(B→A) 識別器(B)
  31. DDoS2023春 StackGAN1 文章から画像を生成するモデル.文章ベクトルを条件としたCGAN.生成器はま ず小さめの画像を生成し,それを元に本来のサイズの画像を生成する.学習時 は,その二つのサイズの画像を別々の識別器に入れて敵対的損失を求める. 2023/3/15 30 1. H. Zhang, et al., “StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks”, ICCV, 2017 4. 色々なGAN
  32. DDoS2023春 StackGAN 生成例 2023/3/15 31 4. 色々なGAN 小さめの画像 64x64 完成した画像 256x256 入力テキスト
  33. DDoS2023春 MelGAN1 音響特徴量(スペクトログラム)を入力して音声を生成するGAN 2023/3/15 32 1. K. Kumar, et al., “MelGAN: Generative Adversarial Networks for Conditional Waveform Synthesis”, NIPS, 2019. 4. 色々なGAN 生成器の構成→ 音声合成(text-to-speech)のタスクでは,一度スペクト ログラムを生成し,それを元に音声波形を生成すると いった手法をとることが多い.MelGANはそこで使える. 生成結果: https://melgan-neurips.github.io/
  34. DDoS2023春 5. GANの正しい理解 2023/3/15 33
  35. DDoS2023春 GANの正しい理解 1~3章は「簡単な理解」を目標に書いたため,正しい解釈とは異なる部分が存在 する.本章ではGANを正しく理解する. なお,この「正しい理解」は,「論文に沿った理解」を指す 2023/3/15 34 5. GANの正しい理解
  36. DDoS2023春 Generative Adversarial Nets 2014年にNIPSで発表された論文1.GANの原論文. この論文は,「生成モデルを得るための手法」として敵対的生成ネットワーク を提案している 2023/3/15 35 5. GANの正しい理解 1. I. J. Goodfellow, et al., “Generative Adversarial Nets”, NIPS, 2014.
  37. DDoS2023春 生成モデル データの分布を捉えたモデル ここで,あるデータ集合と,そのデータを表せるデータ空間を考える.無限に 広がるデータ空間内に,データが存在する範囲は限られている. 例えば28×28=784次元のベクトルで表せる画像を考えた時,MNISTの様な手書き 数字と呼べるデータ(ベクトル)は,784次元空間の中の限られた範囲にしか存 在しないよねという話. 2023/3/15 36 5. GANの正しい理解 ℝ784 (784次元空間)
  38. DDoS2023春 生成モデル 生成モデルの目的は,このデータが存在する範囲=分布を捉えることである 分布が得られれば,その分布からサンプリングを行うことで,元のデータと同 じ特徴を持ったデータが得られる 2023/3/15 37 5. GANの正しい理解
  39. DDoS2023春 分布の推定 データから分布を求める手法やアルゴリズムは色々と存在する • 最尤推定 • EMアルゴリズム • ベイズ推定 • MCMC法 • 変分推論 ただ画像や音声といったデータは高次元で且つ複雑であるため,これらの手法 が素直に適応できない場面が多い 2023/3/15 38 5. GANの正しい理解
  40. DDoS2023春 潜在変数 あるデータの裏に潜む,そのデータの特徴を表す変数 例えば手書き数字の画像だったら,「数字(0~9)」と「書体」という二つの潜 在変数を仮定できる 「現実世界で観測できる画像や音声などのデータは,潜在変数からなる低次元 のベクトルで表せる」という仮説を多様体仮説と呼ぶことがある 潜在変数を考えることで,分布の推定がやりやすくなる 2023/3/15 39 5. GANの正しい理解
  41. DDoS2023春 GANの発想 まず,あるデータ𝑥に,何らかの分布に従う潜在変数𝑧が存在すると仮定する. 次に,データ𝑥の生成モデルとして,潜在変数𝑧からデータ𝑥への写像関数を考え る.この写像関数をニューラルネットワーク𝐺(𝑧)と置いたものがGANで,これ がGANの一つの発想である.また𝐺は生成器と呼ぶ. 2023/3/15 40 5. GANの正しい理解 𝐺(𝑧) 𝑧 𝑥 潜在変数 生成器 データ
  42. DDoS2023春 GANの発想 𝐺(𝑧)は,𝐺(𝑧)から得られるデータ𝑥の分布を暗黙的に定義している → 具体的な分布はないけど𝑥は何らかの分布に従うよね,という感じ ここで以下の様に定義する • 𝐺(𝑧) から得られる𝑥の分布:𝑝𝑔 • 𝑥の真の分布(推定したい分布): 𝑝𝑑𝑎𝑡𝑎 すると, 𝑝𝑔 = 𝑝𝑑𝑎𝑡𝑎となる𝐺を求めることがGANの目的となる 2023/3/15 41 5. GANの正しい理解
  43. DDoS2023春 GANの発想 𝑝𝑔 = 𝑝𝑑𝑎𝑡𝑎が唯一の最適解となる目的関数として,以下の関数を考える 𝑉 𝐺, 𝐷 = 𝔼𝑥∼𝑝𝑑𝑎𝑡𝑎 log 𝐷 𝑥 + 𝔼𝑥∼𝑝𝑔 log(1 − 𝐷 𝑥 ) ここで,𝐷 は𝑥 が真の分布𝑝𝑑𝑎𝑡𝑎 から得られた確率を出力するNN.識別器と呼ぶ. まず𝐺を固定した状態で𝑉(𝐺, 𝐷)を最大にする𝐷を求める.そしてそれを𝐷∗とする とき, C G = 𝑉(𝐺, 𝐷∗ )は𝑝𝑔 = 𝑝𝑑𝑎𝑡𝑎(となるような𝐺)で唯一の最適解(最小 値) −log 4をとる. 2023/3/15 42 5. GANの正しい理解
  44. DDoS2023春 GANの発想 ざっくりと証明する.詳しく見たかったら論文へ. 𝐷の最適解( 𝑉(𝐺, 𝐷)を最大にする𝐷)は𝐷∗ = 𝑝𝑑𝑎𝑡𝑎 𝑝𝑑𝑎𝑡𝑎+𝑝𝑔 である.これを𝑉(𝐺, 𝐷)に 代入して色々いじると以下の様になる. 𝑉 𝐺, 𝐷∗ = − log 4 + 2 ⋅ 𝐽𝑆[𝑝𝑑𝑎𝑡𝑎||𝑝𝑔] 𝐽𝑆はJSダイバージェンス(jensen-shannon divergence)といい,二つの確率分布の 距離を表す.常に非負の値をとり,二つの確率分布が等しい場合にのみ0をとる. よって𝑉(𝐺, 𝐷)は𝑝𝑔 = 𝑝𝑑𝑎𝑡𝑎すなわち生成器𝐺が真の分布を完全に再現している場 合にのみ最適解となる.証明オワリ. 2023/3/15 43 5. GANの正しい理解
  45. DDoS2023春 アルゴリズム 先程の発想に従ってアルゴリズムを組むと ステップ1. 𝐺を固定し,𝑉(𝐺, 𝐷)を𝐷で最適化(最大化) ステップ2. 𝐷を固定し,𝑉(𝐺, 𝐷)を𝐺で最適化(最小化) となる.しかし実際のところ,ステップ1で 𝐷 を最適化することは不可能であり, 𝐷が最適化されていないとステップ2も成り立たない.そこで,1・2を繰り返す ことで𝑝𝑔を𝑝𝑑𝑎𝑡𝑎に近づける(これが成り立つ証明も論文にあるが,理解できな かった). 2023/3/15 44 5. GANの正しい理解
  46. DDoS2023春 アルゴリズム 各ステップでは𝑉(𝐺, 𝐷)の勾配を求めて勾配法で𝐺, 𝐷を更新する バッチサイズ: m,ノイズ:𝑧 = 𝑧1, 𝑧2, ⋯ , 𝑧𝑚 ,データ:𝑥 = 𝑥1, 𝑥2, ⋯ , 𝑥𝑚 ステップ1. 勾配上昇法で𝐷を更新 ∇𝑑 1 𝑚 𝑚 [log 𝐷 𝑥𝑖 + log(1 − 𝐷(𝐺(𝑧𝑖)))] ステップ2. 勾配降下法で𝐺を更新 ∇𝑔 1 𝑚 𝑚 log(1 − 𝐷(𝐺(𝑧𝑖))) 2023/3/15 45 5. GANの正しい理解
  47. DDoS2023春 オワリ おつ
Publicité