CV / MLのメモ

論文・勉強の備忘録

Continual Unsupervised Representation Learning

NeuriPS 2019,DeepMindから arXiv

Abstruct

taskやclassが学習の中で連続的に変化していくcontinualな条件において,教師なし表現学習を行う新しい取り組み.ベースはVAE的な生成モデルで,ポイントとしては連続的に変化するとしているtaskやclassを表すcomponentをその生成過程に組み込みこと,compenentを学習の中で動的に追加していくこと,過去のモデルによって生成されるデータを用いてforgetを回避すること. MNIST,Omniglotにおける表現学習で各ポイントの有効性などを示した.

Concept

機械学習ではiidなデータサンプリングからの教師なし表現学習は多く取り組まれているが,タスクがその明示的な境界が与えられずに連続的に変化していく設定での表現学習はデータ効率などの観点ではより有用である.人間は生活の中で教師がない様々なタスクを通して様々な概念を学習している.それらはiidなinputではなく時間的に連続しており,タスクの明確な境界は与えられない.こういった人間の学習方法の着想を得て,Continual Unsupervised Representation Learningという新しい問題に取り組んでいる.

Model

基本的なモデル

次のような生成モデルを考える


y \sim {\rm Cat}(\pi) \\
z \sim \mathcal{N} (\mu_z(y), \sigma^2_z(y)) \\
x \sim {\rm Bernoulli}(\mu_x(z))

生成過程からp(x, y, z)=p(y)p(z|y)p(x|z)となる.ここでカテゴリ分布からサンプルされるyがcompenentと呼ばれ,タスクなどを意味する.zはデータの潜在変数であるが,サンプルされるガウス分布のパラメータはタスクyに依存する.基本的にはVAEの生成過程にyが加わった構成.

この生成モデルの尤度最大化は以下のようにELBOの最大化によって行う.

\begin{align} \log p(x) \geq \mathcal{L} = \mathbb{E}_{q(y,z|x)} \left[ \log p(x,y,z)-\log q(y,z|x) \right] \end{align}

ここまではVAEの潜在変数をy, zに分解したのと同じ.さらに,

\begin{eqnarray} &=& \mathbb{E}_{q(y,z|x)}[\log p(x|y,z)-\log \frac{q(y,z|x)}{p(y,z)}] \\ &=& \mathbb{E}_{q(y,z|x)}[ \log p(x|z)] -\mathbb{E}_{q(y,z|x)}[\log \frac{q(y,z|x)}{p(y,z)}] \end{eqnarray}

第二項に関して

\begin{eqnarray} 第二項 &=& \mathbb{E}_{q(y,z|x)}[\log \frac{q(y|x) \cdot q(z|x,y)}{p(z|y)\cdotp(y)}] \\ &=& \mathbb{E}_{q(y,z|x)}[\log \frac{q(z|x,y)}{p(z|y)} + \log \frac{q(y|x)}{p(y)}] \\ &=& \mathbb{E}_{q(y|x)} \left[\int q(z|x,y) \log \frac{q(z|x,y)}{p(z|y)}dz \right] + \mathbb{E}_{q(y|x)} \left[\mathbb{E}_{q(z|x,y)} [\log \frac{q(y|x)}{p(y)}] \right] \\ &=& \mathbb{E}_{q(y|x)}[{\rm KL}(q(z|x,y)||p(z|y))] + {\rm KL}(q(y|x)||p(y)) \end{eqnarray}

よって

\begin{eqnarray} \mathcal{L} = \mathbb{E}_{q(y|x)q(z|x,y)}[\log p(x|z)]- \mathbb{E}_{q(y|x)}[{\rm KL}(q(z|x,y)||p(z|y))] - {\rm KL}(q(y|x)||p(y)) \\ \mathcal{L} = \mathbb{E}_{q(y|x)}\left[\int q(z|x,y) \log p(x|z)dz - {\rm KL}(q(z|x,y)||p(z|y)) \right] - {\rm KL}(q(y|x)||p(y)) \\ \approx \sum_k \left[q(y=k|x) \left[\log p(x|\tilde{z}^k) - {\rm KL}(q(z|x,y)||p(z|y)) \right] \right] - {\rm KL}(q(y|x)||p(y)) \end{eqnarray}

