-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[1911.02855] Dice Loss for Data-imbalanced NLP Tasks [paper-reading] #52
Comments
なんか面白い論文ないかな〜と思って ACL 2020 の accepted paper 眺めてたら見つけたものの一つ。 Dice loss っていうと semantic segmentation とかで使う Dice loss だよね?という感じがするが、画像の場合は予測領域と正解領域の intersection / union とするところを NLP タスクに応用するという話なのだろうか。軽く眺めるとそうっぽいが imbalance を解決するために何かしらの工夫はしていそう。 とりあえず読んでいくことにする。 |
data imbalance な状況で生じるのは以下の二つの問題で、そのどちらも現在は適切には解決されていないという認識。
|
最初の問題を解決するためには False Positive, False Negative 両方に等しく寄与する loss function が必要で、そのために Dice loss や Tversky index を使うというのが、この論文の一つ目のアイデア。 二つ目の問題はこれだけでは解決しないので、Focal loss に inspire されて学習データに対して (1-p) の重みをつけて学習するというのが、この論文の二つ目のアイデア。 なんかこれだけ読むと CV のアイデアを NLP に持ってきてみました、という感じに見えなくもないな... ちなみに Focal loss に関しては以前この paper-reading で読んでいた: #19 |
提案手法な具体的な内容に入る前に notation などの確認。 みんな大好き cross entropy は以下。 式から明らかなのは、それぞれのデータは等しく loss に寄与するということだ。 ちなみに multi-class の場合にこの α をどう決めるのかは結構トリッキーで、selection bias がかかるのであまり使われてないとのこと。 |
次に提案手法に組み込むことになる Dice coefficient と Tversky index の説明。 Dice coefficient は、二つの集合 A,B が与えられときに以下で定義される。 モデルが positive と予測したデータが全て正しく正解ラベルになるなら 1 になるし、逆に本当は全て negative ならば 0 になる。 これを個別の instance $ x_i $ に対して書き換えると以下のように書ける。 これも 1 を添字にしてその添字の sum を取ることで multi-class に書き換えることは可能だが、(binary classification の場合と同じく) 寄与するのは y = 1 となる instance のみで、それ以外の instance の寄与はモデルの予測に関わらずなくなってしまう。 単純ではあるがこれで $ y_{i1} = 0 $ の場合でも非ゼロの寄与が生まれる。 1 parameter γ で negative instance の寄与も取り込めるので、シンプルな割にはなかなか悪くない感じはする。 |
上で出てきたような DL, TL を使えば、これらが F1 score の拡張になっていることからも分かるように、False Positive, False Negative 両方の影響を受けるものであるから冒頭の問題点の一つ目はクリアできる。 一方で easy example が多い場合にそれの影響が dominant になってしまうという問題にはアプローチできていない(冒頭では物体検出でおなじみの easy negative の問題だけに言及していたが、ここでは pos/neg 両方の easy example について考える)。 これの解決に Focal loss のアイデアを使う。 p が 1 に近い場合に loss への影響が小さくするようにすればいいのだから (1 - p) のような weight をかけてやるのが単純なソリューションであろう。ということで以下の loss を採用する。 こうなってくるとそもそもの F1 score の拡張だった話とかはどこ吹く風という感じだが、まあこういう modification でも結果がよければそれでヨシというのが昨今の機械学習ということなんでしょう。Focal loss とかもそんな感じだったしね。 |
この論文で登場した loss をまとめたものが以下の表。(1-p) factor は Tversky loss でも同様に考えられるはずだけど、dice loss のみ試しているみたい。DSC の分子の factor 2 が落ちてるけど typo ですね。 loss の微分をグラフにしたものが以下。 |
Ablation study では Spacy を使って DBpedia を介して entity を置き換えて pos/neg を augment してデータバランスを変えたりして結果がどうなるか調べている。the Quora Question Pairs (QQP) はもともと pos:neg = 0.37:0.63 の imbalance なデータで、これを 0.5:0.5 にしたり 0.21:0.79 にしたりしている。そのほかにも negative sampling なども試しているが、結果は以下。 一番上が cross entropy での結果で、どのパターンでも単純な cross entropy よりも効果がある。 あと気になったのが imbalance 度合いが大したことないとい点。 |
ということで一通り読んだ。 imbalance な状況設定に興味があって読んだが、論文ではそんなに激しい imbalanced dataset の状況を考えていなかった。 |
論文リンク
https://arxiv.org/abs/1911.02855
公開日(yyyy/mm/dd)
2019/11/07
概要
単純な cross entropy では、 accuracy のみを見て False Positive, False Negative 両方をケアできてない点、簡単なデータが大量にあったときにそれらの寄与が dominant になって見分けたい難しいケースを見分けづらい点、が問題となり得る。
前者は F1 score を拡張した Dice loss を用い、後者は Focal loss のアイデアを拝借して (1 - p) の weight を掛けることで解決を図り、実験して試したら良い結果でした、という論文。
imbalance と言っても実験で試していたのが 1:4 くらいの度合いで、現実はもっと激しいのでそういうケースに使えるアイデアがないかと思って読んだけどそういう話ではなかった。
The text was updated successfully, but these errors were encountered: