機械学習とかコンピュータビジョンとか

CVやMLに関する勉強のメモ書き。

Clustering with Deep Learning: Taxonomy and New Methodsを読んだのでメモ

はじめに

Clustering with Deep Learning: Taxonomy and New Methodsを読んだのでメモ.

気持ち

DNNベースのクラスタリング手法について体系的にまとめて定式化することで,システマティックに新しいクラスタリングの方法を作れる様にしようというもの.

モデル構造

多くのDNNのクラスタリング手法は入力データクラスタリングしやすい表現(潜在表現)に落とし込むための"main branch"が存在する.そのためのモデルには従来以下の5つのモデルが使われる.

  • Multilayer Perceptron (MLP)

  • Convolutional Neural Network (CNN)

  • Deep Belief Network (DBN)

  • Generative Adversarial Network (GAN)

  • Variational Autoencoder (VAE)

各々の説明は割愛.

潜在表現

クラスタリングしやすい表現を得る際の方法としてmain branchの最後の表現のみを得る場合と複数の層から得る場合の2種類に分けられる.

  • One layer

 利点としては次元が低いこと.主に最終層の表現が使われる.

  • Several layers

 利点としては表現がリッチであること.

Non-clustering loss

Non-clustering lossはクラスタリングとは関係のない損失項で正則化項の様な役割として用いられる.以下の選択肢がある.

  • No non-clustering loss

Non-clustering lossを使わない(正則化なし).局所解にハマりやすいという点が指摘されてるがたまにいい結果をもたらす場合もある.

  • Autoencoder reconstruction loss

Decoderを使った再構成誤差.入力と再構成されたデータ間の距離を損失項とし一般的には平均2乗誤差.再構成に必要なデータの重要な情報を残した潜在表現を得られることが保証される.

  • Self-Augmentation Loss

元のデータとaugmentationされたデータ間の表現の類似性を保証する.次のような関数で表される.

\displaystyle
L=-\frac{1}{N}\sum_Ns(f(x),f(T(x)))

xが元のデータでTがaugmentationの関数.f(x)は潜在表現への変換でsは類似度でcross-entropy等.

  • Other tasks

学習データに関する追加情報の項.クラスや属性ラベルが使える場合など.

Clustering loss

クラスタリング手法に依存した損失項.一番重要な部分で以下のような様々な方法が存在.

  • No clustering loss

Non-clustering lossのみを使う方法.次元圧縮等の目的で使われる.基本的にclustering lossがあった方が良い結果となる.

  • k-Means loss

K-Meansしやすい表現を獲得するための損失.データ点がクラスタ中心の周りに分布するような表現を得る方法で次のような損失関数で定義.

\displaystyle
L(\theta)=\sum_{i=1}^N\sum_{k=1}^Ks_{ik}| z_i-\mu_k|^2

z_iはデータ点の潜在表現で\mu_kクラスタ中心.s_{ik}は所属クラスタを表すboolean(普通はone-hot?).

  • Cluster assignment hardening

データ点をクラスタにソフトに割り当てる損失.1例として次のstudentのt分布を元にした関数を使ってソフトな割り当てを行う.

\displaystyle
q_{ij}=\frac{(1+| z_i+\mu_j|^2/\nu)^{-\frac{\nu+1}{2}}}{\sum_{j'}(1+| z_i+\mu_{j'}|^2/\nu)^{-\frac{\nu+1}{2}}}

\nuはハイパーパラメータの定数.データ点の潜在表現とクラスタ中心間の正規化された類似度となっていてクラスタの所属確率としてみなせる.Cluster assignment harging lossは上記の確率が一つのクラスタのみに大きくなるように強いる損失で,そのために次の補助分布を導入する.

