自己教師あり学習 - ClusterFit と PIRL

$$\gdef \sam #1 {\mathrm{softargmax}(#1)}$$ $$\gdef \vect #1 {\boldsymbol{#1}} $$ $$\gdef \matr #1 {\boldsymbol{#1}} $$ $$\gdef \E {\mathbb{E}} $$ $$\gdef \V {\mathbb{V}} $$ $$\gdef \R {\mathbb{R}} $$ $$\gdef \N {\mathbb{N}} $$ $$\gdef \relu #1 {\texttt{ReLU}(#1)} $$ $$\gdef \D {\,\mathrm{d}} $$ $$\gdef \deriv #1 #2 {\frac{\D #1}{\D #2}}$$ $$\gdef \pd #1 #2 {\frac{\partial #1}{\partial #2}}$$ $$\gdef \set #1 {\left\lbrace #1 \right\rbrace} $$ % My colours $$\gdef \aqua #1 {\textcolor{8dd3c7}{#1}} $$ $$\gdef \yellow #1 {\textcolor{ffffb3}{#1}} $$ $$\gdef \lavender #1 {\textcolor{bebada}{#1}} $$ $$\gdef \red #1 {\textcolor{fb8072}{#1}} $$ $$\gdef \blue #1 {\textcolor{80b1d3}{#1}} $$ $$\gdef \orange #1 {\textcolor{fdb462}{#1}} $$ $$\gdef \green #1 {\textcolor{b3de69}{#1}} $$ $$\gdef \pink #1 {\textcolor{fccde5}{#1}} $$ $$\gdef \vgrey #1 {\textcolor{d9d9d9}{#1}} $$ $$\gdef \violet #1 {\textcolor{bc80bd}{#1}} $$ $$\gdef \unka #1 {\textcolor{ccebc5}{#1}} $$ $$\gdef \unkb #1 {\textcolor{ffed6f}{#1}} $$ % Vectors $$\gdef \vx {\pink{\vect{x }}} $$ $$\gdef \vy {\blue{\vect{y }}} $$ $$\gdef \vb {\vect{b}} $$ $$\gdef \vz {\orange{\vect{z }}} $$ $$\gdef \vtheta {\vect{\theta }} $$ $$\gdef \vh {\green{\vect{h }}} $$ $$\gdef \vq {\aqua{\vect{q }}} $$ $$\gdef \vk {\yellow{\vect{k }}} $$ $$\gdef \vv {\green{\vect{v }}} $$ $$\gdef \vytilde {\violet{\tilde{\vect{y}}}} $$ $$\gdef \vyhat {\red{\hat{\vect{y}}}} $$ $$\gdef \vycheck {\blue{\check{\vect{y}}}} $$ $$\gdef \vzcheck {\blue{\check{\vect{z}}}} $$ $$\gdef \vztilde {\green{\tilde{\vect{z}}}} $$ $$\gdef \vmu {\green{\vect{\mu}}} $$ $$\gdef \vu {\orange{\vect{u}}} $$ % Matrices $$\gdef \mW {\matr{W}} $$ $$\gdef \mA {\matr{A}} $$ $$\gdef \mX {\pink{\matr{X}}} $$ $$\gdef \mY {\blue{\matr{Y}}} $$ $$\gdef \mQ {\aqua{\matr{Q }}} $$ $$\gdef \mK {\yellow{\matr{K }}} $$ $$\gdef \mV {\lavender{\matr{V }}} $$ $$\gdef \mH {\green{\matr{H }}} $$ % Coloured math $$\gdef \cx {\pink{x}} $$ $$\gdef \ctheta {\orange{\theta}} $$ $$\gdef \cz {\orange{z}} $$ $$\gdef \Enc {\lavender{\text{Enc}}} $$ $$\gdef \Dec {\aqua{\text{Dec}}}$$
🎙️ Ishan Misra

「pretext」tasksに欠けているものは何か? 汎化への希望

Pretext taskは一般的に、自己教師あり学習下で行われる事前学習のステップと、分類や検出などの転移先のタスクから構成されています。私たちは、事前学習のタスクが転移先のタスクに「沿っている」ことを期待しています。ですので、pretext taskを設計し、それを本当にうまく実装するための、多くの研究が行われています。

しかし、なぜそれ自体では意味がないタスクを実行すると良い特徴が得られるのかはとても非自明です。例えば、ジグゾーパズルのようなものを解きながら、なぜ「意味」を学ぶことを期待できるのか、画像からハッシュタグを予測することが、転移先のタスクの分類器の学習に役立つと期待されるのはなぜか、といった疑問が残ります。どのようにして転移先のタスクに沿った良い事前学習のタスクを設計すればよいのでしょうか?

この問題を評価する一つの方法は、各層の表現を見ることです(図1参照)。もし、最後の層の表現が転移先のタスクとうまく一致していなければ、事前学習のタスクは正しいタスクではないのかもしれません。


図1: 各層の特徴表現

図2は、VOC07データに対する分類を行う線形分類器について、ジグソータスクで事前学習を用いて各層でのmAPをプロットしたものです。最後の層がジグソー問題に非常に特化していることがわかります。


図2: 各層に基づくジグソータスクの性能

事前学習された特徴から何を得たいのか?

  • 画像が互いにどのように関係しているのかの表現

    • ClusterFit:視覚表現についての汎化能力の向上
  • 「nuisance factor」(厄介な要素)(関心がないが結果に影響を及ぼしてしまうような要因のこと)に対して頑健であること :不変性

    例: オブジェクトの正確な位置、光源の正確な位置、正確な色

    • PIRL: Pre-textに対して不変な表現の自己教師あり学習

上記の特性を達成するための2つの方法は、クラスタリングコントラスティブ学習です。これらの方法は、これまでに設計されたどのようなpretext taskよりもはるかに良い性能を発揮するようになってきました。 クラスタリングに属する方法の一つは ClusterFit であり、もう一つの不変性に属する方法は PIRL です。

ClusterFit: Improving Generalization of Visual Representations

特徴空間のクラスタリングは、画像が互いにどのような関連性を持っているかを見る一つの方法です。

方法

ClusterFitは2つのステップからなります。 1つはクラスターステップ、もう1つは予測ステップです。

クラスター:特徴量クラスタリング

事前学習されたネットワークを用いて、画像の集合から特徴抽出をします。ネットワークはどのような種類の学習済みネットワークであっても構いません。そして、これらの特徴量に対してK平均クラスタリングを実行し、各画像が属したクラスターがその画像のラベルとなります。


図3: クラスターステップ

フィット: クラスターの割り当てを予測する

このステップでは、画像の疑似ラベルを予測するためのネットワークを一から訓練します。これらの疑似ラベルは、最初のステップでクラスタリングによって得られたものです。


図4: 予測ステップ

図5の最初の行に示すように、標準的な事前学習と転移先タスクでは、最初にネットワークを事前学習してから、下流のタスクで評価をします。ClusterFitは、データセット $D_{cf}$ に対して事前学習を行うことで、学習済みネットワーク $N_{pre}$ を得ます。事前学習したネットワーク $N_{pre}$ を用いて、データセット $D_{cf}$ からクラスタを生成します。そして、このデータに対して新しいネットワーク $N_{cf}$ をゼロから学習します。最後に、下流のすべてのタスクに $N_{cf}$ を使用します。


図5: 「標準的な」 事前学習 + 転移学習 vs「標準的な」 事前学習 + ClusterFit

なぜClusterFitがうまくいくのか

なぜClusterFitが機能するかというと、クラスタリングのステップで本質的な情報だけが捉えれることでアーティファクトが捨てられ、第二のネットワークがより一般的なものを学習するようになるからです。

