LoginSignup
0
2

More than 5 years have passed since last update.

NNまわり個人的まとめ

Posted at

自分に要るものだけ わかるひとだけわかる

形と目的

  • AE : 複数の入力個体の情報を圧縮して記憶できる技術。

    • ボンキュッボン x-z-x' 形式のネット、 $(x-x')^2$ を最小化。
    • 欠点 入力にないデータ点で何が出てきても知らない
  • VAE : AEで、zの分布を素性の良い分布に加工する技術。

    • 個体(点)+分布(曲面)を覚える。
    • 理にかなった分布を使えば、入力にない自然な派生画像を生成できる(→"生成モデル")。
    • 欠点
      • 対象の分布は素性の良い分布(e.g. 正規分布)に限られる and
      • 実装するために hand-written reparametrization が必要
        • 本質ではない (例:元論文でmeanとsigmaに分けるのは正規分布の都合上)
  • GAN : あるネットGの出力を特定の非自明な分布に沿わせるための技術

    • ゴチャい分布でもok
    • 欠点 遅い、システムがゴチャい
    • DとGの訓練バランスがムズイ(DをGのk倍訓練するなど)
(入力)----<加工したいNN G>----(出力) こんなネットがあったとする

今のところ (出力) はやりたい放題な値になっている
このネットワークの(出力)をある [わけわからん分布] に沿わせたい このとき

1. <Discriminator NN D> 
2. ([わけわからん分布]からランダムサンプル出来る生成器)

を使って01判定をおこなう。

Step A. まず

       ((生成器) concat (出力))----<D>----(判定結果)

    上を判定結果が (111..111 000..000) になるよう学習する。 (loss: binary crossentropy)
    11... は(生成器)のデータを1と判定しており、00... は(出力)のデータを0と判定している。


Step B. 次に Discriminator NN D の重みを固定して(学習をオフ)

       (入力)----<G>----(出力)----<D[固定]>----(判定結果)

    (判定結果) を (111..111) になるようGだけ学習する。
    こうするとStep Aの結果が完璧*でなくなるので、Step Aをまた実行する

Step A,Bを繰り返すといろいろあって (出力) の分布が (生成器) の分布と同じになる。
論文ではゴチャい数式が出てくるが E[log D(z)] + E[ log (1-D(G(x))) ] ていうのは
crossentropy の式を binary (01) の項に書き下したら 色々項が消えてそうなっただけ。

* 実際は完璧でなくて良い

イメージとしてはダイヤフラムポンプですね。Discriminatorでエラー情報を蓄積して、
こんどはDiscriminatorを固定してGeneratorに修正情報を詰め込む感じ。通じる?

ダイヤフラムポンプ

  • AAE : VAE+GAN.
    • hand-written reparametrization のかわりにGANを使う
    • ふつうのVAEと違い、GANのおかげでゴチャい分布でもok 論文では swiss roll
    • 欠点 GANよりムズイ
---①-->
x-->z-->x'
 ↘  \
 ②↘→  +--->d [0,1]
        ⇕ 重みは共有
 n----+--->d [0,1]
ノイズ 
  ---③--->

①, ②+③(x-z固定), ②(z-d固定) を繰り返す
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2