初めまして、データチームの上月です。
今回はVASILYテックブログ初の論文紹介、テーマは 自己回帰型モデル(Autoregressive, AR)です。
はじめに
VASILYではIQONの類似画像検索にAutoencoderを適用しています。
具体的にはアイテム画像で学習したAutoencoderの潜在変数を特徴量として類似画像検索を行っていますが、背景やモデルの影響を受けやすいなどの課題があります。
この問題は「潜在変数にどのような情報を持たせるか」を調整することで解決できる可能性が高く、潜在変数の分布にはdecoderの表現力が関係しています。
最近ではVAEのdecoderとしてRNNや自己回帰型モデルなどといった表現力のあるモデルを用いたり1、
decoderの後にPixelCNN2を追加することで潜在変数がもつ情報を目的にあったものにする例があります(PixelVAE3)。
そこで今回はARの中でも特に、画像と相性が良いといわれている畳み込み層がメインの 自己回帰型モデルを幾つか紹介します。
はじめに生成モデルとしてメジャーなVAE4とGAN5について触れた後にARを紹介します。
VAEとGAN
生成モデルでは、データを生成する分布を学習することが目的になります。潜在変数を仮定して が与えられた元でのの確率を学習するのがVAEとGANです。
VAE
VAEでは潜在変数の分布を正規分布か一様分布に仮定し、からEncoderが潜在変数の分布の統計量を抽出し、それらを用いてを抽出してDecoderがを生成します。 このナイーブな方法では確率的勾配降下法(以後、SGD)で直接最適化できないのでreparameterization trickを用います。 ここではEncoderが出力したと、乱数を用いて、潜在変数をで表すことで end-to-endの最適化が可能になります。 一方で、適切に最適化されても潜在変数の情報がほとんど無視されることがあり、optimization challengesと言われています(詳細はVLAE, InfoVAEを参照)。 下図は乱数から生成される画像の一例です。
GAN
GANはをGeneratorでモデリングするためにGeneratorとDiscriminatorの2つのモデルを用いて学習します。この時、Discriminatorは与えられたデータが データセットに含まれるデータか、Generatorが生成したデータかを識別します。ナイーブなGANではDiscriminatorの予測に対する交差エントロピーを誤差として用いますが、最近はWasserstein GAN6やCramer GAN7をはじめとした確率分布間の尺度を用いて学習の安定化を図る例が増えています。 GAN自体はmin-max gameであり、学習が不安定ですが生成されるデータはVAEに比べてよりリアルなものになります。 GAN全体の目的関数はJS divergenceと関係があります。
VAEは変分下界で評価する一方、GANでは評価基準が定まっておらず、 画像の見た目でモデルを評価することが多いのが1つの欠点です。
自己回帰型モデル
自己回帰型モデルでは、VAEやGANではできなかった直接的な対数尤度最大化が可能です。 番目のデータはそれまでに生成されたから番目のデータ全てに依存すると仮定して学習を行います。
そのためVAEやGANに比べると推論が遅いという欠点があり、例えばPixelCNN++では32x32の画像16枚からなるミニバッチを 生成するのに11分かかります8。
画像のcontextについて
1. 生成する順序
2. 同一チャネルでのピクセル間の依存関係
3. チャネル間の依存関係
mask Aは最初に用いるmaskで同一チャネルの情報の利用を認めないマスク、mask Bは同一チャネルの情報の利用を許すマスクです。
ここでは、以下の自己回帰型モデルを紹介します。
- MADE
- DRAW
- PixelRNN, PixelCNN
- SketchRNN
MADE
- Germain, M., Ca, M. G., Gregor, K., Com, K. G., Deepmind, G., Murray, I., … Larochelle, H. (n.d.). MADE: Masked Autoencoder for Distribution Estimation. Retrieved from https://arxiv.org/pdf/1502.03509.pdf
課題
- 従来の自己回帰型モデルの深層学習はシンプルなものより倍の計算が必要だった
解決策・優位性
- マスクを適用することでモデルのアーキテクチャ・計算方法を変えずにARにした
新規性
- 全結合層のみからなるautoencoderを自己回帰型モデルにするためのマスクを提案
- 計算量削減
- 各層の全ユニットにを割り当てて依存関係を管理
概要
3層のMADE
3層のAutoencoderで入力層・隠れ層を結ぶ重みを、隠れ層から出力層へ結ぶ重みを、それぞれのマスクをとすると、このマスクを適用したAutoencoderは
で表せます。 ここで、マスクは
で定義されます。2つのマスクの積 の各要素が と の依存関係を表しますが、の要素はすべてになります。
Deep MADE
第層のユニット数を、と層の結合の重みをとします。各層の各ユニットにを割り当てます。
マスクはと同じ形の行列で表され、で定義されます。
また、論文ではを固定するのではなく、パラメータを更新するたびにをサンプリングすることで精度が上がったことが報告されています。以下、論文に掲載されている生成画像です。
この実験で使われているのはbinarized MNISTで、モデルは全結合層のみですがそれなりの精度でデータが出力されていることがわかります。
DRAW
- Gregor, K., Danihelka, I., Graves, A., & Wierstra, D. (2014). DRAW: A Recurrent Neural Network For Image Generation. Icml-2015, 1–16.
以下は著者が公開しているDRAWの動作の様子ですが、赤枠で囲まれている注目領域(Attentiion)の遷移がこの手法のポイントです。
課題
- 従来の生成モデルでは1回でデータを生成
- 画像の全ピクセルが同じ分布に属している状態を想定しているのと等価
- そもそも人は書いたり消したりという微修正の反復で絵を生成
解決策・優位性
- sequentialなVAEと
canvas
canvas
に各時刻でのdecoderの出力を書き足していく
- 動的にAttentionの領域を確定
新規性
- sequentialなVAEにAttentionを適用
- canvasにdecoderの出力を加えることでし、回に分けて画像を生成
- Attention領域の決定にはを反映
- Attentionを
read
関数で動的に決定 - 一般的なbackpropagationで学習可能
- Attentionを用いる学習では強化学習で一般的な方策勾配法を使うことが多い。
概要
一回で画像を生成するのはスケールしにくいという考えから段階的に画像を生成していくモデルです。モデルは下の図のようにsequentialなVAEをアーキテクチャになっており、変分下界の最大化を目的にしています。 実際の目的関数は DRAWでは各イテレーションで画像の一部だけに注目(Attention)してデータを生成していきます。上の図からもわかりますが注目領域を決定する際に前のイテレーションでのdecoderの出力を利用します。
次にread
とwrite
について説明します。read
関数によってAttentionの領域を決定します。
read, writeに関して
実際にAttentionはこのように変化していきます。
表記
- 画像サイズ:
- ガウシアンフィルタ:
- グリッド中心:
- ストライド:
- 中央値の位置: (i列j行)
- ガウシアンフィルタの分散:
- フィルタの出力に対する係数:
Attentionに関するパラメータはの線形変換で求めます:
これらの値をフィルターバンクでまとめて管理します。
は正則化項です。
read
関数はフィルターバンクを用いて
で定義されます。
一方write
では新たにをから定義し、
になります。binarized MNISTでの実験結果では当時ではNLL(負の対数尤度)が最小でAttentionの有無で約7ポイントも変わっています。
PixelRNN・PixelCNN・PixelCNN++
PixelRNN & PixelCNN
- Oord, A. van den, Kalchbrenner, N., & Kavukcuoglu, K. (2016). Pixel Recurrent Neural Networks. Retrieved from http://arxiv.org/abs/1601.06759
モデル及び高速化の詳細はこちらのスライドを参照ください。 この論文は昨年話題になったDeepMindのWaveNetやNLPのByteNetなどの元となったとも言われています。
論文中では
- Row LSTM
- Diagonal BiLSTM
- PixelCNN
の3つが提案されています。
課題
- ピクセル間の高次元・広範囲・非線形なピクセル間の関係と、複雑な条件付き分布のモデル化には非常に表現力のあるsequenceモデルが必要
解決策・優位性
- 2D RNN(LSTM)を用いた12層のモデルを提案
- ピクセルの値を256クラス分類問題として定義
- ピクセルの値として不適切なものを出力しないようになる
- 自然画像では0や255がでやすいなどのガウス分布では表現できない多峰性を獲得している
新規性
- 2D RNN
- Residual Connections
- ピクセルの値をチャネル毎に256クラスの分類問題として定義
- 最終層はsoftmax
- 混合ガウス分布では表しにくい多峰性
- 0 ~ 255以外の値を取らない
概要
PixelRNNの2つは最初と最終層でそれぞれmask A、mask Bを適用しますが。PixelCNNではすべての層でmask Aあるいはmask Bを適用します。 PixelRNNは2D LSTMレイヤーでstateに適用し、畳み込みによって特定の次元のstateの計算を一回で行っています。この2D LSTMレイヤーにはRow LSTMとDiagonal BiLSTMの2種類があります。 しかしPixelRNNでは(潜在的には)どんな長さの依存関係も考慮できますが、計算コストが非常に大きいです。この代用として、CNNのみで構成したのがPixelCNNです。PixelCNNでは空間解像度を落とさず、poolingも適用していません。 反映可能な依存関係は小さくなりますが、parallelに学習できるというメリットがあります。
256クラス分類にするメリット
左上はRチャンネルの1番目のピクセルの値の分布を表しているが0と255が多い特徴を捉えていることからも256クラス分るにするメリットが伺えます。
実験・結果
実験でのアーキテクチャは以下です。
画像の補完
画像全体の整合性は取れているように見えます。
対数尤度
発表時では初の70台を達成しましたが、PixelCNN++に抜かれています。
PixelCNNの高速化
PixelCNN++
- Salimans, T., Karpathy, A., Chen, X., & Kingma, D. P. (2017). PixelCNN++: Improving the PixelCNN with Discretized Logistic Mixture Likelihood and Other Modifications. Retrieved from http://arxiv.org/abs/1701.05517
課題
- PixelRNNの単純化&高速化したものであるPixelCNNでも計算が遅いこと
- 各チャネル・各ピクセルでの256クラス分類を行っていること
- メモリ・計算効率が悪い
- 勾配が非常にスパース
- 各チャネル・各ピクセルでの256クラス分類を行っていること
解決策・優位性・新規性
- softmaxを利参加したロジスティック回帰に変更
- 実際に0や255が近傍の値より多いという特徴が現れている
- 画像全体に対してconditioning
- dilated convolutionの代わりにダウンサンプリング
- ダウンサンプリングで失われた情報はショートカットで補完
- dropoutによる正則化
その他
PixelCNNの高速化としては - Ramachandran, P., Paine, T. Le, Khorrami, P., Babaeizadeh, M., Chang, S., Zhang, Y., … Huang, T. S. (2017). Fast Generation for Convolutional Autoregressive Models. Retrieved from http://arxiv.org/abs/1704.06001 - Reed, S., Oord, A. van den, Kalchbrenner, N., Colmenarejo, S. G., Wang, Z., Belov, D., & de Freitas, N. (2017). Parallel Multiscale Autoregressive Density Estimation. Retrieved from https://arxiv.org/abs/1703.03664 など他にもあります。 前者はWaveNetを21倍、PixelCNNを183倍高速化に成功、後者はPixelCNNではの計算量だったがを達成し、8x8から512x512の超解像も成功しています。
Sketch RNN
最後にRNNを用いたSketch RNNを紹介します。 実装はGitHubにあります。
課題
- VAE、GANそしてARはピクセル画像が対象となっている
- ヒトは世界をピクセル画像のようには理解していないし、線だけで描かれた抽象的なスケッチでコミュニケーションをとる
- 各スケッチのデータは点のリストで表されているのでスケッチを終える判断が困難
- スケッチが終わる点の数は少ないためデータに偏りがある
解決策・優位性
- 手書きスケッチのデータセットからヒトのようなペンの動かし方を学習する
- スケッチ同士の足し算ができる
- スケッチの終了判定を克服
新規性
- ベクター画像のデータセットを作成・公開
- 各スケッチのデータは点のリスト(5つの要素)で表されていて、2要素はオフセット、他3要素はその点における描写の状態を表すone-hotベクター。
- 描写の状態には「描写を終える」も含まれている。
- ベクター画像の生成とそれに特化した学習フロー
- 潜在空間での加減算
概要
seq2seqなVAEでベクター画像を生成するモデルを学習する手法を提案しています。 ベクター画像の場合、与えられるのは点に関するデータのリストなので描写の終了判断が求められ、その判定が難しいですが克服し、 スケッチ画像に特化した学習手法を提案しています。
データセット
データセットは点のリストです。 リストの要素、つまりスケッチの各点の情報は5つの要素のベクトル です。ベクトルの初めの2要素は1つ前の点からの距離を表し、残りの3要素はone-hotベクターで各要素は
- : ペンが紙についていてまだ書き続ける
- : ペンが紙から離れる
- : 書く作業が終了していて、この点と後続の点がレンダリングされない
ことを表しています。
モデル
図にある通り、seq2seqのVAEをベースにしています。 encoderは双方向で入力は各スケッチを表す点のリストと逆順にしたリストです。 2つのencoderの出力は結合された後に潜在変数を表すための2つのベクトルに射影されます。 はVAE同様reparameterization trickでと計算されます。
また、decoderでは各でを予測します。 は個のガウス分布からなる混合ガウス分布で、はカテゴリカル分布でをモデルします。
各でのdecoderの出力は個のパラメータを持ちます。 内訳は個のの二変数ガウス分布のパラメータ とガウス分布の混合重みの個のパラメータ、そしてです。
学習
の分布は非常に偏っているため「どこでスケッチをやめるか」の学習は非常に困難ですが、 この論文ではスケッチのデータセットの中で最も点が多いリストの要素数をとして 以下のようにシンプルなロス関数を設計して学習しました。
目的関数はVAE同様にreconstruction lossとKL divergenceの和で表されます。 reconstruction lossはの負の対数尤度との和でとおきます。 また。KL divergenceの項は潜在変数の次元数をとし、 で表されます。 最終的な目的関数は係数を用いて となります。
実験・結果
推論時には温度パラメータ を用いてと変形することで終了するタイミングのランダム性を変更できます。
スケッチの生成
潜在変数からの生成
sketchを入力した時の出力
左右の一番下の入力はおそらくデータセットには含まれていませんが出力はデータセットに含まれるような画風に近づけられているように見えます。
潜在変数の足し引き
上段では胴体が書き足され、下段では胴体が除かれているので適切な類推が行われているように見えます。
最後に
今回は自己回帰型モデルを中心に紹介しました。 全体としてまだまだGANやVAEに比べると推論にかかる時間がネックですが対数尤度を直接最適化できるのは大きな魅力ですし 今後高速化の手法が多く出ると信じています。
データチームでは普段からarxivのcs.CVやstat.MLで画像解析・レコメンドの新規手法をチェックし、毎週のTECH ミーティングでは 1週間で読んだ主にファッションに関する論文をエンジニアに紹介しています。
研究成果を実際に課題解決に適用し、サービス改善を行うメンバーを募集しています。 少しでも興味を抱いた方はこちらから応募ください。
-
Søren, M. F., Sønderby, K., Paquet, U., & Winther, O. (n.d.). Sequential Neural Models with Stochastic Layers. Retrieved from https://arxiv.org/pdf/1605.07571.pdf ↩
-
Oord, A. van den, Kalchbrenner, N., & Kavukcuoglu, K. (2016). Pixel Recurrent Neural Networks. Retrieved from http://arxiv.org/abs/1601.06759 ↩
-
Gulrajani, I., Kumar, K., Ahmed, F., Taiga, A. A., Visin, F., Vazquez, D., & Courville, A. (n.d.). PIXELVAE: A LATENT VARIABLE MODEL FOR NATURAL IMAGES. ↩
-
Kingma, D. P., & Welling, M. (2013). Auto-Encoding Variational Bayes, (Ml), 1–14. Retrieved from http://arxiv.org/abs/1312.6114 ↩
-
Goodfellow, I., Pouget-Abadie, J., Mirza, M., Xu, B., Warde-Farley, D., Ozair, S., … Bengio, Y. (2014). Generative Adversarial Nets. Advances in Neural Information Processing Systems 27, 2672–2680. Retrieved from http://papers.nips.cc/paper/5423-generative-adversarial-nets.pdf ↩
-
Arjovsky, M., Chintala, S., & Bottou, L. (2017). Wasserstein GAN. Retrieved from http://arxiv.org/abs/1701.07875↩
-
Bellemare, M. G., Danihelka, I., Dabney, W., Mohamed, S., Lakshminarayanan, B., Hoyer, S., & Munos, R. (n.d.). The Cramer Distance as a Solution to Biased Wasserstein Gradients. ↩
-
Ramachandran, P., Paine, T. Le, Khorrami, P., Babaeizadeh, M., Chang, S., Zhang, Y., … Huang, T. S. (2017). Fast Generation for Convolutional Autoregressive Models. Retrieved from http://arxiv.org/abs/1704.06001 ↩