Site cover image

Site icon imageSen(Qian)’s Memo

This website is Donglin Qian (Torin Sen)’s memo, especially about machine learning papers and competitive programming.

2020-ICML-[APL]Normalized Loss Functions for Deep Learning with Noisy Labels

https://arxiv.org/pdf/2006.13554

Introduction

今のNoisy Labelに対する戦略は以下の4つがある。

  1. 誤ったラベルを見つけ出し、訓練に使わない。
  2. ノイズの生成モデルを考える。行列などで。
  3. 訓練するときのアルゴリズムを改善して、ノイズを考慮させる。
    1. 📄Arrow icon of a page link2018-NIPS-Co-teaching: Robust Training of Deep Neural Networks with Extremely Noisy Labels
    2. 📄Arrow icon of a page link2018-ICML-MentorNet: Learning Data-Driven Curriculum for Very Deep Neural Networks on Corrupted Labels
  4. そもそもノイズに強い損失関数を作る。
    1. 今回の研究はこれ
    2. 先行研究としては、 Generalized Cross Entropyがある。
    3. Reverse Cross EntropyとCross Entropyを組み合わせた、Symmetric Cross Entropy損失もあるらしい。
      1. Wang, Y., Ma, X., Chen, Z., Luo, Y., Yi, J., and Bailey, J. Symmetric cross entropy for robust learning with noisy labels. In ICCV, pp. 322–330, 2019c.

📄Arrow icon of a page link2017-AAAIAI-Robust Loss Functions under Label Noise for Deep Neural Networks. であるように、絶対値損失のMAEは損失に強いが、クロスエントロピー損失が弱いのは残念である。だが訓練の収束速度では圧倒的にCross Entropyが早い。

MAEとGeneralized Cross Entropy(読んでここにリンク張る)ではこの欠点を補おうとして、MAEとCross Entropyを組み合わせたといえる。しかし、これは理論的には部分的にしかノイズに強くないらしい

この論文では、理論的にどのような損失関数からでも、正規化をするだけっでノイズに強いような損失関数を構築することができる、と示した。

しかし実際では、単にRobustな関数は、そもそもピークの性能が低い学習不足の問題をDNNでは抱えている。なので、あらたにActive Passive Lossという概念を考えた。

Related Works

前述の通り4つの戦略がある。具体的にはだいたい 📄Arrow icon of a page link2020-Survey-A Survey of Label-noise Representation Learning: Past, Present and Future にある通り。

提案手法

問題設定

  • データはxXRd\mathbf{x} \in X \subseteq \mathbb{R}^dで、ラベルはyY={1,,K}y \in Y = \{1, \cdots, K\}である。
  • ラベルはq(kx)q(k|\mathbf{x})という分布として与えられるとする。最も分布はonehotである。
  • 真のラベルはyy^*であり、Noisyされた後のラベルはyyとする。
  • 識別器はラベル分布の予測を出力し、p(kx)p(k|\mathbf{x})だとする。
  • ノイズはインスタンスに依存しない。q(y=ky=j,x)=q(y=ky=j)q(y=k|y^*=j, \mathbf{x}) = q(y=k|y^*=j)
    • つまり、典型的な対称、非対称損失を考える。

よく使われる各種の損失関数

  • Cross Entropy(CE)
  • Mean Absolute Error(MAE)
  • Reverse Cross Entropy(RCE)
  • Focal Loss(FL)
CE=k=1Kq(kx)logp(kx)MAE=k=1Kq(kx)p(kx)RCE=k=1Kp(kx)logq(kx)FL=k 1Kq(kx)(1p(kx))γlogp(kx)CE = -\sum_{k=1}^K q(k|\mathbf{x}) \log p(k|\mathbf{x}) \\ MAE = \sum_{k=1}^K |q(k|\mathbf{x}) - p(k|\mathbf{x})| \\ RCE = -\sum_{k=1}^K p(k|\mathbf{x}) \log q(k|\mathbf{x}) \\ FL = - \sum_{k~1}^K q(k|\mathbf{x}) (1 - p(k|\mathbf{x}))^\gamma \log p(k|\mathbf{x})

提案手法: 正則化

📄Arrow icon of a page link2017-AAAIAI-Robust Loss Functions under Label Noise for Deep Neural Networks. で提案されたように、以下のような対称的な損失はロバストであるとわかる。

const=k=1KL(f(x,y)),x,f\mathrm{const} = \sum_{k=1}^K L(f(\mathbf{x}, y)), \forall \mathbf{x}, \forall f

これを実現するには、以下のように損失を正規化すればいいとわかる。

Image in a image block