この点を理解するために、かなり簡単な実験を行います。 ImageNet-1Kにラベルノイズを追加し、このデータセットに基づいてネットワークを学習させます。そして、このネットワークの特徴表現を ImageNet-9Kを用いた下流のタスクで評価します。図 6 に示すように、ImageNet-1K にラベルノイズを付加し、転移先である ImageNet-9K 分類タスクで性能を評価しています。


図6: 対照実験

ピンクの線は事前学習されたネットワークの性能を示していますが、ラベルノイズの量が増えると性能が低下していることがわかります。青色の線はモデル蒸留を表していて、これは初期ネットワークを使用してラベルを生成しています。蒸留は概して、事前学習済みネットワークよりも優れた性能を発揮しています。 緑の線、ClusterFitは、これらの方法のいずれよりも一貫して優れています。この結果は、私たちの仮説を検証しています。

  • 質問: なぜ蒸留法と比較するのですか。蒸留法とClusterFitの違いは何ですか? モデル蒸留では、事前に学習したネットワークを用いて、よりソフトな方法でネットワークが予測したラベルを使うことで、画像のラベルを生成します。例えば、すべてのクラスの分布を使って2番目のネットワークを学習します。ソフトな分布は、最初に得たクラスをの確率に大きな重み付けをするのに役立ちます。ClusterFitでは、ラベル空間は気にしません。

性能

この手法を自己教師あり学習に適用します。ここでは、事前学習タスクとしてJigsawを用いることで、ClusterFitで用いる学習済みネットワーク $N_{pre}$ を得ます。図7から、他の自己教師あり学習法と比較して、様々なデータセットにおいて転移先での性能が驚くほど向上していることがわかります。


図7: 異なるデータセットに対する転移先での性能

ClusterFitは、事前学習済みのネットワークであれば、どのようなものにも使えます。ClusterFitを用いることで追加のデータやラベル、アーキテクチャの変更なしに得られる改善は、図8に見ることができます。このように、ある意味では、ClusterFitは自己教師ありのfine-tuningのステップであり、表現の質を向上させると考えることができます。


図8: 追加のデータ、ラベル、アーキテクチャの変更なしに得られる改善

Self-supervised Learning of Pretext Invariant Representations (PIRL)

コントラスティブ学習

コントラスティブ学習は、基本的には、関連性のある点を組み合わせたり、まとめたりして、関連性のない点を押し除けるような特徴空間を学習しようとする一般的なフレームワークです。


図9: 関連した画像と関連していない画像のグループ

この場合、青い箱、緑の箱、紫の箱は、それぞれが、互いに関連している点のまとまりだと考えてください。


図10: コントラスティブ学習と損失関数

これらのデータ点のそれぞれの特徴は、Siameseネットワークと呼ばれる共有ネットワークを介して抽出され、これらのデータ点のそれぞれについての画像特徴量が得られます。次に、例えば青い点と緑の点の間の距離とは対照的に、青い点の間の距離を最小にするためにコントラスト損失関数を用います。あるいは、基本的には、青い点の間の距離は、青い点と緑の点との間の距離、あるいは青い点と紫の点との間の距離よりも小さくなければなりません。つまり、関連するサンプルからの埋め込み空間は、関連しないサンプルからの埋め込み空間よりもはるかに近くなければならないということです。これがコントラスティブ学習の一般的な考え方で、ご存知の通りYannはこの方法を最初に提案した先生の一人です。現在、コントラスティブ学習は自己教師あり学習で再度注目され初めています。実際に自己教師あり学習の最先端の手法の多くは、このコントラスティブ学習に基づいています。

どのようにして関連しているかいないかを決めるのか?

何が関連していて何が関連していないかをどのように定義するかというのが主な問題です。教師あり学習の場合、犬の画像はすべて関連性のある画像であり、犬ではない画像は基本的に関連性のない画像です。しかし、この自己教師あり学習の場合、関連性のあるなしをどのように定義するかはあまり明確ではありません。もう一つ、pretext taskのようなものとの大きな違いは、コントラスティブ学習では実際に一度にたくさんのデータを推論するということです。 損失関数を見ると、それは常に複数の画像を含んでいます。1列目は基本的に青と緑の画像を含み、2列目は青と紫の画像を含みます。しかし、ジグソーや回転予測のようなタスクでは、常に1つの画像を独立して推論していることになります。これがコントラスティブ学習とのもう一つの違いで、コントラスティブ学習は一度に複数のデータ点について推論します。

