📌

【論文紹介】Co-teaching(Han et al. 2018)

2020/12/29に公開

竹輪内からしです。機械学習、特にラベルが誤っていたり、学習していないデータを推論する必要がある場合に興味があります。
今回はラベル誤りのあるデータセットでもロバストに学習するという内容の論文を読んだので、簡単にまとめてみました。

論文の情報

  • タイトル:Co-teaching: Robust Training of Deep Neural Network with Extremely Noisy Labels
  • 著者:
    • Bo Han(Center o Artificial Intelligence, University of Technology Sydney, RIKEN)
    • Quanming Yao(4Paradigm Inc.)
    • Xingrui Yu(Center o Artificial Intelligence, University of Technology Sydney)
    • Gang Niu(RIKEN)
    • Miao Xu(RIKEN)
    • Weihua Hu(Stanford University)
    • Ivor W. Tsang(Center o Artificial Intelligence, University of Technology Sydney)
    • Masashi Sugiyama(RIKEN, University of Tokyo)
  • 公開日:NeurIPS2018
  • リンク:

概要

  • 「Deep Neural Network(DNN)はcleanなデータから学習する」「異なるDNNは異なる決定境界を持つ」という性質を利用してデータの正解ラベルがcleanらしいかnoisyらしいかを判定する。
  • 2つの異なるDNNを用意し、片方がcleanと判定したデータをもう片方のDNNで学習することで、noisy labelにロバストな学習を実現する。
  • ロバスト学習の分野で当時のstate of the art。

Noisy labelsについて

Noisy labelsとは、訓練データセットの正解ラベルの誤りのこと(例えば、猫の画像に「犬」というラベルが付与されている)です。逆に、ラベルが誤っていないデータのことをcleanといいます。

大規模な訓練データセットを作る際にクラウドソーシングを用ると、あまり質の良いラベルが得られない場合があります。このような場合にnoisy labelsのある訓練データセットで学習することになってしまいます。

通常の機械学習では、noisy labelのない(cleanな)訓練データセットで学習する場合を考えます。このような問題設定では、近年のDNNで精度よく学習できますが、noisy labelsのあるデータセットで学習を行うとcleanな訓練データセットで学習した場合よりも精度が落ちてしまうことが報告されています[1][2]

Noisy labelsのあるデータセットでの学習については盛んに研究がされており、DNNはnoisy labelsよりもcleanなデータを先に学習するといわれています[1:1][2:1]。今回紹介する論文では、この性質を利用して、データをcleanらしいかnoisyらしいかを判定します。

手法・アルゴリズム

Co-teachingでは、2つのDNNを互いに教え合うようにして学習することで、noisy labelsにロバストになるように学習します。詳しくは後で詳しく説明します。

先行研究の問題点

Co-teachingの説明をする前に先行研究について見てみましょう。

2つのDNNを用いてnoisy labelsに対してロバストに学習する研究は、Co-teachingの他にもあります。論文で先行研究に挙げられているDecoupling[3]です。手法のイメージを次の図に示します。

他の手法との比較
Co-teachingと他の手法の概要

このDecouplingでは、Co-teachingと異なり、2つのDNNは互いには教え合いません。
詳細は省略しますが、お互いが異なる予測をしたデータのみを学習します。

これには問題があります。
2つのDNNは異なるDNNですので、異なる決定境界を学習していると考えられます。DNNはcleanなデータから先に学習しますので、どちらのDNNもcleanなデータに対しては同様の予測をすると考えられます。
一方で、noisy labelsに対してはどうでしょうか。学習が未熟な段階では、どちらのDNNもnoisy labelsを学習できていないため、2つのDNNは同じ予測になるとは限りません。
つまり、「学習段階で2つのDNNが同様の予測になるデータ=clean」「学習段階で2つのDNNが異なる予測になるデータ=noisy labels」と考えることができます。

Decouplingでは2つのDNNが互いに異なる予測をするデータ=noisy labelsを学習してしまうため、noisy labelsが多く含まれるデータセットではロバストに学習できないことが予想されます。

Co-teachingの手法

そこで、Co-teachingではcleanと判定できるデータのみで学習することを考えます。
では、どのようにデータのcleanらしさを評価し、cleanかnoisyかを判定するのでしょうか。

DNNはcleanなデータから先に学習します。そのため、学習の初期段階でもcleanなデータの損失は小さくなると考えられます。逆に、損失が小さいデータはcleanらしさが高いとも考えられます。このようにしてcleanらしさを評価することができます。

ここで2つのDNNを使うモチベーションについて述べます。
直感的に言うと、1つのDNNだけでは自分が誤って学習したことに気づけないのに対して、2つのDNNが互いに検証し合えば誤って学習したことに気づき正せすことができます。このため、2つのDNNが必要になります。

手順を説明します。アルゴリズムを次の図に示します。
アルゴリズム
Co-teachingのアルゴリズム

2つのDNNがデータのcleanらしさを評価するのが4、5行目で、ロスの小さいデータを取ってくるということを意味しています。
お互いがデータを交換して学習するのが、6、7行目です。

実験と結果

実験により、Co-teachingの効果を検証します。

比較手法

比較手法を簡単に紹介します。

  • Bootstrap: 正解ラベルと予測ラベルを重み付きで組み合わせたラベルで学習する手法
  • S-model: noise transition matrix(どのクラスとどのクラスの間でどれだけラベルの誤りが起こりやすいかを表す行列)を推定する手法
  • F-correction: 推定したnoise transition matrixで予測を補正する手法
  • Decoupling: 2つのDNNが異なる予測をしたデータを学習する手法
  • MentorNet: 事前学習した教師モデルでnoisy labelsをふるい分け、生徒モデルをnoisy labelsにロバストに学習する方法
  • Co-teaching:提案手法

手法の特徴の比較を次の表に示します。

比較手法
比較手法の特徴の比較

large classは「classが多いときでも学習できるか?」、heavy noiseは「noisy labelsが多い場合デモロバストに学習できるか?」、flexibilityは「アーキテクチャに依存せず実装できるか?」、no pre-trainは「事前学習が不要か?」を意味しています。
チェックの数が多いほど使い勝手がよい手法といえます。

データセット

論文には画像分類タスクでよく用いられるMNIST、CIFAR-10、CIFAR-100で実験を行っています。
しかし、これらにはnoisy labelsが含まれないので、人工的にnoisy labelsを再現します。
ここで、論文では2種類の方法でnoisy labelsを人工的に再現します。

  • Pair flipping: 特定の2クラス間でしか入れ替えない
  • Symmetry flipping: どのクラスとも等確率で入れ替える
    Pair flippingの方がSymmetry flippingより学習が難しいです。

Co-teachingではnoisy labelsが多く含まれる場合により効果を発揮することが予想されますので、Pair flippingでは45%の確率でラベルが誤り、Symmetry flippingでは50%の確率で誤り、という状況を考えます。(Pair flippingの場合、50%の確率で誤りだと、どちらのクラスが真に正しいかを学習させることができなくなってしまうので45%とした。)

また、さほどnoisy labelsが多くない場合にも効果を発揮できることを確かめるために20%のSymmetric flippingでも実験を行います。

実験結果

ここではMNISTの結果のみを示します。
青線の提案手法はepoch数が進んでも精度を保ったままであることが見て取れます。
つまり、noisy labelsにロバストに学習できたことがわかります。

results
MNISTでの実験結果

脚注
  1. A closer look at memorization in deep neural network ↩︎ ↩︎

  2. Understanding deep learning requires rethinking generalization ↩︎ ↩︎

  3. Decoupling “when to update” from “how to update” ↩︎

Discussion