まで行ける.

ここで, q(z|x,y)部分はサンプリングが必要となるのでreparametrization trickを用いており, \tilde{z}^k \sim q(z|x,y=k)としている.normalなoriginalのVAE風にいうと1項目が再構成項,2,3項目がそれぞれ z xに関する正則化項.

Component-constrained learning

componentが既知の場合は以下の尤度最大化を行う.

\begin{eqnarray} \mathcal{L_{sup}} &= \log p(x |\tilde{z}^{y_{obs}}, y = y_{obs}) - {\rm KL} (q(z|x,y-y_{obs}) || p(z|y=y_{obs})) \\ & + \log q(y=y_{obs}|x) \end{eqnarray}

componentがわかっているので式 (10) のような尤度関数のcomponentによる周辺化をなくし. yに関する正則化項も既知のcomponentを用いた対数尤度としている.

Dynamic expansion

continual learningではcomponentの数が学習の中で増加していき,モデルは学習段階ごとに既出のcomponent数に合わせたものにするのが望ましい,そこで,学習の中で動的にcomponent数を増加させていくDynamic expansionを提案している.Dynamic expantionでは,モデルのELBOに対して閾値を設け閾値を下回るサンプルが一定以上に達した場合に新しいcomponentが出現したとみなしてcomponentを追加していく.新たなcomponentのパラメータは既存の最も確率値が高くなるcomponentのパラメータで初期化し,閾値を下回るサンプルを用いて数iteration学習する.

Combatting forgetting via mixture generative replay

continual learningでは過去の学習サンプルに対してforgetしないことが重要で,従来手法として過去のサンプルで学習して保存された生成モデルから生成されたデータを学習に再利用するDeep Genarative Replay (DGR) がある.

今回は提案するcomponentを含めた生成モデルによるDGRをmixture DGR (MGR) と呼んで利用している.生成モデルの保存はDynamic expansionの直前や決め打ちのiterationスパンで行われる.今回の生成モデルではcomponentの条件付き生成が可能なので,componentを既知として先述のComponent-constrained learningを行うこともできるが,componentを指定せずに式 (10) を最大化する方が良かった.これは,学習の過程でcomponentのアサインのされ方が変化していて,過去のアサインを強制することは悪影響を及ぼすためと考察している.

Evaluation

MNIST,Omniglotで学習の中で出現するクラスを動的に変化させていき,componentのclustering accuracyと学習された生成モデルの潜在空間におけるk-NNのaccuracyで評価している.clustering accuracyは各componentが最も近いクラスに割り当てられたとして,計算する.また,k-NNを用いる潜在空間は各componentの確率や各componentに条件づけられたすべての潜在変数を含む.

基本的にcomponentを増やした方が良い傾向となりパラメータ数とトレードオフの関係にあるが,同一のcomponent数だとdynamic expansionを用いた方が良い結果となる,また,MGRの効果も大きい.

memo

Dynamic expansionがELBOへの閾値処理ベースだったりする点が多少無理矢理感を感じたが,生成過程に明示的にcomponentを含めるよう手を加えた生成モデルを学習させる点は勉強になった.今回の評価ではタスクの遷移というより出現するクラスの遷移を想定しており,またそのためにk-NNでのaccuracyはcomponent横断で良い特徴を取れているかというよりもcomponentの分離ができているかというところに焦点が当たっているようにも思えたので,タスク遷移での評価も気になる.新しくて興味深い問題設定なので今後の研究に期待.

Representation Learning with Contrastive Predictive Coding

Aaron van den Oord, Yazhe Li, and Oriol Vinyals, "Representation Learning with Contrastive Predictive Coding", 2018, arxiv,

はじめに