このように、コントラスティブ学習では、複数のデータ点について一度に推論を行うことができます。動画の中で近くにあるフレームは関連性があり、別の動画からのフレームや時間的に離れたフレームは関連性がありません。これがこの分野の多くの自己教師あり学習法の基礎となっています。この方法はコントラスト予測符号化(CPC)と呼ばれるものですが、これは信号が逐次的であるという性質に依存しています。これを利用して、基本的にはかなり多くの作業が行われています:音声領域、動画、テキスト、特定の画像などです。最近では、私たちは動画と音声の問題にも取り組んでいます。基本的には、動画とそれに対応する音声は関連するサンプルであり、別の動画の動画と音声は基本的に無関係なサンプルです。

オブジェクトの追跡


図11: オブジェクトの追跡

自己教師あり学習のような初期の研究のいくつかは、このコントラスティブ学習法を使っていて、関連するデータを非常に興味深く定義しています。トラッカーに追跡されたオブジェクトを動画上で動かすと、移動するパッチが得られますが、この時、トラッカーに追跡されたパッチは元のパッチに関連すると言います。一方、別の動画からのパッチは関連性のあるパッチではありません。つまり、基本的には関連するサンプルと関連しないサンプルが出てきます。図11(c)では、この距離のようなものの表記があります。このネットワークが学習しようとしているのは、基本的には、同じ動画から来たパッチは関連していて、異なる動画から来たパッチは関連していないということです。何らかの方法で、オブジェクトの異なる姿勢を自動的に学習します。これは、様々な角度から見たサイクルや、犬の様々な姿勢をグループ分けしようとします。

一つの画像における、近くのパッチと離れているパッチ


図12: 一つの画像の近くのパッチと離れているパッチ

一般的に、画像について言えば、近くの画像パッチと遠くの画像パッチを比較することが多く、CPC v1やCPC v2のほとんどの手法は、画像のこの特性を利用しています。つまり、近い画像パッチはポジティブ(正例)と呼ばれ、離れた画像パッチはネガティブ(負例)と呼ばれ、このポジティブとネガティブの定義を使ってコントラスト損失を最小化することが目的となります。

ある画像のパッチと別の画像のパッチ


図13: ある画像のパッチと別の画像のパッチ

これを行うより一般的な、または実行可能な方法は、ある画像から来るパッチを見て、別の画像から来るパッチとそれらを対比させることです。これは、インスタンス識別、MoCo、PIRL、SimCLRのような多くの一般的な方法の基礎を成しています。基本的には、画像に示されているような考え方です。もっと詳しく説明すると、これらの手法では、画像から完全にランダムなパッチを抽出します。これらのパッチは重なり合っていたり、実際にはお互いの中に含まれていたり、完全にバラバラになっていたりします。この場合、例えば、色をごちゃ混ぜにしたり色を除去したりすることが考えられます。そして、この2つのパッチを正例として定義して、別のパッチを別の画像から抽出します。これもランダムなパッチで、基本的にはこれが負例になります。これらの手法の多くは、多くのネガティブパッチを抽出し、基本的にはコントラスト学習を行います。つまり、互いに関係のある2つの正例がありますが、コントラスト学習を行うための負例はたくさんあるような状況です。

Pretext Taskの基本原理


図14: 画像変換のPretext Taskと標準的な Pretext学習