先ほどの提案した4つの損失について、それぞれNormalizationを考えてみた。

  • Normalized Cross Entropy
Image in a image block
  • Normalized Mean Absolute Error
Image in a image block
  • Normalized Reverse Cross Entropy
Image in a image block
  • Normalized Focal Loss
Image in a image block

NMAEとNRCEは、元の損失の値から定数倍で変換できるとわかる。

理論的な部分

📄Arrow icon of a page link2017-AAAIAI-Robust Loss Functions under Label Noise for Deep Neural Networks. にもあるように、以下のが成り立つ。

  1. 先行研究のように、ノイズ率η<11/K\eta < 1 - 1/Kならば、正規化された損失関数も対称非対称損失の両方に強い。
    1. 正解ラベルはたとえノイズがあってもさすがに多数でないといけない。
  2. 先行研究のように、ηjk<1ηy\eta_{jk} < 1 - \eta_yとして、R(f)=0,0Lnorm(f(x),k)1/(K1)R(f^*)=0, 0 \leq L_{norm}(f(\mathbf{x}), k) \leq 1/(K-1)を満たすときは対称、非対称損失の両方に強い。
    1. 正解ラベルはたとえノイズがあってもさすがに多数でないといけない。
    2. ここで1/(K1)1/(K-1)とは間違っているクラスは(正規化された)損失を高く持つべきであるが、それでも各クラスごとの平均の1/(K1)1/(K-1)を超えてはならない、という意味。
    3. 間違ったクラスであっても損失が過度に高くないことで、ラベルは実は間違っていました、となっても被害を軽減するしくみ。

Robustness Alone is not Sufficient

ここまで正規化によって高いロバスト性を持つことができると示したが、実用上ロバスト性が高いだけではまだ不十分である。ロバスト性が高いと、そもそも学習が進まずにピークの性能が低い学習不足を引き起こすことが実践するうえで分かった

これに対してこの論文はActive Passive Lossというフレームワークを提案した。

Active Passive Loss

すべての既存のロバストな損失関数は以下のように分けられる。

  • Active Loss 該当するラベルである確率をより高めようとするような損失関数。
    • つまり、p(k=yx)=1p(k=y|\mathbf{x}) = 1に近づけようとする。
    • CE, NCE, FL, NFL
  • Passive Loss 「Active Lossの役割に加えて」該当しないラベルである確率もより低くしようとするような損失関数。
    • MAE, NMAE, RCE, NRCE

ということで、ハイパーパラメタα,β\alpha, \betaを取り入れることで、Active Passive Lossを以下のように定義できる。Active, Passiveの両方の損失はノイズに強ければ、合成させてもノイズに強い。

LAPL=αLactive+βLpassiveL_{APL} = \alpha L_{active} + \beta L_{passive}
なぜ学習不足に陥りづらくなる?

Normalizedすると、Cross Entropyの場合P/(P+Q),P=logpy,Q=kylogpkP/(P+Q), P=-\log p_y, Q = \sum_{k \neq y} \log p_kとして、PP部分がそのままでも、他のQQ(ラベルが他のクラスである、と置いた時の損失の値)が増加することがある。

特に、PPの部分は学習が進んでいたらPPが減るが、それとは別に他のQQが増える結果となっても全体の損失は下がる。しかし、当初の目的のPPを減らすにはならない。

最初のうちはちゃんとQQが増える以上にPPが減るので有益になるらしい。

なぜActive Passive Lossでは解決できる?

Normalized Passive Lossでは、「該当のラベルである」以外にも「該当しないラベルの確率も低くする」ので、これを通しておのずとQQも小さくしていくので、比較的に目的関数を減らす=PPを減らすというようにすることができる

先行研究に比べて何がいいか

先行研究でもNLNLがあるが、10倍以上遅く3ステップ以上の複雑な訓練過程が必要である。

  1. 補ラベルで訓練する。
  2. 閾値を用いて信頼度の高い補ラベルで訓練する。
  3. 信頼度の高い普通のラベルで訓練する。

これはActive LossとPassive Lossで訓練することを交互にやっているといえるが、APLは明らかに良い。

実験

単純にNormalizedするとロバストになるが、性能は低下する

前述のようにNormalizedするだけでは意味がない。

Image in a image block

Normalizedしたものを数倍にスケーリングする意味はあるか

スケーリングはあまり意味がない。

CIFAR10では意味があるがこれは学習率を調整すればいいし、CIFAR100では意味がない。

APLの結果

十分に良いとわかる。

係数をそれぞれ変更したところ、より複雑なデータセットでは高い係数でのActive Lossと低い係数のPassive Lossが重要である

Image in a image block