Deep mindから系列データにおけるdisriminativeな表現学習の研究. 系列データと言うと自己回帰モデル的な表現学習が思い浮かびやすく,今までも取り組まれてきたがなかなかうまくいってなかった. この手法では直接回帰するのではなく,同じ系列に属する要素間の相互情報量の最大化というアプローチをとる.

Idea

基本的な系列予測のアプローチではp(x|c) (x : 現時刻のデータ,c : コンテキスト)をモデリングする. この条件付き分布を生成モデルで直接学習する方法もあるが, xの再構成は高次な情報を捉えるには不要な詳細情報が必要になる(必要以上に難しい).

そこで,以下の現時刻データとコンテキスト間の相互情報量を最大化の方針をとる.

\begin{align} I(x,c)=\sum_{x,c} p(x,c)\log\frac{p(x|c)}{p(x)} \end{align}

具体的にはxcの埋め込み関数g(\cdot)を考え,xcの埋め込みベクトル間の相互情報量を最大化するようなg(\cdot)を求める.すると,その関数は各時刻間の依存を大きくする埋め込みを学習することになり,直接的な系列予測をせずに高次な情報の抽出を強いられる.

Methods

準備

g_{enc}(\cdot)は時刻tの観測値x_tz_t=g_{enc}(x_t)に埋め込む関数. g_{ar} ( \cdot )は時刻tまでの埋め込みベクトルz_{\leq t}をさらにc_t=g_{ar}(z_{\leq t})に埋め込む関数.これは入力が可変長になりうるのでLSTMなどが用いられている. さらに次のような関数も用意する.

\begin{align} f_{k}(x_{t+k},c_t)=\exp(z_{t+k}^TW_kc_t) \end{align}

ここでは,\expの中身は線形変換になっているが.別に非線形変換でもOK.

相互情報量最大化

f:id:tomoyukun:20181015024457p:plain Noise Contrastive Estimation (NCE)を用いて相互情報量を最大化していく. 条件付き分布p(x_{t+k}|c_t)に基づくpositive sampleと周辺分布p(x_{t+k})からサンプリングされるN-1個のnegative sampleの計N個のサンプル集合X=\{x_1,...,x_N\}を用意する. 以下の損失関数を定義する.

\begin{align} \mathcal L_N = - \mathbb E_X\biggl[ \log \frac{f_k(x_{t+k}, c_t)}{\sum_{x_j \in X}f_k(x_j, c_t)} \biggr] \end{align}

この損失関数をend-to-endで最小化することによって,g_{enc}(\cdot)g_{ar}(\cdot)x_{k+t}c_{t}相互情報量を最大化する埋め込み関数となる ①. また,f_k(\cdot)は以下の密度比を推定する(正規化はされていない) 関数になる ②.

\begin{align} f_k(x_{t+k}, c_t) \propto \frac{p(x_{t+k}|c_{t})}{p(x_{t+k})} \end{align}

②の理由

式(3)は \begin{align} p_{\theta}(d=i|X,c_t) = \frac{f_k(x_{i}, c_t)}{\sum_{x_j \in X}f_k(x_j, c_t)} \end{align} のようにf_{k}(\cdot)を用いてp(d=i|X,c_t)を推定しようとしたときの交差エントロピーとみなすことができる. ここで,d=iXのうちi番目のサンプルがpositiveであることを示す.すなわち,式(4)を最大化するp_{\theta}(d=i|X,c_t)は真の分布p(d=i|X,c_t)となった時である.これは以下のように式変形できる.

\begin{eqnarray} p(d=i|X,c_t) &=& \frac{p(d=i|X,c_t)}{\sum_{j}p(d=j|X,c_t)} \\ &=& \frac{p(d=i|X,c_t) \times p(X,c_t)}{\sum_{j}p(d=j|X,c_t) \times p(X,c_t)} \\ &=& \frac{p(d=i,X,c_t)}{\sum_{j}p(d=j,X,c_t))} \\ &=& \frac{p(X|d=i,c_t) \times p(d=i,c_t)}{\sum_{j}p(X|d=j,c_t) \times p(d=j,c_t)} \\ &=& \frac{p(X|d=i,c_t)}{\sum_{j}p(X|d=j,c_t)} \\ &=& \frac{p(x_1) \times p(x_2) \times ... \times p(x_i|c_t) \times ... \times p(x_N)}{\sum_{j} (p(x_1) \times p(x_2) \times ... \times p(x_j|c_t) \times ... \times p(x_N))} \\ &=& \frac{p(x_i|c_t) \prod_{l \neq i} p(x_l)} {\sum_{j} p(x_j|c_t) \prod_{l \neq j} p(x_l)} \\ &=& \frac{\frac{p(x_i|c_t)}{p(x_i)}} {\sum_{j} \frac{p(x_j|c_t)}{p(x_j)}} \end{eqnarray}