それでは、少しPIRLの説明に移ります。これは、pretext taskの主な違いを理解しようとするもので、コントラスティブ学習がpretext taskとどう違うのかを理解しようとするものです。繰り返しになりますが、pretext taskでは、常に一度に一つの画像について推論します。 つまり、ある画像が与えられたときに、その画像に対して事前の変換(この場合はジグソー変換)を行い、その変換された画像をConvNetに入力して、適用した変換の特性、適用した並び替え、適用した回転、削除した色などを予測しようとするという考え方です。つまり、(また繰り返しですが)pretext taskは常に1つの画像について推論しています。もう一つは、この場合に実行しているタスクは、変換の性質を捉えなければならない、つまり、適用される正確な並び順の変換や回転の種類を捉えなければならないということです。 しかし、残念ながら、これが意味するのは、最後の層の表現は信号の非常に低次の性質を捉えているということです。回転などの性質を確かに捉えてはいます。しかし、私たちが欲しいのは、例えば猫を認識するために不変な表現であって、それは例えば猫が直立していても、猫が90度の方向に曲がっていても、猫を認識できるような表現です。一方で、特定のpretext taskを解いているときには、全く逆のことを課していることになります。pretext taskでは、この絵が直立しているか、この絵が基本的に横に曲がっているかを認識できるようになるべきだと言っているのです。このような低レベルの表現を共変量にしたいと思う例外はたくさんあります。その多くは実行しているタスクに関係しており、かなり多くの3次元のタスクは予測ができて欲しいのです。例えば、どのようなカメラ変換をしているかを予測したい場合などがあります(同じオブジェクトの2つの側面を見ている場合など)。しかし、そのような特定の用途でもない限り、意味を解釈したいような多くのタスクでは、入力を使用するためには、用いられた変換に対しては不変であって欲しいと考えるのです。

不変性がどれだけ重要なのか?

不変性は特徴量学習にとってのword courseになっています。ここに挿入してある、かなり人気な手作りの特徴量であるSIFTのようなものは、不変になります。そして教師ありネットワーク、例えば教師ありAlex netは、Data Augmentation(データ拡張)に対して不変になるように訓練されています。このネットワークには、入力に適用された変換が正確に何であったかを予測するように求めるのではなく、画像の異なるクロップ(トリミングのようなもの)や異なる回転を一つの木として分類して欲しいと考えます。

PIRL


図15: PIRL

これが PIRL の発想の源です。PIRL は pretext invariant representation learning の略で、表現が不変であること、あるいは入力の変換の情報をできるだけ少なくすることを目指すという考え方です。ある画像とそれになんらかの変換を施した画像があるとします。これらの画像を畳み込みニューラルネットで順伝播すると、特徴表現が得られますが、基本的にはこれら2つの画像に対するそれぞれの表現が類似しているようにします。先ほどの表記法では、画像 $I$ とその変換後の画像 $I^t$ は関連するサンプルであり、他の画像は関連しないサンプルです。このようにして、このネットワークを定式化するとき、獲得された表現にはこの変換 $t$ についての情報がほとんど含まれていないことが望まれます。ここでコントラスティブ学習を使っていると仮定します。コントラスティブ学習では、基本的には元の画像 $I$ から保存された特徴量 $v_I$ と、変換後の画像から得られた特徴量 $v_{I^t}$ があり、これらの表現は両方とも同じになるようにします。そして、私たちが見た例は、最先端な2つのpretext変換、つまりジグソーパズルと先ほど議論した回転法です。ある意味では、これはマルチタスク学習のようなものですが、ただ本当に両方の回転を予測しようとしているわけではありません。ジグソーの回転に対しては不変であろうとします。

たくさんの負例を用いる

うまくいった試みを見てみると、過去にコントラスティブ学習をうまく機能させた場合に鍵となっていたのは、大量の負例を使うことでした。これを紹介した良い論文の1つが、2018年に発表されたこのインスタンス識別に関する論文です。ここでは、メモリバンクという概念を紹介しています。最先端の研究で提案される方法のほとんどは、このメモリバンクというアイデアに依拠しています。メモリバンクは、計算量を増加させることなく、多数の負例を得るための素晴らしい方法です。何をするかというと、画像ごとの特徴ベクトルをメモリに保存しておき、その特徴ベクトルをコントラスティブ学習に使用するということをします。

