データセットがあたえられる。データセットが従う確率分布を求めよ!
というのが問題。つまり、データを生成するようなモデルを考えたい。
大量の画像を学習させることで、その画像から、新しい画像を生成できる。
ネットで見かけたもの
arXiv (前半部分だけをかなりざっと)
なんとかならないか。
生成モデルと識別モデルを敵対させる。これだけ。
以後識別モデルをD(Discriminator)、生成モデルをG(Generator)とする
つまり
Gはまさにデータセットそっくりなデータを作るようになる
ちょうど偽札を作る人と警察の関係 これを続けていくとイタチごっこ的に学習していく。
データ\boldsymbol{x}から、元の確率分布p_gを学習することを目標
まず、二つの多層パーセプトロンを用意する。
一つは、ノイズ\boldsymbol{z}を入力として、G(\boldsymbol{z};\theta_g)をマップ
もう一つは、D(\boldsymbol{x};\theta_g)として、出力として一つのスカラー値
Dが\boldsymbol{x}の出所を正しく発見できるような確率を最大化しつつ、同時にGの学習としてlog(1-D(\boldsymbol{z}))を最小化するように学習する。
すなわち、DとGは、価値関数V(G,D)のminmaxゲーム min_{G}max_{D}V(D,G)=\boldsymbol{E}_{\boldsymbol{x}\sim p_{data}{\boldsymbol(x)}}[logD(\boldsymbol{x})] +
\boldsymbol{E}_{\boldsymbol{z}\sim p_z(\boldsymbol{z})}[log(1-D(G(\boldsymbol{z})))]
により最適化する。
・安定性が低い
そこで CNNの力を借りるという発想が生まれる。
arXiv (全部やります)
GANはあんまり安定しない。この論文では、
パラメトリックなものとノンパラメトリックなものがあるが、主にパラメトリックなものがよい。 パラメトリックな手法としては、
NN自体、ややブラックボックスだが、CNNが畳み込み的な近似を行っていることや、勾配降下は理想的な画像を検査していると示されている
CNNでGANを拡張するのは簡単ではないが、できた。
方針の本質は、最新のCNNの手法を適用すること
f(x) = max(0, x)
多分職人芸。
LSUN, Imagenet-1k, 画像のデータセットで実験
学習については、
一般に、教師なし学習の能力を測るために、教師なし学習を特徴抽出にして、これらの特徴から学習してみるという手法がある。これで学習したところ、Exemplar CNNにはおよばないものの、良い精度が出ているとわかる。
また他の解析として、StreetView House Numbers(SVHN)を用いても行った。良さそう。
二つの点を補間していくと、""意味的に""(つまり見た目上)、連続的に変化している。つまり、データを暗記しているわけではない。
CNNにも、各層が特定のパターンにマッチするようになるという話があった。
DCGANにもそれが言えて、Bedroomの画像データセットを使って学習させたところ、特定のパターンにマッチするようなフィルターができた。
何らかの表現により主要なBedroomのモノを認識しているはず。窓をわすれさせてみよう。
ロジスティック回帰を使って、2番目に大きな畳み込み層が、窓を表している時には正、関係のないランダムな値を表している時は負の値になるように学習して、ゼロよりかけ離れている値を落とすことで、"窓を忘れさせる"実験をした。
実際別のものに置き換わったり、壁に置き換わったりしている。
Word2Vecでは、 "King" - "Man" + "Woman"を表すベクトル表現のうち、もっとも近いものが"Queen"になるという話があった。 これを画像に適用すると、意味論的に算術計算のようなことができた。
さらに、人間の顔の姿勢についても、左を向いている人と右を向いている人の補間をとると、少しずつ回転した。
また実装ができていない・・・・・・・・(駒場祭がなかったらきっとできていたんだって言っている)。