(9) => (10) : p(d=j,c_t)jによらず一定
(12) => (13) : 両辺 \prod_{l} p(x_l)で割る
これから,(5)と照らし合わせると最適なp_{\theta}(d=i|X,c_t)となったとき,(4)が成り立つ.

①の理由

f_k(\cdot)が最適なとき(f_k(x_{t+k},c_t) \propto \frac{p(x_{t+k}|c_{t})}{p(x_{t+k})})の\mathcal L_N\mathcal L_N^{opt}とすると,

\begin{eqnarray} \mathcal L_N^{opt} &=& - \mathbb E_X \log \Biggl[ \frac{\frac{p(x_{t+k}|c_t)}{p(x_{t+k})}}
{\frac{p(x_{t+k}|c_t)}{p(x_{t+k})} + \sum_{x_j \in X_{neg}} \frac{p(x_j|c_t)}{p(x_j)}} \Biggr] \\ &=& \mathbb E_X \log \Biggl[ 1 + \frac{p(x_{t+k})} {p(x_{t+k}|c_t)} (N-1) \sum_{x_j \in X_{neg}} \frac{p(x_j|c_t)}{p(x_j)} \Biggr] \\ &\approx& \mathbb E_X \log \Biggl[ 1 + \frac{p(x_{t+k})} {p(x_{t+k}|c_t)} (N-1) \mathbb E_{x\sim p(x)} \biggl[\frac{p(x|c_t)}{p(x)}\biggr] \Biggr] \\ &=& \mathbb E_X \log \Biggl[ 1 + \frac{p(x_{t+k})} {p(x_{t+k}|c_t)} (N-1) \Biggr] \\ &\geq& \mathbb E_X \log \Biggl[\frac{p(x_{t+k})} {p(x_{t+k}|c_t)} N \Biggr] \\ &=& -I(x_{t+k},c_t) + \log(N)\\ \end{eqnarray}

(15) => (16) : negative sampleはp(x)からサンプリングされている.Nが大きくなるとここの近似の精度は上がる.
(16) => (17) :
\begin{eqnarray} \mathbb E_{x\sim p(x)} \biggl[\frac{p(x|c_t)}{p(x_j)}\biggr] &=& \int p(x) \frac{p(x|c_t)}{p(x)} dx \\ &=& \int p(x|c_t) dx = 1 \end{eqnarray}

(17) => (18) :  0 \lt a \leq 1 k > 0のとき, \begin{eqnarray} \log(1+ak) \geq \log(a(k+1)) \end{eqnarray} これはkが大きいときに等号が成り立つ.

よって基本的にサンプル数Nが大きくなればこの下限はタイトになる.
書き換えると,

\begin{eqnarray} I(x_{t+k},c_t) \geq \log(N) - \mathcal L_N^{opt} \end{eqnarray}

よって,Nを大きくして \mathcal L_N^{opt}を最小化することで相互情報量の下限の最大化をすることができる. 

Adversarial Learning のようなminmax問題にもならずに,end-to-endで一つの損失関数を最小化するだけで相互情報量が最大化される.

画像に適用する場合

画像の場合は,図のように特徴マップの上から下の方向の系列情報と捉える. 各画像パッチを埋め込む g_{enc}(\cdot)はResNetを使用, g_{ar}(\cdot)はPixelCNNの自己回帰モデルを用いて特徴マップ上の5行先までを推定対象にしているらしい(あまり詳しく書かれていなかった). f:id:tomoyukun:20181015024452p:plain

