ラベルの付け間違いが分かる!?

  • 投稿日:
  • カテゴリ:

ラベルの付け間違いとRPS

はじめまして。京セラコミュニケーションシステム(KCCS)の辺見です。

今回の記事では、画像分類におけるラベルの付け間違いを解決するために、"Representer Point Selection(RPS)"を使ってみましたので、その解説をしたいと思います。

私は入社してから画像分類の検証を行ってきました。画像分類の検証では、精度を上げようとしてもうまく上がらないときがあります。そこで、学習データをよく見てみると、ラベルの付け間違いがあり、これによって精度が上がらないということがよくあります。

 このような問題を解決するための研究があり、それを本記事で紹介させていただきます。機械学習のトップカンファレンスであるNeurIPS 2018に採択された"Representer Point Selection for Explaining Deep Neural Networks."です。Deep Learningと画像分類についての見識をお持ちの方向けに解説していきたいと思います。

この論文中に出てくるRepresenter Point Selection (以降RPS)という手法では

 a. 学習データのラベルの付け間違いを検出

 b. 各テストデータの予測結果がどの学習データからどのくらい影響を受けているかを数値化

を行うことができます。本記事では上記aを検証してみました。b元論文を参照してください。

RPSの理論

それでは、RPSによってどのようにaを行っているのかを紹介します。2層以上のフィードフォワード型ニューラルネットワーク(NN)による画像分類を前提とし、この論文ではディープラーニングを用いています。

NNの重みパラメータ集合(Θ)を、Output layer前の重みパラメータ(Θ1)とそれ以外の重みパラメータ(Θ2)に分け、Θ={Θ1,Θ2}とします。画像xiを入力したときのOutput layerのひとつ前のlayerの出力をfiとすると、活性前のOutput layerの出力Φは、fiΘ1と表すことができます。ここで論文では、活性前のOutput layerの出力Φを以下の(1)式のように導出しています。

(1)

ここで、xtはテスト画像、Θ*は定常状態(=学習が完了)のNNの重みパラメータ、nは学習画像枚数、αiは学習画像xiの重み係数(後述)、fiは学習画像xtを入力したときのOutput layerのひとつ前のlayerの出力、ftはテスト画像xtを入力したときのOutput layerのひとつ前のlayerの出力を示しています。(1)式より、テスト画像xtを入力したときの活性前のOutpurt layerの出力Φは、各学習画像の重み(αi)と、Output layerのひとつ前のlayerの出力(fi)との線形和で表すことができることを指します。これによって、各テストデータの出力がどの学習データからの影響を受けているかを数値化できます。 

そして、論文では|αij|(jは任意のクラスを示す)の大きい要素を有する画像xiを「ラベルの付け間違い」とし、ラベルを修正して再学習させることで、精度の向上を達成しています。学習画像xiの重み係数αiは以下となります。

(2)


ここで、λはL2正則化のハイパーパラメータ、Lは誤差関数、yiは学習画像xiの教師信号を示しています。誤差関数Lについては、DLの画像分類タスクで広く用いられている交差エントロピー誤差関数を使用することにより

(3)


のように、連鎖律を用いて簡単に式変形することができます。つまり、学習データiに対する重み係数αi

(4)


のように式変形できます。これを計算することで、|αij|が大きい画像xiを検出することができます。

実験

本実験では、RPSによってデータセットの誤ラベルの疑いを確認します。ここではfood-101データセットを用いて実験を行いました。

全画像枚数 101,000
クラス数 101
画像枚数/クラス 1,000(均一)
学習:評価:テスト 8:1:1

このデータセットは101種類の料理の画像を分類するタスクとなっています。料理の種類の一部抜粋を以下に示します。

'Apple pie' 'Baby back ribs' 'Tuna tartare' 'Waffles'

実験条件は以下の設定として学習を行いました。

ネットワーク VGG19 pretrain:image_net
最適化手法 Adam
バッチサイズ 32
画像サイズ 224×224
学習完了条件 交差エントロピー誤差が5epoch連続で下がらない場合学習を終了

