[1] 是 metric learning 的一篇學術打假文,回顧了 deep metric learning 領域兩個經典工作(contrastive loss,triplet loss)和近年來(2017 ~ 2019,見文中 Table 6)的幾篇工作,指出近年一些工作其實有些作弊行徑,其提出的 loss 帶來的實際增長其實沒有文中號稱的那麼多,非常硬核。
作者按照他認爲公平的方式重新實驗比較這些 losses,並有提供 benchmarks 的代碼,見 [2]。一作 github 主頁見 [3]。
本篇記錄感興趣的一些點。
Losses
文中提到的 metrics learning 中出現過的一些 losses,分 embedding loss 和 classification loss 兩類。
Embedding Loss
- contrastive loss [5]
- triplet margin loss [6]
- angular loss [7]
- margin loss [8]
- lifted structure loss [9]
- N-Pairs loss [10]
- multi similarity loss [11]
- tuplet margin loss [12]
- FastAP [13]
Classification Loss
- ProxyNCA [14]
- SoftTriple loss [15]
P.S.
還有回顧一些 pair/triplet mining 方法,和用到 generator 的方法。
mark:刷一遍,有機會總結一下。
Flaws
文中指出一些工作在對比其它工作和論證自己貢獻、訓練模型、所選評價指標的一些漏洞和缺陷,也算是同時提出一些做實驗對比時的原則。
(我此時其實還沒看過這些被懟的文章,所以更看重其作爲實驗原則來的功用)
Unfair Comparisons
要實驗驗證所提算法的有效性,控制變量是基本的要求之一。文中提到幾點:
- 預訓練模型。比如不能自己用 ResNet50 和別人一個用 GoogleNet 的比;
- 數據增強。可能有些工作文章明面上說自己用了這些這些數據增強(青銅),但觀其代碼卻又是用了更復雜的數據增強(王者);
- 優化器。Adam、RMSprop 這裏自適應的收斂快,但用 SGD 可能使得模型泛化性更好,然而這是優化器引起的分別,而不是所提算法的分別;
- 隱藏 tricks。有篇工作將預訓練模型的 BatchNorm 層參數定住,可以減少 overfitting,它代碼註釋說在 CUB200 可以提兩個點,但文章卻不提(如果有用了 tricks 不說還不給代碼的?復現還玩個*?);
- 實驗結果的置信區間。(還不是很懂這個 confidence interval 是什麼、怎麼用,是說 多次實驗求平均和方差 而不是隻給一個結果這個意思嗎?);
Training with Test Set Feedback
一般 test set 在訓練過程不可見是個基本要求(transductive learning 設置除外?),包括調查、模型選擇過程。
他們發現一些工作只劃了 training set 和 test set 而沒有 validation set,這意味着這些工作可能在做模型選擇、調參時用了 test set,這是違反原則的,因爲 test set 實質上參與了訓練過程:雖然不是直接的梯度回傳,但是間接地通過人反饋給模型。
所以是應該 training set 中劃一定比例出來做 validation set 做調參,test set 只用作最後評估。
Weakness of Commonly Used Accuracy Metrics
可能兩個模型的在一種指標下表現差異巨大,在另一種指標下卻沒什麼區別,這意味着有些指標用來評價模型不太合適?(或者不夠全面客觀?)文中有給示例。
Hyper Parameters
4.2 節指出,有些工作能比起兩個經典損失 contrastive 和 triplet 進步巨大,其中一個原因是這些工作在引用這倆經典時,引了一些它倆很差的數據,而它倆效果差的原因是諸如構造 pairs/triplets 的方法不夠好、超參沒調好這些原因。作者認爲這些超參帶來效果不能直接算作算法的效果(2.1 節),引別的算法一個差的效果來映襯自己算法的效果不合理,還暗示人們應該自己試着重新實現別人的 loss 並調出一個好結果來作爲一個合理的 baseline。
他自己好像就是這麼做的,於是有了 Fig.4 (b) 和 Fig.5 (b),原本在 Fig.4 (a) 和 Fig.5 (a) 中看起來比倆經典有很大提升的王者們,變成了…白銀?
這點是我覺得最硬核的一點,太剛了。
References
- (paper)A Metric Learning Reality Check
- (code)KevinMusgrave/powerful-benchmarker
- (author)Kevin Musgrave
- 如何理解與看待在cvpr2020中提出的circle loss?
- Dimensionality reduction by learning an invariant mapping
- Distance Metric Learning for Large Margin Nearest Neighbor Classification
- Deep Metric Learning with Angular Loss
- Sampling matters in deep embedding learning
- Deep metric learning via lifted structured feature embedding
- Improved deep metric learning with multi-class n-pair loss objective
- Multi-Similarity Loss With General Pair Weighting for Deep Metric Learning
- Deep Metric Learning With Tuplet Margin Loss
- Deep Metric Learning to Rank
- No Fuss Distance Metric Learning Using Proxies
- SoftTriple Loss: Deep Metric Learning Without Triplet Sampling