機械学習とかコンピュータビジョンとか

CVやMLに関する勉強のメモ書き。

Emerging Convolutions for Generative Normalizing Flowsを読んだのでメモ

はじめに

Emerging Convolutions for Generative Normalizing Flowsを読んだのでメモ.

気持ち

Deepな生成モデルでGlowが登場して,flow-basedな生成モデルの利点が広く認知されたが,結局全単射な関数からしかモデルを構成できず,表現力を上げるには多層にする必要があった.そのせいで計算コストが上がってしまい扱いにくいという欠点が存在する.この論文ではGlowで提案された1x1Convをdxd Convに拡張して表現力を上げたというもの.

Generative flows

ここは過去散々メモを書いてきたので流石に今回は割愛.

Convolution

前提知識としてCNNにおける畳み込み(数学的にはcross-correlations)は行列とベクトルの積として表現可能ということを抑える.\mathbf{x}をベクトル化された画像(t=i+w\cdot jで展開,ただしi,jはそれぞれ列と行,wは幅を表す.)とし,\mathbb{W}hwc_{c_{out}}\times hwn_{c_{in}}の重みとする.すると畳み込みの演算は\mathbf{W}\cdot\mathbf{x}として表現可能.これはspatial domainでのgraph convolutionと同じロジック.Figure 2と3を見るとよくわかるはず.

一方で,normalizing flowの分野ではautoregressive convolutionという畳み込みが利用されることがある.autoregressive flow等についても過去いくつかメモを取ったので割愛.自己回帰モデルは各確率変数の依存関係からflow-basedなものと相性が良いのはよく知られていてautoregressive flowという文脈で広く研究されている.というのも,flow-basedな生成モデルは尤度の計算にヤコビアン行列式を計算する必要があるが,自己回帰モデルではここの重い計算を単純化しやすいため.このautoregressive convolutionに従えば先ほどの畳み込みの定式化において\mathbf{W}が三角行列になり,ヤコビアン行列式\mathbf{W}の体格成分の積として計算可能になる.

なぜ三角行列になるかという点において.autoregressive flowの文脈においては各画素はv_t\prod p(v_t|v_{t-1,t-2,\dots})という依存関係を持つ.すなわちある画素は以前に生成された画素とのみ依存関係を持つというもの.これを先ほどの畳み込みの枠組みで考えれば画像はt=i+w\cdot jと展開されているため,t番目の画素はt-1番目の画素としか依存関係がない.そのため,\mathbf{W}t行目においてt+1列目以降の値は0となる.(ここは論文に書いてない説明なのでnotation等は適当.)

とりあえずまとめると,\mathbf{W}\cdot \mathbf{x}は逆変換が可能でautoregressiveな設定を考えればヤコビアン行列式も計算が楽ということ.

Emerging convolutions

この論文の提案手法であるemerging convolutionについて.先ほど見たようにautoregressive convolutionは逆変換可能だが,変換の自由度はautoregressiveのorder(ここでのorderは自己回帰の繰り返しの回数?)に制限される(convolutionは先ほどの定式化だとヤコビアン行列式の計算が非現実的).そのためここではより自由度の高いinvertibleなconvolutionであるemerging convolutionを提案する.概要としては種々のautoregressive convolutionをつなぎ合わせるというもの(Figure 5がその図).

Square emerging convolutions

Autoregressive convはフィルタの形状が正方形ではないことが多く,ここで提案しているautoregressive convの組み合わせで得られる受容野(論文ではemerging receptive fieldと呼称)はFigure 5のように様々な形状をとる.それに対し,通常のDNNの枠組みにおいてはフィルタや得られる受容野の形状は正方形を成すことが多く,ライブラリ等における実装も正方形に最適化されている.実はある特定の二つのautoregressive convolutionによるemerging receptive fieldは正方形になるとのこと(どのようなconvかはFigure 5の一番下参照).これをsquare emerging convolutionとする.

d\times dのsquare emerging convolutionは二つの\frac{d+1}{2}\times\frac{d+1}{2}convolutionとして表現することが可能.k_1,k_2をその二つの畳み込みとし,fを入力の特徴マップとすると次のような計算として表現可能.

\displaystyle
k_2\star(k_1\star f)=(k_2\ast k_1)\star f

\star,\astはそれぞれcross-correlationとconvolutionを表す.

Invertible periodic convolutions

