襖からキリン

読んだ論文まとめ。

Disentangled representationを用いたLife-long learningの論文紹介

今回は、NeruIPS2018にアクセプトされたLife-Long Disentangled Representation Learning with Cross-Domain Latent Homologies の論文を紹介します。
この論文は、一言でいうと、データ分布の変化を自動的に検出し、新しいデータ分布の生成要因にあたる潜在表現を獲得するか、前のデータ分布の潜在表現が活用できるなら再利用して、現タスクの学習を行うと同時に、前に学習した内容も忘れないようにします。
この論文を選んだ理由は、Life-long learningとDisentangled representationが同時に学べたからです。

まず用語の説明を簡単にした後、それらの用語を用いて本論文の内容をもう一度説明して、詳細を述べます。

Life-long learning

実際問題では、タスクは徐々に変化する。Life-long learningは、前のタスク情報を保持しながら、新しいタスクを解決することを繰り返す学習方法です。まさに人生そのものといった感じです。Life-long learning のもう1つの重要な側面は、前に学習した表現を新しいドメインで再利用できることです(positive transfer)。例えば、イチゴとバナナが緑色のときは食べれないという視覚的なドメイン知識を獲得しておくと、将来的に緑色の桃を食べるかどうかを決めるときに役立ちます。つまり、すべての新しい環境でゼロから学習する必要がなくなり、データ効率が向上します。

Catastrophic forgetting

現在の深層学習では、事前に学習した知識を忘れるというCatastrophic forgetting(破壊的忘却)が起きてしまいます。つまり、新しいタスクに適合しすぎて、古いタスクの精度が劣化します。Life-long learningの考えだと前のタスクも記憶してほしいので破壊的忘却をどうするのかがポイントですね。この論文の対策として、 “dreaming” feedback loop とlatent maskingを使用します。あとでまた説明します。

Disentangled Representation

Disentangled Representationとは、潜在変数の各次元に、ただ一つだけの意味を獲得させるような表現学習です。例えば、車を潜在表現で5次元で表したとき、各次元が「色、回転、拡大縮小、形、柄」の意味を持ってほしいというお気持ちです。つまり、ある潜在次元の値だけを変更したときに、その次元の意味だけが生成物に変更されることが期待されます。ある次元の値を動かしたとき、大きさと向きが同時に動くことはDisentangled Representationとは言いません。

提案されたアプローチ

訓練データ分布のシフトを自動検出し、前のタスクまでに獲得した潜在表現を再利用するか、新しいデータセット固有のDisentangled 表現を用いて、Catastrophic forgettingを防ぎながらLife-long learningをおこなう。 順番に、前置き、訓練データ分布のシフトを自動検出の原理、潜在表現の獲得方法、潜在表現の再利用か新しい潜在表現の獲得する方法、Catastrophic forgettingを防ぐ“dreaming” feedback loop とlatent maskingの説明をし、全体の形を説明していきます。

データ分布に対する仮定

まず、データ分布に対して仮定を2つおきます。あるデータ分布は、環境集合 \mathcal{S}=\left\{s _ {1}, s _ {2}, \dots, s _ {K}\right\}のどれかに属するという仮定が1つ。もう1つは、各環境 s _ i は、独立なデータ生成要因の潜在変数集合 \mathcal{Z}=\left\{z _ {1}, z _ {2}, \ldots, z _ {N}\right\}のサブセットによって構築されている仮定です。これらは、図にすると以下のようになります。

f:id:masamasa59:20191228180718p:plain
各データセット/環境がそれぞれクラスターに属すると仮定した図
例えば、図の情報から説明すると z _ {i}が画像の形成分を表す潜在変数なら、その潜在変数を使用する環境 s _ 1, s _ 2のデータセットは、形成分を生成要因に含むデータセットということになります。

データ分布のシフトを自動的に検出するメカニズム