系列情報であればどんな情報にも適用可能なので,実験では画像以外にも音声,自然言語などで評価している.

Results

{ImageNetで教師なし表現学習 => 中間特徴を入力に線形識別器を学習}で実験内では最も良い精度. しかし,比較手法は少ない(特に,Unsupervised Representation Learning by Predicting Image Rotationsなどがない). f:id:tomoyukun:20181015024957p:plain:w600

Memo

系列予測は一度は考えるけど,実際は表現学習としてはうまくいかないものだったが,相互情報量の最大化として扱うことでついに表現学習として効果を発揮したことに感動した. 現状は(少なくとも画像の場合は)定義されたある方向にしたがって予測を行っているが,表現学習の意味ではそうである必要はない(bi-directionalでも良い)はずなので今後続きに期待. 相互情報量の最大化を簡単な実装と学習で行うことができるのも非常に有用.最近出てきている他の最大化手法MINE: Mutual Information Neural EstimationLearning deep representations by mutual information estimation and maximizationと比較して,使い勝手がどうなのかも気になる.

PERMUTATION INVARIANT TRAINING OF DEEP MODELS FOR SPEAKER-INDEPENDENT MULTI-TALKER SPEECH SEPARATION (ICASSP2017)

Dong Yu, Morten Kolbæk, Zheng-Hua Tan, and Jesper Jensen, "PERMUTATION INVARIANT TRAINING OF DEEP MODELS FOR SPEAKER-INDEPENDENT MULTI-TALKER SPEECH SEPARATION", ICASSP2018, arxiv,

はじめに

研究の関係で音声について調査. この研究はDeepで音声分離をするにあたって各分離要素にラベルがつけられていない場合に生じる,学習時の割り当て問題の解決を行っている.

Approach

今までの音声分離のほとんどは,構成音声に決められたクラス数のラベルが与えられていて,各クラスに対する回帰問題として取り組まれていた.今回はそれらラベルが存在しない条件で分離を行うことを考えている. ラベルなし分離では,学習時の教師の割り当て問題が生じる. NNで分離を行うとき,複数チャネルに分離された各音声(もしくはマスク)が出力されるが,分離できたとしてどのチャネルにどの音声を出力すべきか(permutation)は自明ではない. 分離がうまくできていても,仮に用意された教師のpermutationと異なるpermutationで出力してしまった場合はロスは大きくなってしまう.これは「分離」を目的にするにあたっては妥当な学習ではなく,特に教師のpermutationに一貫性がない場合は学習がうまく進まないことが考えられる.

この問題に対して,全通りの教師割り当ての中で最もロスが小さくなる割り当てを実際の教師として使用する学習方法(PIT)で解決している. f:id:tomoyukun:20180819161109p:plain

Results

学習時の挙動.PIT学習を行うと学習が進む.逆に用いないと,前述の話にもあったように教師の一貫性の欠如から学習がほとんど進んでいない. f:id:tomoyukun:20180819161143p:plain

分離の際,固定windowに区切って入出力をしていくため,一つの音声データ内で同じ音声が必ずしも同じチャネルに出力されるとは限らない.したがって,テスト時にwindow間で理想的な音声追跡を行う場合(opt. assign)と,一切追跡を行わない場合(def. assign)の両方で評価している. CCがclosedな,OCはopenな設定.すべてsignal-to-distortion ratio (SDR)を指標に用いている. f:id:tomoyukun:20180819161439p:plain

Memo

正直,ドメイン知識不足のせいで実験結果の傾向(windowサイズと精度の関係)が直感と異なっている部分があった.

非常にシンプルかつ,各分離要素のラベルなしで分離ができるので手動での混合を行えば教師なしで学習することができるのは魅力的.

PITによる学習は,ロスの大きさを元にPseudo labelを与えている感覚にも近いと考えた. PITによって学習されたNNは最終的には何らかの音声の傾向を元にチャネルを割り当てていると考えられる(でないと過学習している)が,実際に分離された音をチャネルごとに聞いて確かめてみたい.

