自己回帰型モデルの深層学習

初めまして、データチームの上月です。
今回はVASILYテックブログ初の論文紹介、テーマは 自己回帰型モデル(Autoregressive, AR)です。

f:id:vasilyjp:20170615175304j:plain

はじめに

VASILYではIQONの類似画像検索にAutoencoderを適用しています。
具体的にはアイテム画像で学習したAutoencoderの潜在変数を特徴量として類似画像検索を行っていますが、背景やモデルの影響を受けやすいなどの課題があります。
この問題は「潜在変数にどのような情報を持たせるか」を調整することで解決できる可能性が高く、潜在変数の分布にはdecoderの表現力が関係しています。 最近ではVAEのdecoderとしてRNNや自己回帰型モデルなどといった表現力のあるモデルを用いたり1、 decoderの後にPixelCNN2を追加することで潜在変数がもつ情報を目的にあったものにする例があります(PixelVAE3)。 そこで今回はARの中でも特に、画像と相性が良いといわれている畳み込み層がメインの 自己回帰型モデルを幾つか紹介します。

はじめに生成モデルとしてメジャーなVAE4とGAN5について触れた後にARを紹介します。

VAEとGAN

生成モデルでは、データ{x}を生成する分布{p(x)}を学習することが目的になります。潜在変数{z \sim p(z)}を仮定して {z}が与えられた元での{x}の確率{p(x|z)}を学習するのがVAEとGANです。

VAE

VAEでは潜在変数の分布を正規分布か一様分布に仮定し、{x}からEncoderが潜在変数{z}の分布の統計量{\mu, \sigma}を抽出し、それらを用いて{z}を抽出してDecoderが{\hat x}を生成します。 このナイーブな方法では確率的勾配降下法(以後、SGD)で直接最適化できないのでreparameterization trickを用います。 ここではEncoderが出力した{\mu}{\sigma}、乱数{\alpha}を用いて、潜在変数を{z = \mu + \alpha \sigma}で表すことで end-to-endの最適化が可能になります。 一方で、適切に最適化されても潜在変数の情報がほとんど無視されることがあり、optimization challengesと言われています(詳細はVLAE, InfoVAEを参照)。 下図は乱数から生成される画像の一例です。 VAE_epoch_100

GAN

GANは{p(x)}を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ではできなかった直接的な対数尤度最大化が可能です。 {i}番目のデータはそれまでに生成された{1}から{i - 1}番目のデータ全てに依存すると仮定して学習を行います。

そのためVAEやGANに比べると推論が遅いという欠点があり、例えばPixelCNN++では32x32の画像16枚からなるミニバッチを 生成するのに11分かかります8

画像のcontextについて

1. 生成する順序

f:id:vasilyjp:20170615162854p:plain

2. 同一チャネルでのピクセル間の依存関係

f:id:vasilyjp:20170615162919p:plain

3. チャネル間の依存関係

f:id:vasilyjp:20170615162934p:plain
mask Aは最初に用いるmaskで同一チャネルの情報の利用を認めないマスク、mask Bは同一チャネルの情報の利用を許すマスクです。

ここでは、以下の自己回帰型モデルを紹介します。

  1. MADE
  2. DRAW
  3. PixelRNN, PixelCNN
  4. 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

課題

  • 従来の自己回帰型モデルの深層学習はシンプルなものより{O(D)}倍の計算が必要だった

解決策・優位性

  • マスクを適用することでモデルのアーキテクチャ・計算方法を変えずにARにした

新規性

  • 全結合層のみからなるautoencoderを自己回帰型モデルにするためのマスクを提案
    • 計算量削減
  • 各層の全ユニットに{m(k)}を割り当てて依存関係を管理
    • {m(k) \in [1, K - 1], \ K: \text{ユニット数}}

概要

3層のMADE

3層のAutoencoderで入力層・隠れ層を結ぶ重みを{{\mathbf W}}、隠れ層から出力層へ結ぶ重みを{{\mathbf V}}、それぞれのマスクを{{\mathbf M}^{\mathbf W}, {\mathbf M}^{\mathbf V}}とすると、このマスクを適用したAutoencoderは

  • {{\mathbf h}({\mathbf x}) = {\mathbf g}({\mathbf b}+ {\mathbf W} \odot {\mathbf M}^{\mathbf W}){\mathbf x})}
  • {{\hat {\mathbf x}} = {\rm sigmoid} \left({\mathbf c} + ({\mathbf V} \odot {\mathbf M}^{\mathbf V}){\mathbf h}({\mathbf x})\right)}