ここで、データ分布のシフトを自動的に検出するメカニズムを直感的に説明すると、新しいバッチ {\bf x}
_ {\text{batch}}が、今までの環境 sに属するか、否かで新しい環境を作るか決めます。ただし、モデル構造的に環境の上限Kは決まっています。
では、今までの環境 sに属するか、否かを表現する数式は以下になります。

f:id:masamasa59:20191228161616p:plain:w500
いきなり変分事後分布があったりと気持ち悪いかもしれませんが、分かりやすく説明するので勘弁してください。どうやって今までの環境 sに属するか、否かは、まず、新しいデータセットのバッチ {\bf x} _ {\text{batch}}が与えられたもとで、学習段階で観測された r個の環境のどれかに属する確率 q\left(\boldsymbol{s} | \mathbf{x} _ {\text {batch }}\right) が一番高いかを調べるところから始まります。その環境 \hat{s}をカテゴリカル分布の最大のクラス \hat{\boldsymbol{s}}=\arg \max _ {\boldsymbol{s}} q\left(\boldsymbol{s} | \mathbf{x} _ {\text {batch }}\right)によって求めます。環境 \hat{s}が求まれば、場合分け式の上が説明できます。もともと環境 \hat{s}に属するデータセットもあるので、環境 \hat{s}のデータセットを用いた平均再構成誤差項の \kappa 倍である \kappa L _ {\hat{s} }より新しいバッチの再構成誤差項の方が小さいのであれば、新しいバッチ {\bf x} _ {\text{batch}}は、一番今まで観測した環境 r個の中であり得そうな環境 \hat{s}のデータセットとします。実験では、 \kappa は1.5倍とかしていたので、気持ち心広く新しいバッチも今までの環境に属するんじゃない?というお気持ちだと捉えました。新しい環境は、そうじゃなかったときです。つまり、一番あり得そうな環境でも上手くデータを再構成できないってことは、新しい環境なんだなということです。

訓練データ分布のシフトを自動検出の原理を説明したので、次は、各環境の潜在表現の獲得方法を紹介します。

Disentangled Representation の使い方

各環境の潜在表現の獲得方法を説明するためには、まずデータの生成モデルをみます。

f:id:masamasa59:20191229094241p:plain
データの生成過程
上の図は、入力データをエンコーダーに通し、潜在表現で環境と環境の潜在変数を推論し、デコーダーで再構成するモデルです。 数式で表すと、以下のようになります。
f:id:masamasa59:20191228161448p:plain:w500
この式は、Disentangled Representationの論文CCI-VAEの式と似たようなものです。違うのは変分事後分布と尤度関数が環境の潜在変数と環境変数 sに依存することだけです。この式の意味合いを説明すると、一項目は環境の潜在変数 z _ s環境変数 sに依存する再構成誤差項です。2項目がVAEしか知らない人からすると特殊です。2項目の C=0, \gamma=1のとき、上式はVAEの変分下界の式の形になります。ただ \gamma を大きくするとβ-VAEになります。β-VAEは、βを大きくすることで、Disentangled Representationが得られるという論文です。つまり変分事後分布のある次元をいじると、ある特徴だけが生成物で変化する表現が獲得できるということです。しかし、βが大きすぎると標準ガウス分布正則化がきつく、再構成ができなくなるという問題を生じます。さらにCCI-VAEでは、ターゲット容量 Cを学習中に徐々に大きくすることで、Disentangledな潜在表現がロバストに獲得できることが示されています。また、しかし、二つのパラメータ C, \gammaのチューニングは、データに依存する部分が大きく難しいです。 ここまでで、提案手法の生成部分がCCI -VAEと似た式なことからDisentangled Representationが得られることは分かりました。しかし、各環境の潜在表現は、潜在変数集合のサブセットで得られると最初に仮定しました。その部分を変分事後分布で表現します。具体的には、以下のように定式化します。
f:id:masamasa59:20191228161534p:plain:w400

 {\bf a}^ s は、 {\bf z} の次元と同じで2値変数でマスクの役割を果たします。つまり、この潜在マスクは環境ごとに変わり、使用する潜在変数 {\bf z} の次元が変わります。 ここまでで、各環境ごとの潜在表現の獲得方法を説明しました。次は、潜在表現の再利用か新しい潜在表現を獲得するか決まる潜在マスク(Latent masking)について、どうやって潜在変数集合のどの変数を使うか決めるのか説明します。