Deep Clustering for Unsupervised Learning of Visual Features (ECCV2018)

Mathilde Caron, Piotr Bojanowski, Armand Joulin, and Matthijs Douze, "Deep Clustering for Unsupervised Learning of Visual Features", ECCV2018, arxiv,

はじめに

最近流行ってきているNNの教師なし表現学習手法. シンプルな手法かつ従来の教師なし表現学習と比較して圧倒的な効果を示したため,ECCVの論文の中でもいち早く話題に上がってた.

Approach

基本的には以下の手順を繰り返していく.
CNNに画像サンプルを入力→出力ベクトルをk-meansでクラスタリング→各サンプルを所属するクラスタでpseudo labeling→得られたpseudo labelで識別タスクをCNNで学習→最初に戻る
この時,CNNはランダム初期化されている点が気になるところ.すなわち,ランダム初期化されたCNNによって得られる中間特徴は入力の特徴を一切捉えない意味のない出力となるように思われるため,それをクラスタリングして得られるpseudo labelも意味のないものになりそう.しかし,実際はランダム初期化CNNから得られる特徴量を入力に,MLPを学習させてもImageNetで 12%(\ggchance rate = 0.1%) 出る研究結果がある.

これはconvolution演算自体が画像入力に対して,非常に有効なpriorを持っているためだと論文中で言われている. 最終convolution層の出力を用いているが,すべての処理はそれに対してPCAで256次元に圧縮されている.また.入力画像はなぜかSobel filteringされている.

f:id:tomoyukun:20180810230135p:plain

Results

ベンチマークである"ImageNetで教師なし学習"→"Pascal VOCでfinetuning"で圧倒的な精度. f:id:tomoyukun:20180811000853p:plain

ImageNetのクラス数1000に対してクラスタ数は10000が最も良くなった. iterationを詰むにつれてImageNetのクラス割り当てと提案手法のクラスタ割り当ての正規化相互情報量が大きくなっていくのが面白い. また初期iterarionではiteraritaion間の正規化相互情報量が相対的に小さい(割り当て方が大きく変化している)のに対して,iterarionが進むと大きくなっていく傾向がある. f:id:tomoyukun:20180811001229p:plain

Memo

論文を読んだだけでは不思議に思ったところ.

  • なぜ前iterarionよりもsemanticなpseudo labelが与えられるか

CNNはpseudo labelを用いて学習するとき,同じpseudo labelに属するサンプルは(特に識別器が線形だった場合)特徴空間上でユークリッド距離が近くなるように学習されると考えられる. すると,次iterationのk-meansクラスタリングでも前iterationと同じクラスタリングとかなり近いクラスタ割り当てになる傾向があると思われる.これが繰り返されても.感覚的にはiterationが進むにつれて最初の各セントロイドにサンプルが集まっていく更新がされるだけのように思えてしまう.

これは以下の要素によって解決されていると考えた.

  • k-meansとSGDの不安定性

k-meansは最初にランダムなセントロイドを撒いて,ユークリッド距離をベースにセントロイドの位置を更新していくが,初期のセントロイドの位置にクラスタリング結果が大きく依存する傾向がある. ランダム性の中に高頻度でまとまるクラスタとそうでないクラスタがあるとすると,前者は(SGD学習で得られる)様々なCNNのパラメータとk-meansの初期seedへの依存が少ない,汎用的なクラスタであると考えられ,後者は逆であると考えられる. ここでいう汎用的なクラスタが,意味のあるラベルだとすると,それが高頻度にpseudo labelingされるため,CNNにとっては良いことが起きそう. このように選択的に汎用クラスタが残っていくことが,実験内のiteration間の相互情報量が徐々に大きくなっていくのとも結びつくと考えた. 汎用的なクラスタはどのように出現するのかについてはランダム性によってたまたま生じるのみならず,convolution演算のpriorがうまく発生させそうだと無理やり納得した

学習時の特徴分布の動きを見てみたい.