で表せます。 ここで、マスクは

  • {{\mathbf M}^{\mathbf W}_{k, d} = {\mathbb 1}[d > m(k)]}
  • {{\mathbf M}^{\mathbf V}_{d, k} = {\mathbb 1}[d > m(k)]}

で定義されます。2つのマスクの積 {{\mathbf M}^{{\mathbf V, W}}} の各要素が {{\hat x}_{d^{\prime}}}{x_d} の依存関係を表しますが、{d^{\prime} \le d}の要素はすべて{0}になります。

Deep MADE

{l}層のユニット数を{K^{l}}{l-1}{l}層の結合の重みを{W^{l}}とします。各層の各ユニットに{m(K)}を割り当てます。 マスクは{W^{l}}と同じ形の行列で表され、{{\mathbb 1}[m^{l}(k') \ge m^{l - 1}(k)]}で定義されます。 f:id:vasilyjp:20170615162951p:plain
また、論文では{m(k)}を固定するのではなく、パラメータを更新するたびに{m(k)}をサンプリングすることで精度が上がったことが報告されています。以下、論文に掲載されている生成画像です。

f:id:vasilyjp:20170615163004p:plain
この実験で使われているのは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)の遷移がこの手法のポイントです。

www.youtube.com

課題

  • 従来の生成モデルでは1回でデータを生成
    • 画像の全ピクセルが同じ分布に属している状態を想定しているのと等価
    • そもそも人は書いたり消したりという微修正の反復で絵を生成

解決策・優位性

  • sequentialなVAEとcanvas
    • canvasに各時刻でのdecoderの出力を書き足していく
  • 動的にAttentionの領域を確定

新規性

  • sequentialなVAEにAttentionを適用
  • canvasにdecoderの出力を加えることでし、{T}回に分けて画像を生成
  • Attention領域の決定には{h^{dec}_{t - 1}}を反映
  • Attentionをread関数で動的に決定
  • 一般的なbackpropagationで学習可能
    • Attentionを用いる学習では強化学習で一般的な方策勾配法を使うことが多い。

f:id:vasilyjp:20170615163022p:plain

概要

一回で画像を生成するのはスケールしにくいという考えから段階的に画像を生成していくモデルです。モデルは下の図のようにsequentialなVAEをアーキテクチャになっており、変分下界の最大化を目的にしています。 実際の目的関数は DRAWでは各イテレーションで画像の一部だけに注目(Attention)してデータを生成していきます。上の図からもわかりますが注目領域を決定する際に前のイテレーションでのdecoderの出力を利用します。

次にreadwriteについて説明します。read関数によってAttentionの領域を決定します。

read, writeに関して

実際にAttentionはこのように変化していきます。 f:id:vasilyjp:20170615163045p:plain

表記

  • 画像サイズ:{A \times B}
  • ガウシアンフィルタ:{N \times N}
  • グリッド中心:{(g_X, g_Y)}
  • ストライド:{\delta}
  • 中央値の位置:{\mu_X^{i}, \mu_Y^i} (i列j行)
  • ガウシアンフィルタの分散:{\sigma^2}
  • フィルタの出力に対する係数:{\gamma}

Attentionに関するパラメータは{h^{dec}}の線形変換で求めます:

  • {({\tilde g_X}, {\tilde g_Y}, \log \sigma^2, \log {\tilde \delta}, \log \gamma) = W(h^{dec})}
  • {g_X = \dfrac{A + 1}{2}({\tilde g_X} + 1)}
  • {g_Y = \dfrac{B + 1}{2}({\tilde g_Y} + 1)}
  • {\delta = \dfrac{\max(A, B) - 1}{N - 1}{\tilde \delta}}

これらの値をフィルターバンク{F_X, F_Y}でまとめて管理します。

  • {F_X[i, a] = \dfrac{1}{Z_X} \exp \left( - \dfrac{(a - \mu_X^i)^2}{2 \sigma^2} \right)}
  • {F_Y[j, b] = \dfrac{1}{Z_Y} \exp \left( - \dfrac{(b - \mu_Y^i)^2}{2 \sigma^2} \right)}

{Z_X, Z_Y}は正則化項です。

read関数はフィルターバンクを用いて
{read(x, \hat{x}_{t}, h^{dec'}) = \gamma [F_Y x F_X^{\top}, F_Y \hat{x} F_X^{\top}]} で定義されます。 一方writeでは新たに{{\hat \gamma}, {\hat F_X}, {\hat F_Y}}{H^{dec}_t}から定義し、

  • {w_t = W(h^{dec}_t)}
  • {write(h^{dec}_t) = \dfrac{1}{\hat \gamma}{\hat F}_Y^{\top} w_t {\hat F}_X}

になります。binarized MNISTでの実験結果では当時ではNLL(負の対数尤度)が最小でAttentionの有無で約7ポイントも変わっています。

PixelRNN・PixelCNN・PixelCNN++

PixelRNN & PixelCNN

モデル及び高速化の詳細はこちらのスライドを参照ください。 この論文は昨年話題になった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クラス分類にするメリット

f:id:vasilyjp:20170615163120p:plain
左上はRチャンネルの1番目のピクセルの値の分布を表しているが0と255が多い特徴を捉えていることからも256クラス分るにするメリットが伺えます。

実験・結果

実験でのアーキテクチャは以下です。 f:id:vasilyjp:20170615163144p:plain

画像の補完

f:id:vasilyjp:20170615163200p:plain
画像全体の整合性は取れているように見えます。

対数尤度

f:id:vasilyjp:20170615163228p:plain
発表時では初の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クラス分類を行っていること
      • メモリ・計算効率が悪い
      • 勾配が非常にスパース
解決策・優位性・新規性
  • softmaxを利参加したロジスティック回帰に変更 f:id:vasilyjp:20170615162123p:plain
    • 実際に0や255が近傍の値より多いという特徴が現れている
  • 画像全体に対してconditioning
  • dilated convolutionの代わりにダウンサンプリング
  • ダウンサンプリングで失われた情報はショートカットで補完 f:id:vasilyjp:20170615161201p:plain
  • 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では{O(N)}の計算量だったが{O(log N)}を達成し、8x8から512x512の超解像も成功しています。

Sketch RNN

最後にRNNを用いたSketch RNNを紹介します。 実装はGitHubにあります。

課題

  • VAE、GANそしてARはピクセル画像が対象となっている
    • ヒトは世界をピクセル画像のようには理解していないし、線だけで描かれた抽象的なスケッチでコミュニケーションをとる
  • 各スケッチのデータは点のリストで表されているのでスケッチを終える判断が困難
    • スケッチが終わる点の数は少ないためデータに偏りがある

解決策・優位性

  • 手書きスケッチのデータセットからヒトのようなペンの動かし方を学習する
  • スケッチ同士の足し算ができる
  • スケッチの終了判定を克服

新規性

  • ベクター画像のデータセットを作成・公開
    • 各スケッチのデータは点のリスト(5つの要素)で表されていて、2要素はオフセット、他3要素はその点における描写の状態を表すone-hotベクター。
    • 描写の状態には「描写を終える」も含まれている。
  • ベクター画像の生成とそれに特化した学習フロー
  • 潜在空間での加減算

概要

seq2seqなVAEでベクター画像を生成するモデルを学習する手法を提案しています。 ベクター画像の場合、与えられるのは点に関するデータのリストなので描写の終了判断が求められ、その判定が難しいですが克服し、 スケッチ画像に特化した学習手法を提案しています。

データセット

データセットは点のリストです。 リストの要素、つまりスケッチの各点の情報は5つの要素のベクトル {(\Delta x, \Delta y, p_1, p_2, p_3)} です。ベクトルの初めの2要素は1つ前の点からの距離を表し、残りの3要素はone-hotベクターで各要素は

  • {p_1}: ペンが紙についていてまだ書き続ける
  • {p_2}: ペンが紙から離れる
  • {p_3}: 書く作業が終了していて、この点と後続の点がレンダリングされない

ことを表しています。

モデル

f:id:vasilyjp:20170615163323p:plain 図にある通り、seq2seqのVAEをベースにしています。 encoderは双方向で入力は各スケッチを表す点のリストと逆順にしたリストです。 2つのencoderの出力は結合された後に潜在変数{z}を表すための2つのベクトル{\mu, \sigma}に射影されます。 {z}はVAE同様reparameterization trickで{z = \mu + \sigma \odot {\mathcal N}(0, I)}と計算されます。

また、decoderでは各{t}{(\Delta x, \Delta y, q_1, q_2, q_3)}を予測します。 {(\Delta x, \Delta y)}{M}個のガウス分布からなる混合ガウス分布で、{(q_1, q_2, q_3)}はカテゴリカル分布で{(p_1, p_2, p_3)}をモデルします。

{t}でのdecoderの出力{y_t}{5M + M + 3}個のパラメータを持ちます。 内訳は{M}個の{x, y}の二変数ガウス分布のパラメータ{(\mu_x, \mu_y, \sigma_x, \sigma_y, \rho_{xy})} とガウス分布の混合重みの{M}個のパラメータ、そして{(q_1, q_2, q_2)}です。

学習

{(p_1, p_2, p_3)}の分布は非常に偏っているため「どこでスケッチをやめるか」の学習は非常に困難ですが、 この論文ではスケッチのデータセットの中で最も点が多いリストの要素数を{N_{\text{max}}}として 以下のようにシンプルなロス関数を設計して学習しました。 {L_p = - \dfrac{1}{N_{\text{max}}} \sum_{i = 1}^{N_{\text{max}}} \sum_{k=1}^3 p_{k, i} \log (q_{k, i})}

目的関数はVAE同様にreconstruction lossとKL divergenceの和で表されます。 reconstruction lossは{(\Delta x, \Delta y)}の負の対数尤度と{L_p}の和で{L_R}とおきます。 また。KL divergenceの項は潜在変数の次元数を{N_z}とし、 {L_{KL} = - \dfrac{1}{2 N_z} \left( 1 + \hat{\sigma} - \mu^2 - \exp(\hat{\sigma})\right)}で表されます。 最終的な目的関数は係数{w_{KL}}を用いて {L = L_R + w_{KL} L{KL}}となります。

実験・結果

推論時には温度パラメータ {\tau \in (0, 1]} を用いて{\hat{q_k} \rightarrow \dfrac{\hat{q_k}}{\tau}}と変形することで終了するタイミングのランダム性を変更できます。

スケッチの生成

潜在変数からの生成

f:id:vasilyjp:20170615163348p:plain

sketchを入力した時の出力

f:id:vasilyjp:20170615163400p:plain

左右の一番下の入力はおそらくデータセットには含まれていませんが出力はデータセットに含まれるような画風に近づけられているように見えます。

潜在変数の足し引き

f:id:vasilyjp:20170615163417p:plain 上段では胴体が書き足され、下段では胴体が除かれているので適切な類推が行われているように見えます。

最後に

今回は自己回帰型モデルを中心に紹介しました。 全体としてまだまだGANやVAEに比べると推論にかかる時間がネックですが対数尤度を直接最適化できるのは大きな魅力ですし 今後高速化の手法が多く出ると信じています。

データチームでは普段からarxivのcs.CVやstat.MLで画像解析・レコメンドの新規手法をチェックし、毎週のTECH ミーティングでは 1週間で読んだ主にファッションに関する論文をエンジニアに紹介しています。

研究成果を実際に課題解決に適用し、サービス改善を行うメンバーを募集しています。 少しでも興味を抱いた方はこちらから応募ください。


  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

  2. Oord, A. van den, Kalchbrenner, N., & Kavukcuoglu, K. (2016). Pixel Recurrent Neural Networks. Retrieved from http://arxiv.org/abs/1601.06759

  3. 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.

  4. Kingma, D. P., & Welling, M. (2013). Auto-Encoding Variational Bayes, (Ml), 1–14. Retrieved from http://arxiv.org/abs/1312.6114

  5. 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

  6. Arjovsky, M., Chintala, S., & Bottou, L. (2017). Wasserstein GAN. Retrieved from http://arxiv.org/abs/1701.07875

  7. 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.

  8. 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