141 Views
July 23, 18
スライド概要
2018/07/20
Deep Learning JP:
http://deeplearning.jp/seminar-2/
DL輪読会資料
DEEP LEARNING JP [DL Papers] Glow: Generative Flow with Invertible 1⨯1 Convolutions Makoto Kawano, Keio Univ. http://deeplearning.jp/ 1
書誌情報 2 タイトル:Glow: 著者:Diederik Generative Flow with Invertible 1x1 Convolutions P. Kingma, Prafulla Dhariwal OpenAI, San Francisco -> 投稿日:2018/7/9 選定理由:VAE・Adamの提案者であるD.P.Kingmaの論文 Flow-basedの生成モデルは読んだことがなかった • 一応NICE,realNVPも読んだので紹介します 画像生成することを合成って呼びます ※某ars-pytorchで実装され始めてるのを見てやる気無くした ※間違ってたら指摘よろしくお願いします
概要 厳密な潜在空間の推論および尤度評価が可能な 可逆変換を持つ生成モデルを提案 従来のRealNVPに1x1の畳み込みとactnormを導入 高解像度で鮮明な画像生成が可能 3
はじめに 機械学習分野における2つの課題 データ効率性:人間のように少ないデータで学習が可能 汎化:タスクかそのコンテクストの変化に強い 生成モデルはこれらの課題に強い 現実世界モデルを学習可能 • エージェントが実際に行動する前に世界の変化を予見できる 入力の重要な特徴を学習可能 • 人間による教師やラベルがほぼなくても可能 様々な中間アプリケーションに応用可能 音声合成,テキスト分析,半教師あり学習,モデルベース制御? 4
生成モデル 多くの生成モデルは,尤度ベースかGANで提案されている GAN:大きく,realisticな画像の合成が可能 潜在空間へのエンコーダがない 最適化が難しい 過剰適合なのか汎化なのか判断できない 尤度ベース:3種類に分類可能 自己回帰モデル:PixelCNN・PixelRNNなど 変分オートエンコーダ (VAE) Flo w- based生成モデル(この論文) 5
自己回帰モデル RNNが一般的に使われる PixelRNN,Parallel wavenetなど Pros. 単純であること 今まで生成したピクセルをもとに次のピクセルを合成 Cons. 合成の並列化ができない データの次元に比例して合成するデータの長さが増える 大きい画像や映像に対応するのが難しい 6
変分オートエンコーダ Variational Autoencoder, VAE 対数尤度の変分下界を最適化する Pros: 学習と生成を並列化できる Cons: 最適化が難しい(Kingma本人曰く) 7
Flow-based生成モデル 厳密な潜在変数の推論と対数尤度評価が可能 VAE:データ点に対応する潜在変数のみを近似的に推論 GAN:エンコーダがないため,推論不可能 効率の良い推論と合成が可能 自己回帰モデル:逆関数化は可能だが,並列化はできない 使いやすい潜在空間 自己回帰モデル:隠れ層が不明な周辺分布であるため,データ操作が困難 GAN:データ点を直接潜在空間で表現できず,分布全てを網羅できない メモリ使用量を抑えられる Glowモデル:勾配計算に必要なメモリは層の深さに対して線形ではなく一定 8
変数変換(change of variables) 生成モデルに対して,変数変換を適用する g:可逆変換な関数(全単射,bijective) 最尤推定にも適用 9
(Normalizing) flow|NICE 10 関数fの分解: 対数尤度 Non-linear Independent Components Estimation criterion NICE, realNVP, Glowいずれも尤度最大化によるfの最適化を行う fが可逆関数であるためには,ヤコビ行列式が存在するようにする
ヤコビ行列式の計算 11 hiの次元数が大きいと,ヤコビ行列式の計算が大変 ヤコビ行列=対角行列や三角行列 行列式の計算が対角成分の和になる 多くの正方行列は,LU分解が可能| • P:置換行列,L:対角成分1の下三角行列,U:対角成分0の上三角行列,s:ベクトル
General Coupling Layer General coupling layer 入力xをチャンネル方向で2つに分ける:x = [x1:d; xd+1:D]=[xI1; xI2] ニューラルネットワーク 可逆可能写像 この関数のヤコビ行列 12
Coupling Layerの亜種 Additive 13 coupling layer: Volume preserving Affine coupling layer(realNVP, Glow) None- V olume Preservi ng
複数のcoupling layer 単純にcoupling 14 layerを繰り返してもdimensionが変わらない 並び替え(permutation)が必要 NICE, realNVP:チャンネルの順番を逆転させる Glow: 1x1畳み込み(入出力チャンネルは一緒) • 入力: • 重み:
Actnorm realRVP:BatchNormalizationを使っている ミニバッチ数に反比例して,ノイズバリアンスが増えて性能悪化 入力画像が大きいと必然的にバッチサイズは1になってしまう Glow: Activation Normalizationを提案 基本的にはBatchNormと一緒 初期値が,データ依存初期化で決定される • 最初のミニバッチがactnorm後に平均ゼロ,分散1になるようにする 初期化後は,パラメータが学習される 15
1flowステップ Actnorm -> 1x1畳み込み -> affine coupling layer 16
Multi-scaleアーキテクチャ 17 realNVPで提案された構造 Squeeze:2x2xc -> 1x1x4c K:Flowの繰返回数 L:階層 L=3
定量的評価 GlowとrealNVPの比較 ベンチマークデータセットをGlowに適用して,対数尤度比較 NN:畳み込み3つ,チャンネル512 Adam(lr: 0.001) 18
定量的評価 各Coupling layerにおける各並び替えの効果検証 複数ベンチマークにおけるNLL比較 19
定性的評価 20 CelebA-HQデータセットを使った顔合成 30000の高解像度(256x256)画像→K=32, L=6 ミニバッチサイズ:1 画像の色を忠実にするため,5-bit画像で学習(わからない) 高品質画像合成のため,換算温度モデル?からサンプリング 温度がTの時, からサンプル
顔合成 21
内挿 22
セマンティックな合成 23
温度変化 0, 0.25, 24 0.6, 0.7, 0.8, 0.9, 1.0
まとめ 25 新しいFlow-based生成モデルGlowを提案 可逆変換なモデルを構築 複数のベンチマークにおいて対数尤度で性能を発揮 尤度ベースモデルにおいて,最も効率的で高解像度な自然画像を合成 ※残りの合成画像は,論文を見てください ※某ars-pytorchで実装され始めてるのを見てやる気無くした
!!!!!! 26