データによって周期性等を持つ場合があるため,そのようなデータにおいて効果的なinvertible periodic convolutionを提案.周期性のあるデータに対しては周波数空間における計算として扱えばヤコビアン行列式も逆変換も扱いやすいという性質に基づくもの.別な言い方をすれば,周期性を仮定すれば重畳積分定理からデータとフィルタをDFTすれば要素積として計算可能ということ.これだけのことではあるが一応論文で丁寧に説明しているので軽く.

フィルタ\mathbf{w}と入力\mathbf{x}における畳み込み(cross-correlations)は次のように表現可能.

\displaystyle
\mathbf{z}_{out}=\sum_{c_{in}}\mathbf{w}_{c_{out},c_{in}}\star\mathbf{x}_{c_{in}}

\mathcal{F}(\cdot)フーリエ変換\mathcal{F}^{-1}(\cdot)を逆フーリエ変換とする.また,入力出力フィルタのフーリエ変換\hat{\mathbf{x}}_{c_{in}}=\mathcal{F}(\mathbf{x}_{c_{in}}),\hat{\mathbf{z}}_{c_{out}}=\mathcal{F}(\mathbf{z}_{c_{out}}),\hat{\mathbf{w}}_{c_{out},c_{in}}=\mathcal{F}(\mathbf{w}^\ast_{c_{out},c_{in}})とする.ただし,CNNにおける畳み込みはcross-correlationなので\mathbf{w}^\ast_{c_{out},c_{in}})をspatial domainにおいて反転したフィルタとして,convolutionのフーリエ変換として扱えるようにしている.すると周波数空間において元の計算は次のようになる.

\displaystyle
\hat{\mathbf{z}}_{c_{out}}=\sum_{c_{in}}\hat{\mathbf{w}}_{c_{out},c_{in}}\odot\hat{\mathbf{x}}_{c_{in}}

これをchannelを考慮して\hat{z}_{:,uv},\hat{\mathbf{W}}_{:,:,u,v},\hat{\mathbf{x}}_{:,uv}として表せば次のような行列式の形で表現できる.

\displaystyle
\hat{\mathbf{z}}_{:,:,uv}=\hat{\mathbf{W}}_{uv}\hat{\mathbf{x}}_{:,uv}

\hat{\mathbf{W}}c_{out}\times c_{in}次元の行列で,\hat{\mathbf{x}}_{:,uv},\hat{\mathbf{z}}_{:,uv}はそれぞれc_{in},c_{out}次元のベクトル.最後に\mathcal{F}^{-1}(\hat{\mathbf{z}}_{c_{out}})と逆フーリエ変換すれば元の計算に一致する.フーリエ変換を利用した計算によりヤコビアン行列式は次のようになる.

\displaystyle
\log\left|\det\frac{\partial\mathbf{z}}{\partial\mathbf{x}}\right|=\log\left|\det\frac{\partial\hat{\mathbf{z}}}{\partial\hat{\mathbf{x}}}\right|=\sum_{u,v}\log\left|\det\hat{\mathbf{W}}_{uv}\right|

また,逆変換は逆行列を使って次のように計算できる.

\displaystyle
\hat{\mathbf{x}}_{:,uv}=\hat{\mathbf{W}}_{uv}^{-1}\hat{\mathbf{z}}_{:,uv}

でこの計算自体はある意味でglowにおける1\times 1convの計算と同じなので,glowで提案されたLU分解を利用した計算が可能.ただしここではQR分解に修正したバージョンを利用.というのもglowのLU分解はpermutation行列が固定なので自由度が下がるということを問題視したため.QR分解を使った場合,重み行列は\mathbf{W}=\mathbf{Q}(\mathbf{R}+\mathrm{diag}(\mathbf{s}))と表現される.直行行列\mathbf{Q}はHouseholder reflectionから\mathbf{Q}=\mathbf{Q}_1\mathbf{Q}_2\dots\mathbf{Q}_nとして得られ,\mathbf{Q}_iは次のように表現される.

\displaystyle
\mathbf{Q}_i=\mathbf{I}-2\frac{\mathbf{v}_i\mathbf{i}^T}{\mathbf{v}^T_i\mathbf{v}_i}

\mathbf{v}_iは学習パラメータ.このQR分解を利用した表現により,ヤコビアン行列式\logh\cdot w\cdot\mathrm{sum}(\log|\mathbf{s}|)として計算できる.

まとめ

Spatial domainでのgraph convolutionは確かに逆変換可能で盲点.畳み込みにautoregressiveの要請を入れて三角行列にすることで行列式逆行列の計算を簡略化したのもなるほどな点.