Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PyTorchによる発展DeepLearning 第5章まとめ資料

PyTorchによる発展DeepLearning 第5章まとめ資料

2020/06/09の勉強会に使用した発表資料。
https://soleildatadojo.connpass.com/event/178473/

shinebalance

June 09, 2020
Tweet

More Decks by shinebalance

Other Decks in Programming

Transcript

  1. 本章の構成 本章の構成 実装するのはこの 2 つ DCGAN Self Attention GAN TARGET

    TARGET 少しでも仕組みを理解して、理解を腹落ちさせる コードはどちらも MNIST を使うのでアッサリ動く それよりも GAN のアイデアの複雑さと⾯⽩さを理解する のが ( たぶん ) ⼤事 Chapter5. - GAN による画像⽣成 
  2. GAN ってなに? GAN ってなに? TL;DR TL;DR Generator( ⽣成者 ) と

    Descriminator( 判定者 ) が互いを利⽤しなが ら学習し合う G は何かを⽣成 >> D は G の⽬標となる正解と G の⽣成物に 対して真贋判定 結果を元に G,D の重み更新 うまく⾏くと何かを⽣み出す Generator が⼿に⼊る ⾔うは易しだがバランス取るのが⼤変で、⽬的を達成するた めに G や D に様々なアイデアを投⼊する Chapter5. - GAN による画像⽣成 
  3. GENERATOR GENERATOR ノイズから画像を⽣成する NN おそらくは Autoencoder がアイデアの発端に有る notebook の例を⾒ると分かるが最初は本当にノイズしか 出せない状態からスタートする

    使われている仕組:転置畳み込み (TRANSPOSE) 使われている仕組:転置畳み込み (TRANSPOSE) ⼀⾔でいうと畳み込みの逆 カーネルを利⽤することで局所的な特徴を拡⼤してアッ プサンプリングできる 「転置」は、おそらく転置⾏列から来ている ていねいなかいせつ Chapter5. - GAN による画像⽣成 
  4. DESCRIMINATOR DESCRIMINATOR やることはオーソドックスな 01( 真贋 ) 判定の Classification が、活性化関数には Relu

    ではなく LeakyRelu が採⽤される 理由は損失関数のあとで Chapter5. - GAN による画像⽣成 
  5. 損失関数 (LOSS FUNCTION) 損失関数 (LOSS FUNCTION) Generator と Descriminator が意図する⽅向へ育つような設計が

    必要 「バランス良く育てる」のが重要で、上⼿く⾏かないと ノイズしか⽣み出さない 個⼈的には GAN を理解するための⼀番のポイントのよう に思う G の損失関数が最初理解が難しい Chapter5. - GAN による画像⽣成 
  6. 損失関数 (D) 損失関数 (D) D の損失関数はいつもと同じ、 2 値分類の誤差関数 (Binary Cross

    Entropy) ー M ∑ i =1 [li logyi + (1 − li )log(1 − yi )] yi はシグモイドのアウトプット 数式苦⼿な⽅ ( 私です ) への⼀⾔メモ … ⼀旦はlog を忘れて , 実際に値が⼊った時の上下動を想像すると良いです Chapter5. - GAN による画像⽣成 
  7. 損失関数 (G) 損失関数 (G) G の⽬的は D を騙すこと = じゃ

    D の損失関数の逆を⾏くようにすれば良いんじゃない? デンッ ( マイナス消しただけ ) M ∑ i =1 [li logyi + (1 − li )log(1 − yi )] 結論から⾔うとこれでは上⼿く⾏かない Chapter5. - GAN による画像⽣成 
  8. G から出てくるものは贋作なので正解ラベルli = 0 、故に実質 は = M ∑ i

    =1 [(1 − li )log(1 − yi )] = M ∑ i =1 [log(1 − yi )] = M ∑ i =1 log(1 − D(G(zi ))) D(G(zi )) = 0 となると早々に 0 付近に収束してしまい、学習が進 まなくなる Chapter5. - GAN による画像⽣成 
  9. 数式⾒て (´ ・ω ・ `) ってなった⼈は、擬⼈化して想像してくだ さい 真贋判定をすれば良い D くんと、

    D くんのダメ出しだけで碌なフィードバックもなしに絵 を書き続けなければいけない G くん G くんからすれば無理ゲーですね? まるでクライアントに振り回されるデザイナー Chapter5. - GAN による画像⽣成 
  10. アプローチを変えて、最初から D くんをウンと⾔わせる事を⽬ 的地にして損失値が出るようにする ー M ∑ i =1 logD(G(zi

    )) D(G(zi )) が 0~1 になると (D くんに⾒抜かれると ) 損失が⼤きくな り学習が進む 最初から D くんを騙す事を⽬標値に設定して学習する Chapter5. - GAN による画像⽣成 
  11. その他のポイント: LEAKYRELU その他のポイント: LEAKYRELU D, G の活性化関数には通常の Relu ではなく LeakyRelu

    が採⽤さ れる ⼊⼒が 0 より⼩さい ( 負 ) でも出⼒が 0 にならない損失関数 詳しくは p256 へ G にまでバックプロパーゲーションの結果を伝える上 で、 0 のノードを作らない LeakyRelu を D に残しておきた い意図がある Chapter5. - GAN による画像⽣成 
  12. 実装コード 実装コード あとは Notebook へ ⼼なしか よりも読みやすい? Keras の時は for

    ⽂の中で G 学習時に D の重みを凍結し たりしてた Keras で勉強した時 Chapter5. - GAN による画像⽣成 
  13. 余談 余談 Franchois 「これが Keras で書く最もシンプルな実装やで」 The most modern way

    to implement a GAN in Keras is actually simply this. — François Chollet (@fchollet) pic.twitter.com/7XQqQxZnvz April 16, 2020 Chapter5. - GAN による画像⽣成 
  14. 3 つのテクニック 3 つのテクニック 1)Self-Attention 2)pointwise convolution 3)Spectral Normalization 最終的に

    Generator と Discriminator の両⽅にこれらを組み込ん である 他の仕組みは DCGAN と⼀緒 Chapter5. - GAN による画像⽣成 
  15. 1)SELF-ATTENTION 1)SELF-ATTENTION Layer と Layer の間でx に 2)pointwise convolution を通してから、

    以下のような改変を⾏う y = x + γo γ は係数、o は Self-Attention Map 詳しい解説は p266-267, 感想めいた感覚的な話を次スライドで Chapter5. - GAN による画像⽣成 
  16. SELF-ATTENTION の必要性を想像する SELF-ATTENTION の必要性を想像する そもそも CNN が捉えている世界には特徴マップ内を俯瞰して 相関を考慮するような仕組みがない 情報の圧縮 (

    畳み込み ) とフィルタ ( 重み ) の最適化を繰り返 すだけなので、「どの位置の情報が重要」という観点が ない Dense は線形和とってるだけ 分類タスク ( 情報の圧縮が⽬的 ) を全うする分にはそ れでよかった GAN のようなアイデアを実現しようとすると、このあたりの 弱さが影響してくる 転置畳み込みなんてまさにそう、かといって代わりはな い 故に Self-Attention is All We Need. Chapter5. - GAN による画像⽣成 
  17. ( 厳密な説明は書籍を読めばいいので ) ⼤枠だけ抜粋 y = x + γo o

    は次の式で表される o = xβT β は⼀⾔でいうと、そのチャネル内のx のW ∗ H の中で何処が相 関性が⾼いかの割合 p268 中段に細かい計算がありますが、 ( 私の理解が間違 ってなければ ) 合計で1 になるよう相関度の⽐率を持つよ うなイメージ これで結果的にマップ内の相関関係を表現する p269 にもあるように、やっていることは 「⼊⼒データのとあるセルに対して特徴量を計算する前に、 ⾃分⾃⾝と値が似ているセルに着⽬する」 Chapter5. - GAN による画像⽣成 
  18. 2)1*1 CONVOLUTIONS (POINTWISE 2)1*1 CONVOLUTIONS (POINTWISE CONVOLUTION) CONVOLUTION) 1*1 の畳み込みを⾏う

    え? なんの意味があるん? Self-Attention は位置情報を捉えようとする仕組みなので、むし ろチャネル情報は圧縮したほうが情報を圧縮できる。 ( 実際とは違うけど )RGB の画像を輝度でグレースケール にするようなイメージを持ってもらうと早いかも GAN というか Self-Attention にうってつけなので投⼊されたと思 われる 似たようなシチュエーションなら GAN 以外にも使われて そう Chapter5. - GAN による画像⽣成 
  19. 3)SPECTRAL NORMALIZATION 3)SPECTRAL NORMALIZATION こいつを通すことで、層の重みに対して Normalization( 正規化 ) を⾏う Batch

    Normalization はよく⾒るが、あれはデータをミニ バッチごとに Normalization する こっちは層ごとに重みを Normalization 層の中の重みの範囲と分布が安定するので、 GAN に使うと安 定性が向上する、らしい 詳しくは p272-273 に解説、リプシッツ連続性などの⾔葉 が分かるようで分からない⽂系脳なので、とりあえずこ んなふうに雑に理解しました ( なんとなく「スペクトラル」という⾔葉にも、私には 理解しきれていないニュアンスも有る気がする ) Chapter5. - GAN による画像⽣成 
  20. 参考になったリンク集 参考になったリンク集 この章読んで調べ物してたら @koshian さんの記事ばっか引っ かかったので感謝を込めて同⼈誌ポチりました ( この章に興味を持てて、かつオタっぽいノリが嫌いじ ゃない⼈にはとてもお勧め )

    https://blog.shikoan.com/sagan-paper/ https://www.chowagiken.co.jp/abstract/self-attention-generative- adversarial-networks (⾃⼰注⽬敵対的⽣成ネットワーク) / 論⽂ Chapter5. - GAN による画像⽣成 