学習完了後、学習モデルと学習データを用いて、αiの算出を行いました。αiの要素|αij|は、学習データ数 × クラス数(80,800×101=8,160,800)あります。これを降順(rank)(⇒モデルが誤ラベルかもしれないと判断した画像順)として画像を見ていきます。なお、画像を確認し、私が誤ラベルと判断できる画像については、背景を黄色に変えています。なお、正解ラベルと予測ラベルの画像はFood-101の各クラスから1枚を選択して表示しています。

rank画像xi対象クラスj代表値の絶対値|αij|正解ラベル予測ラベル
1 baklava/562085.jpg
samosa 61.88       baklama
samosa
1 baklava/562085.jpg baklava 61.88 baklama samosa
1 red_velvet_cake/524752.jpg
red_velvet_cake 61.88 red_velvet_cake
macarons
1 red_velvet_cake/524752.jpg macarons 61.88 red_velvet_cake macarons
1 pancakes/328349.jpg
waffles 61.88 pancakes
waffles
1 spaghetti_bolognese/3506379.jpg
spaghetti_carbonara 61.88 spaghetti_bolognese
spaghetti_carbonara
1 apple_pie/1158360.jpg
apple_pie 61.88 apple_pie
Apple pie.jpg
baby_back_ribs
1 spaghetti_bolognese/3506379.jpg spaghetti_bolognese 61.88 spaghetti_bolognese spaghetti_carbonara
1 pancakes/328349.jpg pancakes 61.88 pancakes waffles
1 apple_pie/1158360.jpg baby_back_ribs 61.88 apple_pie baby_back_ribs
11 churros/3690003.jpg
churros 61.88 churros
chocolate_cake
12 panna_cotta/2410193.jpg
panna_cotta 61.88 panna_cotta
deviled_eggs
13 panna_cotta/2410193.jpg deviled_eggs 61.88 panna_cotta deviled_eggs
14 mussels/1124178.jpg
mussels 61.88 mussels
deviled_eggs
15 mussels/1124178.jpg deviled_eggs 61.88 mussels deviled_eggs
16 escargots/995450.jpg
escargots 61.88 escalgots
deviled_eggs
16 escargots/995450.jpg deviled_eggs 61.88 escalgots deviled_eggs
18 bruschetta/153898.jpg
caprese_salad 61.87 bruschetta
caprese_salad
Caprese-1.jpg
19 bruschetta/153898.jpg caprese_salad 61.87 bruschetta caprese_salad
20 churros/3690003.jpg chocolate_cake 61.87 churros chocolate_cake

明らかに誤ラベルであると判定できたものは、10枚中6枚となりました。また、その中でモデルが真の正解ラベルに判定していそうなものは6枚中5枚でした。ただし、ここに挙げた学習データは学習完了後にもかかわらず予測でミスしたものでした。

次に、予測は正解したものの、代表値の絶対値が高かったものを挙げてみます。明らかな誤ラベルの学習データをそのまま用いて学習させると、間違えたラベルとその画像を紐づけて無理やり学習させてしまうため、そのデータに対応するために決定境界を引くこととなるため、精度が低下する可能性が高いと考えられます。これまでと同じく、画像を確認し、正解ラベルの付与を間違えている(誤ラベル)と判断したものは背景色を黄色に変えています。

rank画像xi対象クラスj代表値の絶対値|αij|正解ラベル予測ラベル
96 pho/17113987.jpg
pho 56.95 pho
pho
132 ravioli/896242.jpg
ravioli 53.04 ravioli
ravioli
174 churros/179675.jpg
churros 47.40 churros
churros
248 fried_rice/805390.jpg
fried_rice 40.51 fried_rice
fried_rice
284 french_toast/818831.jpg
french_toast 37.67 french_toast
french_toast
明らかに誤ラベルであると判定できたものは、5枚中4枚でした。

一見正解したように見える判定結果でも、RPSを使うことで誤りが効率的に検出でき、精度向上のチャンスがあります。

参考文献

Chih-Kuan Yeh, Joon Sik Kim, Ian E.H. Yen, Predeep Ravikumar: Representer Point Selection for Explaning Deep Neural Networks. (2018)