深層時系列を使った汎用的な最適化の論文を読む

時系列を使って強化学習を汎用的に解くモデルが発表されており、この様な画期的な論文を知らなかったとは如何に勉強不足であるか思い知る機会となった。 

[1611.05763] Learning to reinforcement learn

もしこの論文があまり読まれていないなら、その理由は「Learning to Learn using
Gradient Descent」にロジックを殆ど踏襲しており、これを読まないと全く記述が理解できないからである。

そこで遅まきながら一昨年のNIPSでかなり有名になったLSTMを使った汎用的最適化の下記の論文を読む。

arxiv.org

 この論文は最適化のSDGの収束ロジックを時系列のLSTMに置き換えたものといえる。

深層学習の良くできたモデルでは精度と汎化の両方が傑出している理由は解明中であるが、次の様に既存の数理的なロジックを深層学習に置き換えて、高次元(数万次元)でより性能改善を示す流れが顕著であり、これもその一つと考えられる。

変分法  VAE

[1312.6114] Auto-Encoding Variational Bayes

・ 事後分布 ABC

 https://papers.nips.cc/paper/8228-predictive-approximate-bayesian-computation-via-saddle-points.pdf

 

一般に多次元のパラメータでの関数の最適解ではSDGを使うが、関数の特徴(勾配や局所解)によって様々な工夫を使うのが一般的である。しかしLearning to learnではこの様な配慮を必要とせず深層学習で最適化できるとしている。 

 

(1) Learning to Learn モデル

最適化パラメータ\theta^*を解くにはLearning to LearnではSDGを以下と置き換えている。

     \theta^* = argmin_{\theta \in \Theta} f(\theta)                (1)

 ・SDG  

      \theta_{t+1} = \theta_t - \alpha_t \nabla f(\theta_t)       

 ・Learning to learn

      \theta_{t+1} = \theta_t + g_t(\nabla f(\theta_t),\phi)  (2)

      ここで

        \theta_tは最適化パラメータ(Optimizee)で1万次元を想定

        g_tは最適化関数(Optimizer)

        \phiはOptimizerのパラメータ

 (2)式は時系列過程であり、g_tをLSTMを使って性能を改善するアイデアは自然である。

これを定式化するとOptimizerg_tは以下の損失関数\mathcal{L}(\phi)の最小化を深層学習mで解いて得られることになる。

  \mathcal{L}(\phi) = \mathbb{E}_f [\sum_{t=1}^T w_t f(\theta_t) ]     (3)

    (3)式を以下の繰返しで最小化する

          \theta_{t+1} = \theta_t + g_t

          [g_t,h_{t+1} ] = m(\nabla_t,h_t,\phi)

      ここで

     w_tは深層学習の効率化のための緩和係数 実験ではw_t=1を使用

     \nabla_t = \nabla_\theta f(\theta_t)\theta_tでの勾配である。

          mは深層学習を示す 実験ではLSTMに限定していない。

     h_tは深層学習の隠変数

  Learning to Learnの論文では(3)式の最適化過程を下図で示している。上段では式(3)の最適化パラメータ\theta_t(Optimizee)の改善 下段では最適化関数g_tの改善を示している。 

f:id:mabonki0725:20190101104434p:plain

 上図の様なモデル化で高次元の最適化を実現しなければならないが、最適化パラメータの各次元\theta^i  i=1 \cdots nの交差を考えると天文学的な組み合わせになる。そこでLearning to learnでは下図の様に並列に次元数nだけLSTMを提供して実現していてパラメータの交差をしていない。この様なモデルの簡便化で性能が出るのが不思議である。

 f:id:mabonki0725:20190101105444p:plain

(2) 実験
 (3)式のmでSDGを含み様々な手法の結果を示しているがLearning to Learn(LSTM)が一番性能がよい。また実験2)でも分る様に1万次元の画像でもよく識別できている。

 

  実験1) 

   Quadraticはf(\theta) = || W\theta - y ||_2^2を示し \thetaは10次元

   20個の隠れ変数 2層モデルを使用

f:id:mabonki0725:20190101121241p:plain

   実験2)画像の識別

  ここで LSTM-subとはheld-out label(非学習用データでの区分)の結果 

f:id:mabonki0725:20190101121835p:plain

画像CFIRの識別(10個 5個 2個)結果

 実験3) 複数の損失関数でのLearning to Learn

          f(^theta) = \alpha \mathcal{L}_{content}(c,\theta) + \beta \mathcal{L}_{style}(s,\theta) + \gamma \mathcal{L}_{reg}(\theta)

f:id:mabonki0725:20190101122328p:plain

画像と絵画の合成 左端:原画像 中央:合成 右端:絵画

(3) 感想

 次元が高いパラメータでの関数の最適化でLSTMを用いたLearing to Learnが実験で汎用的に適合できることを示したが、何故実現できるかは皆目分らず、やはり深層学習の基本的な解明を必要としている。この辺の議論は最近特に成果が出始めていおり、日本では統数研の今泉さんらの成果がある。

深層学習による非滑らかな関数の推定