Blogブログ

2019.7. 4

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

SHARE

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

目次


ラベルの付け間違いと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の重みパラメータ集合($\Theta$)を、Output layer前の重みパラメータ$\Theta_1$とそれ以外の重みパラメータ($\Theta_2$)に分け、$\Theta=\{\Theta_1,\Theta_2\}$とします。画像$x_i$を入力したときのOutput layerのひとつ前のlayerの出力を$f_i$とすると、活性前のOutput layerの出力$\Phi$は$f_i\Theta_1$と表すことができます。ここで論文では、活性前のOutput layerの出力$\Phi$を以下の(1)式のように導出しています。

(1)

siki1.png

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

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

(2)

siki2.png

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

(3)

siki3.png

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

(4)

siki4.png

のように式変形できます。これを計算することで、$|\alpha_{ij}|$が大きい画像$x_i$を検出することができます。

実験

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

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

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

'Apple pie'
'Baby back ribs'
'Baby back ribs'
'Waffles'

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

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

学習完了後、学習モデルと学習データを用いて、$\alpha_i$の算出を行いました。$\alpha_i$の要素|$\alpha_{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)

執筆者

辺見 航平

SHARE

Recent Post最新記事

Rankingランキング

Categoryカテゴリ

Tagタグ

Archiveアーカイブ

Contactお問い合わせ

TEL0120-911-901 受付時間
平日9:00~17:00