\displaystyle
p_{ij}=\frac{p^2_{ij}/\sum_iq_{ij}}{\sum_{j'}(q_{ij'}^2/\sum_iq_{ij'})}

この補助分布と正規化された類似度によって表現される分布間のKLダイバージェンスを損失とする.

\displaystyle
L=\sum_i\sum_jp_{ij}\log\frac{p_{ij}}{q_{ij}}

  • Balanced assignment loss

他の損失と同時に用いられ,クラスタ間の大きさのバランスをとる.各クラスタの大きさ(所属するデータ点の量)はある程度均一であるという仮定から成り立ち,次のKLダイバージェンスとして表現できる.

\displaystyle
L_{ba}=D_{KL}(G| U)

Uは一様分布でGクラスタの大きさに関する分布で次のように定義される.

\displaystyle
g_k=P(y=k)=\frac{1}{N}\sum_iq_{ik}

当然データに偏りがある場合は成り立たず,クラスタサイズに何かしらの事前知識がある場合には一様分布を別な分布に置き換えることもできる.

  • Locality-preserving loss

元の表現での位置関係のようなものを保存するように強いる損失.データ点x_ik近傍集合に対し近傍のデータ点の類似度s(x_i,x_j)を使って次のような損失関数を定義する.

\displaystyle
L_{lp}=\sum_i\sum_{j\in N_k(i)}s(x_i,x_j)| z_i-z_j|^2

  • Group sparsity loss

隠れユニットがクラスタG個に分けられるという仮定を置いたもので,データ点x_iの潜在表現は{\phi^g(x_i)}_{g=1}^GのようにG個の表現として与えられ,group sparsity lossは次のような損失関数として定義される.

\displaystyle
L_{gs}=\sum_{i=1}^N\sum_{g=1}^G\lambda_g|\phi^g(x_i)|

{\lambda_g}_{g=1}^G\lambda_g=\lambda\sqrt{n_g}で定義される重み.ただしn_gはグループサイズ.

  • Cluster classification loss

後述のcluster updateの間に得られるクラスタの割り当て結果をクラスラベルとしてclassification lossに使うというもの.

  • Agglomerative clustering loss

類似度が最も高いクラスタをstopping criterionが満たされるまで統合していき,統合されたクラスタ間の類似度を最適化するような手法.クラスタリングに適した表現が得られる.

損失の組み合わせ方

Clustering lossとnon-clustering lossは次のように組み合わされる.

\displaystyle
L(\theta)=\alpha L_c(\theta)+(1-\alpha)L_n(\theta)

L_c(\theta)はclustering lossでL_n(\theta)はnon-clustering loss.\alpha\in[0;1]は二つの関数のバランスをとるハイパーパラメータ.\alphaの決め方には次のような選択肢がある.

  • Pre-training, fine-tuning

まず\alpha=0として学習した後,\alpha=1とする方法.場合によっては結果を悪くすることもある.

  • Joint training

0\lt\alpha\lt 1として学習する方法.

  • Variable schedule

\alphaを変数と見て,学習中に変化させていく方法.例えば\alphaを初期では小さくして徐々に大きくしていくなど.

基本的に\alpha=1\alpha=0も欠点がある.

クラスタの更新

大雑把にクラスタリングは階層的なものとクラスタ中心に基づく手法に分けられる.学習段階でクラスタの割り当て結果が(クラスタ中心に基づく方法においてはクラスタ中心も)更新されていく.その更新の仕方は一般的に次の二つどちらか.

クラスタの割り当て結果は確率として定義され,ネットワークのパラメータとして定義され逆伝播によって最適化される.

クラスタの割り当て結果は決定的でネットワークのパラメータ更新とは別に更新される.この場合にはさらに次の二つの更新方法がある.

・Number of iterations

クラスタの割り当て結果が固定されるまで繰り返す方法

・Frequency of updates

ネットワークがP回更新されるたびに割り当て結果を更新する方法

学習後

学習終了後,仮に学習過程でクラスタ結果が得られたとしていても,次の理由から学習された特徴を用いて再びクラスタリングし直すのが一般的.

  • Clustering a similar dataset

獲得された潜在表現の一般生を評価するため別なデータで検証すべきというもの.

  • Obtaining better results

ある特定の状況下においては学習過程で得られたクラスタ結果よりも良い結果が得られる場合があるというもの.

関連研究

以下に載せた論文の表1に従来手法が論文の分類に合わせてまとまっている. f:id:peluigi:20180918190536p:plain

New method

手法を項目ごとに分けて,従来手法を表1のようにまとめることで簡単に分析ができて,手法の組み合わせで課題に適した新しいアルゴリズムを組むことが可能というのが主張.実際そのようなアプローチで組み立てた手法のクラスタリング結果が図3,4に記述されていて良く機能しているように見える.

まとめ

サーベイでも手法提案でもない新しい論文の書き方を見た気がする.読みやすく綺麗にまとまったいい論文だった.