Latent masking

潜在マスクの利点は、3つあります。(1) 環境ごとに必要な潜在表現が得られる。(2) 前の環境では必要だったが、現在の環境では使わない潜在表現 z _ nを無視し、再訓練でき、壊滅的な忘却を防ぐことに繋がります。(3) 環境間の潜在表現を共有できる。つまり、この利点によると、上記の目的関数に従っていれば、新しいデータセットが今までの環境に属するなら、 {\mathbb E} _ { {\bf x}^ s}[{q _ \phi}({\bf z} _ s| {\bf x}^ s)] \approx p({\bf z}^ s) に近づいているはずです。したがって、今までの潜在表現をそのまま使います。しかし、新しいデータセットの場合、潜在表現が標準ガウス分布に近づいていないと考えられます。そこでマスクを外して再学習をし、違うDisentangled表現を獲得します。この直感を数式で表すと以下のようになります。

f:id:masamasa59:20191228161001p:plain:w400
f:id:masamasa59:20191228161353p:plain:w200
注意は、変分事後分布の潜在変数の次元でも標準ガウス分布にあたる項は自動的にマスクを解除しています。こうすることで、マスクのかかっていない変分事後分布の潜在変数には、まだ違うDisentangled表現を獲得する機会があります。

ここまでで、潜在表現の再利用か、新しい潜在表現を獲得するか決まる潜在マスク(Latent masking)のスコア基準について説明しました。しかし、古いデータセットを忘れてしまっては、いくらマスクをしていても古いDisentangled表現が消えてしまいます。そこで次は、破壊的忘却を防ぐ“dreaming” feedback loopについて説明します。

“dreaming” feedback loop

“dreaming” feedback loop、逐次学習にも利用される技術の一つです。モチベーションは、古いデータセットをずっと保存しておくとメモリを食うため、データを破棄したいわけです。幸いなことにVASEは環境の生成モデルを学習しているので、hallucinating(幻覚:生成サンプル) {\bf x}^ {'} が利用できます。つまり、目的関数に以下のような正則化が加わります。

f:id:masamasa59:20191228161713p:plain:w500
エンコーダーデコーダーそれぞれに対して、新しいデータセットに対しての生成モデルにも過去のサンプルが生成できるような正則化をしています。エンコーダーの方は、Wasserstein 距離、デコーダーは、KL divergenceを使っています。その理由は、分かりませんでした。ちなみに古いモデルのパラメータは、定期的に新しいパラメータに変えながら生成を続けています。 “dreaming” feedback loop の概略図は以下の通りです。
f:id:masamasa59:20191229114522p:plain
“dreaming” feedback loop の概略図
“dreaming” feedback loopを使うことで、破壊的忘却を防ぐことができます。

モデルの全体構造

f:id:masamasa59:20191228161739p:plain:w500
個人的にこれは、まだ一部だと思っています。下記の環境推論ネットワークが抜けていると思います。環境クラス分類の推論ネットワーク付録についていましたが、エンコーダーの最終層に全結合を加え、K次元のソフトマックス関数を通して作られます。この最終層からソフトマックスまでの全結合のNNの学習は以下の式で行われます。 f:id:masamasa59:20191228164718p:plain 一項目が今のデータセットのクラスを推論し、二項目が過去のデータセットを生成したサンプルに対するクラスの推論を促進します。 mは、現状で観測されたクラス数になります。

まとめ

Disentangled 表現と逐次学習で使用される破壊的忘却を防ぐ技術など盛り沢山な内容でした。実験は気が向いたら追記します。予想以上に全体構造が掴みにくい論文で苦労しました。個人的に潜在マスクのとこがまだ疑問が残っていますが、時間が解決してくれると願います。