Invertible Residual Networksを読んだのでメモ
はじめに
Invertible Residual Networksを読んだのでメモ.
気持ち
昨今のdeepによる生成モデルは識別モデルに比べ汎用的なモデルの構造がないので,このgapを埋める新たなアーキテクチャを提案.具体的にはResNetそのままのアーキテクチャでflow-based generative modelを作るというもの.
Flow-based generative modelはNICEやRealNVP,GLOWなどでお馴染みのモデルで,今回は詳細は割愛.
Invertible ResNet
基本的にはResNetは逆変換(出力から入力を計算)することはできない.自己回帰構造にしたりすれば逆変換可能だが,そういった場合には元の構造からのちょっとした組み換えが必要になる.
ここではバナッハの不動点定理を利用して逆変換を求める.バナッハの不動点定理は縮小写像に対して唯一の不動点を持つというもの.
ResNetの逆変換が求まることを保証するためにはresidual block (すなわちの変換) に対して次の定理を満たす必要がある.
このはのリプシッツ定数を意味していて,residual blockのリプシッツ定数が1未満である必要がある.これにより出力値をとして表現した時,バナッハの不動点定理から次の関係が成り立つ.
以上の関係から逆変換はとして推定が可能.
問題はどのようにしてリプシッツ定数が1未満という制約を満たすか.今residual blockを陽に書き下すとするととして表現できる.ただし,は畳み込み層,は非線形関数を表す.もしのspectral norm が1未満ならが成り立つため,に制約を与える.ここで,power-iterationによりのspectral normがとして推定可能なため,に次のような正規化を行うことでspectral normを抑えることができる.
ここではを満たすハイパラ.基本的には推定されるは真のspectral norm以下の値であるため,は保障されないが,学習後に特異値分解を使って正確にを評価可能なため確実にを満たすことができる.
以上から,residual blockのリプシッツ定数を1未満に正規化することでResNetをinvertibleにできることがわかったが,flow-based generative modelは目的関数に写像のヤコビアンの行列式を計算する必要がある.今回の場合では,とした時,を計算しなければならない.ここではが成り立つことと,非特異な行列においてが成り立つことが知られているらしいので,次のように計算ができる.
さらにであることから最終的な尤度はとして評価することができる.また,行列の対数のトレースはであるならば,次のように計算できることが知られているらしい.
ここではリプシッツ定数がを満たすため,次のように上限と下限を与えることができるらしい.
ここでのはおそらく次元数.基本的には前述のpower seriesによる計算は無限級数を扱うことやトーレスとその中身の行列がヤコビアンのイテレーションとなっていて計算コストの面から扱いにくい.ただ,を満たすを導入すれば,ヤコビアンをベクターヤコビアンとして,トレースの計算をとして行えるらしく,無限級数はで打ち切ることで問題を軽くすることが可能.
上記をまとめるとは次のように計算される.
ここでこの近似による誤差の上限は次のようになるらしい.
また収束率はとして次のように与えられるとのこと.
基本的には5から10くらいの値で得られる値のバイアスが0.001 bit per dimension以下になるとのこと.
まとめ
終始リプシッツ定数が役立っている手法.後半のトレースの計算方法とかよく知っているなという感想以外浮かばない.証明までは追えてないので推定値の誤差や収束率などはあまり理解できてないが,細々したハイパラ(など)の値が実際に応用を考える上では結構扱いにくいんじゃないかという印象.