NICE: NON-LINEAR INDEPENDENT COMPONENTS ESTIMATIONを読んだのでメモ
はじめに
NICE: NON-LINEAR INDEPENDENT COMPONENTS ESTIMATIONを読んだのでメモ.
基本アイディア
Normalizing flowにおいて,変数変換における関数をニューラルネットを使って定義したという話(厳密には,議論の展開的にnormalizing flowは関係なく単純な変数変換の話のみ.ただ,最終的には変数変換を複数回行うため意味合いとしては変わらない).前に読んだVariational Inference with Normalizing Flowの先駆け的なもの.
まずデータを二つのブロックに分け,以下のような変換を定義する.
が変換の中心で,ReLUとMLPによる非線型変換を表し,データの一方を使ってもう一方を変換することを表現している.変換をこのように定義してあげると各においてunit jacobian deteminantを持ち,逆変換も以下のように定義できるためNormalizing Flowとして良く機能するでしょうという話.
以下,この式が導かれるまでの話.
non-linear independent components estimation
ここでの問題設定は最尤推定によりデータ分布を単純な分布へ移す連続かつ微分可能な変換を学習すること. 基本的にはnormalizing flowをベースとしているので以下の変数変換の関係性を用いる.
は事前分布で,扱いやすい等方性のガウス分布などを考えている(ただし,固定でなく学習してもよいとのこと).もしそのような分布で事前分布が定義されていたとしたら,以下のnon-linear independent components estimation (NICE) criterionが得られる.
単純に第1項目のがに変わっただけではを満たす関数.
今までの議論からNICEは対数尤度を増加させる逆変換可能なデータセットの前処理を学習していることがわかる.さらに変数変換の関係性が正則化として働いており任意に尤度が増加することを防いでいる.
モデルの構成
モデルはforward(encoder )とbackward(decoder )どちらにおいてもヤコビアンが扱いやすくstraightforwardに計算ができなければならない.仮にニューラルネットのように多層構造()として構成した場合,ヤコビアンの行列式は各レイヤーのヤコビアンの行列式の積になり嬉しい.そこでまずはを初歩的な構成で定義することから考える.
まず一つの手段としてアフィン変換(ニューラルネット)を考える.ここで満たさなければいけないことは,ヤコビアンや逆変換が容易に計算可能なことである.そのような行列として三角行列があげられる.特に正則な行列はLU分解によって上三角行列と下三角行列の積に分解できる.この恩恵を受ける一つの構成方法はニューラルネットの重みを三角行列にし,活性化関数が全単射であるものを選ぶことであるが,これは制約が強すぎてモデルのデザインが限られるのであまり良くない.
そこで別な手としてヤコビアンが三角行列になる全単射の変換を考える.これならヤコビアンの行列式が容易に計算できるため問題がない.そこで次のような変換を考える.
基本アイディアのところで出てきた式と同じで,個のデータをに分けており,は逆変換可能かつ,をを使って変換するような関数を表しており,ここではカップリング則(coupling law)と呼ぶ.このように二つのデータに分けることでをで微分すれば単位行列になり,で微分すれば0行列になる.そのためヤコビアンは
とうまいことブロック三角行列になる.よってヤコビアンの行列式はと簡単になる.さらに逆変換も
とかける.をカップリング関数(coupling function),変換をカップリング層(coupling layer)と呼ぶ.
カップリング則として加法カップリング則(additive coupling law)を選べば,となり,
となる.すると逆変換を陽に計算する必要はなく,カップリング関数にどのようなものを使用しても問題がなくなる.例えば,であることに注意をすれば,を次元入力,次元出力のニューラルネットとして構成することができる.さらに嬉しいことに,のによる微分が単位行列になることからヤコビアンの行列式は常に1となる.
そのほかのカップリング則として乗法カップリング則(multiplicative coupling law)やアフィンカップリング則(affine coupling law)を選ぶことができる.ただしこの論文では計算の安定性等から加法カップリング則を使っている.
加法カップリング則を使えばヤコビアンの行列式が常に1で計算が楽になって嬉しいということだったが,変数変換の関係からカップリング層を導入しても分布自体は変化がない.そこでスケーリング行列と呼ばれる対角行列を導入する.これを使うことでヤコビアンの対角成分が1ではなくスケーリング行列の対角成分に等しくなり,ヤコビアンの行列式はとなる.結果としての加法カップリング則にスケーリング行列を導入した際の目的関数は
となる.
最後に実験的なところとして,この論文では事前分布として以下のような因子分解可能な分布を使った.
基本的には問題に合わせてガウス分布かロジスティック分布を使えばいいとのこと.
以上から,NICEの良いところは変数変換に用いることのできる関数の自由度,つまり,活性化関数にReLUのような全単射でないものを使えるし,batch normやresnetのような構造を入れることも可能.しかもコスト関数にL2のような再構成誤差に依存しない良さがある.ただし,スケーリング行列の点は個人的には少し違和感。。。
まとめ
Variational inference with normalizing flowを読んだ後なのでスケーリング行列あたりでこれでいいのか感がでたけど面白かった.Variational inference with normalizing flowで急に出てきた変換の関数の形の意味がよくわかった点は勉強になった.