どのように機能するか


図16: メモリバンクがどのように機能するか

最初に、メモリバンクを使わずにPIRLのセットアップを行う方法について説明します。画像 $I$ と画像 $I^t$ があり、これらの画像を順伝播すると、元の画像 $I$ から特徴ベクトル $f(v_I)$ が得られ、変換されたパッチから特徴量 $g(v_{I^t})$ が得られます。ここでは、特徴 $f$ と $g$ が似ていて欲しいと考えます。そして、他の無関係な画像の特徴は、基本的には似ていないものにしようとします。この場合、大量の負例画像が必要な場合は、これらの負例画像を同時に順伝播する必要があり、これを実現するには非常に大きなバッチサイズが必要になります。もちろん、限られた量のGPUメモリ上では、大きなバッチサイズは望ましくありません。そこで、メモリバンクと呼ばれるものを使用する方法があります。このメモリバンクが何をするかというと、データセット内の各画像の特徴ベクトルを保存しておくことで、コントラスティブ学習を行う際に特徴ベクトルを使用するのではなく、例えば、負例画像とは異なる画像やバッチ内の異なる画像から特徴ベクトルを取得することができるようにします。他の無関係な画像の特徴をメモリから取得して、それを代用してコントラスティブ学習を行うことができます。単に目的関数を2つの部分に分けると、まず、変換された画像$g(v_I)$からなる特徴ベクトルをメモリにある特徴表現 $m_I$に近づけるためのコントラスティブな項がありました。そして、同様に、特徴量 $f(v_I)$ をメモリ上の特徴表現に近づけようとする第二のコントラスティブな項である畳み込みニューラルネットがありました。本質的には、$g$ は $m_I$ に近づこうとしており、 $f$ も $m_I$ に近づこうとしています。推移律から、 $f$ と $g$ が互いに近くに引っ張られていることになります。これを2つに分ける理由は、安定した訓練のためであり、こうしないと訓練ができなかったからです。基本的に訓練が実際に収束することはありません。$f$と$g$の間で直接コントラスティブ学習をするのではなく、これを2つの形に分けて、訓練を安定化させることで、実際にうまくいくようにしたのです。

PIRL 事前学習

これを評価する方法は、基本的には標準的な事前学習の評価の仕組みによります。転移学習では、ラベルのない画像に対して事前学習を行うことができます。標準的な方法は、ImageNetを用意してラベルを捨て、教師なしのように用いることです。

評価

そして、ネットワーク全体を学習するfine-tuningをしたり、線形分類器を最終層にくっつけて訓練をする方法を使って評価しています。2番目に行ったことは、PIRLを手を加えていないそのままの画像で訓練して、PIRLのテストと画像分布に対する頑健性を検証することです。YFCCのデータセットであるFlickrから100万枚の画像をランダムに取得しました。そして、基本的にはこれらの画像に対して事前学習を行い、そのあとで異なるデータセットに対して転移を行いました。

物体検出タスクでの評価

PIRLは、まず物体検出タスク(視覚系の タスクにおける標準的なタスク)で評価され、VOC07+12VOC07の両方のデータセットについて、ImageNetで事前学習したネットワークの性能を上回ることができました。実際、PIRLは、より厳しい評価基準である$AP^{all}$でも優れた性能を示しています。これはとても良い兆しです。


図17: 異なるデータセットに対する物体検出タスクの性能

半教師あり学習での評価

次にPIRLを半教師あり学習タスクで評価しました。ここでもPIRLはかなり良い結果が得られました。実際、ジグソーpretext taskよりもPIRLの方が良い結果が得られました。最初の行と最後の行の違いは、ジグソーが共変量版であるのに対し、PIRLは不変量版であるという違いだけです。


図18: ImageNetにでの半教師あり学習

線形分類器での評価

