zerebom / paper-books

@zerebom が読んだ技術書、論文をまとめています。推薦システム系が多いです。
https://github.com/zerebom/paper-books/issues
2 stars 0 forks source link

(LSEP Loss) Improving Pairwise Ranking for Multi-label Image Classification #46

Open zerebom opened 3 years ago

zerebom commented 3 years ago

src: https://arxiv.org/pdf/1704.03135.pdf pytorch impl: https://gist.github.com/NegatioN/eb2c23fc98e67a6396f6ea77e384c549

MultiLabelのRankingタスクで使用されるNN用の損失関数。 rainforestコンペ 5th solutionsで使用されていた。 src: https://kutohonn.hatenablog.com/entry/2021/02/18/224002

過去の提案手法では、hinge-loss を使用されていたものが多かったが、 連続ではないため最適化が困難であった。

本論文ではhinge-lossに近似できる連続関数を定義した。

Multi LabelのRankingタスクの説明

image

Multi LabelのRankingタスクは↑の図のように2つのパートに分かれる。

  1. 画像に対して、各ラベルの共起確率を出力する(label prediction)
  2. クラスごとにしきい値を設定し、ラベルを確定する(label decision)

そして、このタスクのゴールは下記のように表現される。

image

つまり、posラベルのpred値<negラベルのpred値となる事象数(?)を最小化することが目的。

ただし、このpos/negラベルの決定は自明ではない。 単純にやれば、

  1. pred値が高い順にtop-k個をposラベルとする
  2. しきい値以上のpred値のカテゴリをposラベルとする

のような手法が考えられるが、これらだと画像のコンテキストを考慮することが出来ない。

これを解決するために、hinge-lossをsmoothにした log-sum-exp fuction を提案する。 また、label decisionを解決するために、分類タスクを別で解く手法も提案する。 さらに、ベイズ的側面から、提案したloss funcが他のものより優れているということを証明した。

提案手法

notation x_i: i番目のd次元の入力 y_i: i番目のデータに対するカテゴリカルラベル(K種) k_i: i番目のデータに付くposラベルの数 F(x): multi-label classifier モデル f(x) : 入力データ -> 各ラベルの確率出力関数(= label prediction model) g(f(x)): 各ラベルの確率 -> pos/neg ラベル決定モデル(= label decision model)

Label Prediction

image

Y_i と予測値を入力としたloss func + 正則化項を最小にするのがタスク。

従来は下記のようなhinge lossが使用されていた。 sum(max( Negラベルの確率 - Pos ラベルの確率 + α))) (=hinge loss) image

これを連続化したのが提案手法のLSEP loss (LSEP lossの上界はhinge lossになる) image

Negative sampling

LSEP loss はpair-wiseなのでO(N**2) の計算オーダーになるので、 カテゴリが多ければword2vecのようにNegative samplingすると良い。

Gradient

image

Comparison to Related Loss Functions

似たタスクのための関数、"WARP"や"BP-MLL"より良いらしい(読んでない)

Label Decision

notationのg(・)の部分。 本論文では、g(・)を学習可能な関数として、CNNの最終層-1層にMLPを結合した。

top-kの手法を良くした、Label count estimationと しきい値の手法を良くした、Threshold estimationを用意した。

Label count estimation

この画像に対しては何個のラベルが付くでしょうか?というタスクをMLPに解かせる。 付与できるラベル数を最大nと区切ることで、n個の多値分類として解かせる。 image

このMLPの入力は CNNの最終-1 層の出力になる。

Threshold estimation

各ラベルのしきい値をK次元の回帰モデルとして解く。 image

実験

VGG16のsoftmaxをLSEP lossに置換して10epoch fine-tuneした

個人的な疑問

参考: https://www.smartbowwow.com/2020/05/improving-pairwise-ranking-for-multi.html