線形分類器の評価に関しては、それが登場したときには、実際にPIRLはCPCv2と同等の性能を持っていました。また、多くのパラメータの設定や多くの異なるアーキテクチャでも問題なく動作しました。そしてもちろん、今ではSimCLRなどの方法でかなり良い性能を発揮することができます。実際、SimCLRの一番良い精度は69-70くらいですが、PIRLの場合は63くらいになります。


図19: 線形分類器でのImageNetの分類

YFCC画像での評価

PIRLは、YFCCのデータセットの中の加工していないそのままのFlickrの画像を用いて評価しました。PIRLは、$100$倍少ないデータセットでも、ジグソータスクよりも優れた性能を発揮することができました。このことは、単にpretext taskを予測するだけでなく、pretext taskの表現に不変性を考慮することの有効性を示しています。


図20: 綺麗に加工されていないYFCC画像

意味的な特徴

次に、意味的な特徴の検証に戻って、PIRL と ジグソー の conv1 から res5 までの異なる表現の層における最も高い精度を見てみます。興味深いことに、PIRLとジグソーでは、それぞれの層で精度が向上していますが、ジグソーでは5層目で精度が低下していることがわかります。一方、PIRLでは精度が向上しています(層を経るごとにより意味的な特徴になっています)。


図21: 層ごとのPIRLの表現の質

スケーラビリティ

並べ替え方の数を予測する必要がなく、それをただ入力として使うだけなので、PIRLは問題の複雑な部分を扱うのに非常に優れています。つまり、PIRLは、9つのパッチの362880のすべての可能な順列へと簡単にスケーリングすることができます。一方、ジグソーでは、並べ替え自体を予測しているので、出力空間のサイズによって制限されてしまいます。


図22: パッチの並べ替え数を変化させた影響

また、「Misra & van der Maaten, 2019, PIRL」という論文では、PIRLをジグソーや回転予測などの他のタスクに簡単に拡張できることが示されています。さらに、ジグソーと回転予測の組み合わせのように、それらのタスクの組み合わせにも拡張することができます。


図23: 異なるpretext taskの組み合わせと共にPIRLを使う

不変性 vs 性能

不変性という点では、一般的に PIRL の不変性はクラスタリングの不変性よりも高いと断言できます。また、同様に、PIRL の方がクラスタリングよりも性能が良いです。その結果、pretext taskよりも高い性能を発揮することになります。このことから、より不変性を持たせることで性能が向上する可能性があることが示唆されました。

欠点

  1. どのデータ変換が大事なのかがあまり明確ではありません。ジグソーはうまくいきますが、なぜ機能するのかはあまり明確ではありません。
  2. モデルサイズとデータサイズによる(性能の?)飽和があります。
  3. どのような不変性が重要なのかがわかっていません(特定の教師ありタスクに対してどのような不変性が働くかについては、今後の課題として一般的に考えることができます)。

したがって、一般的には、より多くの情報を予測しようとする一方で、可能な限り不変であるようにするべきです。

疑問として聞かれたいくつかの重要な質問

コントラスティブ学習とバッチ正規化

  1. コントラスティブ学習を行うネットワークがバッチ正規化を使用している場合、ネットワークは正例と負例を分離するための極めて自明な方法しか学習しないのではないでしょうか?

回答: PIRLでは、そのような現象はみられませんでした。ですので通常のバッチ正規化を使っています。

  1. それではコントラスティブ学習を行う任意のネットワークに対してバッチ正規化を使っても良いのでしょうか?

回答: 一般にはそうです。SimCLRでは、大きなバッチサイズを使った場合を真似するために少し変わったバッチ正規化を使っています。ですので、微調整が加えられたバッチ正規化を使用することで訓練が簡単になっている可能性はあります。

  1. すべての表現が同時に取得されるわけではないと思うのですが、PIRLの論文ではバッチ正規化が機能するのはバッチ正規化がメモリバンクとして実装されているからという理由だけでしょうか?(例えば MoCo の論文ではバッチ正規化は特に使われていないので)

回答: そうですね。PIRLでは、同じバッチがすべての表現を持っているわけではないので、バッチ正規化が機能するのかもしれません。これは一つのバッチの中で全ての表現が相関しているような別のタスクについては必ずしも成り立つとは限りませんが。

  1. ではメモリバンク以外に、n個のペアの損失をどうすればいいかについて、何か提案はありますか?AlexNetやバッチ正規化を使わない別の何かを使うべきでしょうか?それともバッチ正規化の層が働かないようにする方法があるのでしょうか?(これは動画学習タスクのためのものです。)

回答: 一般的に動画ではフレーム間に相関がありますが、相関があるとバッチ正規化の性能が低下します。また、AlexNetの最も単純な実装でも、実際にはバッチ正規化を使用しています。なぜなら、バッチ正規化を用いて学習した方が学習がはるかに安定するからです。より大きな学習率を使用することもできますし、他の下流のタスクにも使用することができます。バッチ正規化の亜種であるグループ正規化は、バッチサイズに依存しないので、例えば動画学習タスクに使うことができます。

PIRLの損失関数

  1. PIRLでは、データ分布の負の確率だけではなく、損失を最小化するためにNCE(Noise Contrastive Estimator)が使われているのはなぜですか:$h(v_{I},v_{I^{t}})$?

回答: 実はどちらも使えます。NCEを使う理由は、メモリバンクを提案した論文のセットアップが関係しています。つまり、$k+1$の負例があれば、$k+1$の二値問題を解くのと同じことになります。別の方法として、ソフトマックスを適用する方法もあります。この方法では、ソフトマックスを適用して、負の対数尤度を最小化します。

自己教師あり学習のプロジェクトに関するコツ

簡単な自己教師あり学習を機能させるためには?どのように実装し始めれば良いのか?

回答: 初期の段階で役立ついくつかのテクニックがあります。例えば、pretext taskを見てみるといいでしょう。回転予測は非常に簡単に実装できるタスクです。動かす断片の数は一般的に良い指標になります。既存の手法を実装しようとしているのであれば、著者が言及している詳細をよく見てみる必要があるかもしれません。使用した正確な学習率、バッチ正規化の使用方法などです。このようなものが多くなればなるほど、実装が難しくなります。次に考慮すべき非常に重要なことは、データ拡張です。とりあえず動くものが作れたら、そこにデータ拡張を追加してください。

生成モデル

生成モデルとコントラスティブ学習を組み合わせることを考えたことはありますか?

答え: 一般に良いアイデアだと思います。しかし、そのようなモデルを訓練するのはトリッキーでどのように行うか非自明非なこともあって、まだ実装されていません。統合的なアプローチは単独のものより実装するのが難しいですが、おそらく進むべき方向性です。

蒸留

ソフトな分布(ソフトラベルも考慮したデータ分布のこと)によってより豊富なターゲットが与えられると、モデルの不確かさが増すのではないでしょうか?また、なぜ蒸留と呼ばれているのでしょうか?

回答: one-hotラベルで訓練すると、モデルは出力結果に対して非常に自信過剰になりがちです。そのため、ラベル平滑化のようなトリックがいくつかの手法で使われています。ラベル平滑化は、one-hotベクトルを予測しようとするような蒸留の単純な場合にすぎません。ここでは、one-hotベクトル全体を予測しようとするのではなく、その中から確率の値を取り出し、1か0かを予測する代わりに、$0.97$を予測し、残りのベクトルに$0.01$, $0.01$, $0.01$, $0.01$を一様に加えます。蒸留は、この方法をより多くの情報に基づいて行う方法にすぎません。無関係なタスクの確率をランダムに増加させる代わりに、事前学習済みのモデルを使います。一般的に、ソフトな分布は事前学習の方法では非常に有用です。モデルは出力結果を過信しがちなので、ソフトな分布の方が訓練しやすいからです。また、収束の速度も速くなります。蒸留にはこのような利点がみられます。


📝 Zhonghui Hu, Yuqing Wang, Alfred Ajay Aureate Rajakumar, Param Shah
Shiro Takagi
6 Apr 2020