日本在线看黄a美女久草|日本动漫亚洲在线一区|日韩人妻无码免费视频|A√有码中文字幕|日韩一级片视频热久久久|一区二区三区四区精品无码在线|亚洲AV成人无码一二三app|亚洲综合图片绯色|91极品人妻在线网站|国产成人精品一区二三区四区五区

您正在使用IE低版瀏覽器,為了您的雷峰網賬號安全和更好的產品體驗,強烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預覽,將在時失效
人工智能開發(fā)者 正文
發(fā)私信給skura
發(fā)送

0

用正確方法對度量學習算法進行基準測試

本文作者: skura 2019-12-21 20:44
導語:保持盡可能多的參數(shù)不變是很重要的

典型的度量學習論文會提出一個新的損失函數(shù)或訓練過程,然后在一些數(shù)據集上顯示結果,如 CUB200、Stanford Cars 和 Stanford Online 產品。每隔幾個月,我們都會看到準確度有所提高。

這真的是太好了,但有幾點要注意。

用正確方法對度量學習算法進行基準測試

這里有一張隨機圖

有些論文對比對象不一致

為了說明一種新的算法優(yōu)于現(xiàn)有的方法,保持盡可能多的參數(shù)不變是很重要的。這樣,我們可以確定是新算法提高了性能,而不是一個無關的參數(shù)提高了性能。但是在基準度量學習論文中并非如此:

1.網絡架構并沒有保持不變。有些論文用 GoogleNet,而最近的許多論文都在使用 BN-Inception,有時被稱為 batch 標準化的開端「Inception with Batch Normalization」。2017 年一篇被廣泛引用的論文使用 ResNet50,然后聲稱獲得了巨大的性能提升。這是值得懷疑的,因為與之對比的方法使用的是 GoogleNet,這是一個不太強大的架構。因此,大部分性能提升可能來自網絡架構的選擇,而不是他們提出的方法。

2.圖像增強并沒有保持不變。大多數(shù)論文聲稱應用以下變換:將圖像大小調整為 256 x 256,隨機裁剪為 227 x 227,并以 50% 的幾率進行水平翻轉。但最近一些論文的官方開源實現(xiàn)表明,他們實際上使用的是 GoogleNet 論文中描述的更復雜的裁剪方法(見「訓練方法」)。

3.性能提升技巧在論文中沒有提及。在最近一篇 2019 年論文的官方開源代碼中,主干模型的 BatchNorm 參數(shù)在訓練期間被凍結。作者解釋說,這有助于減少過度擬合,讓 CUB200 數(shù)據集的性能提高 2 個點。但他們的論文中并沒有提到這一點。

用正確方法對度量學習算法進行基準測試

在 ImageNet 上預先訓練的模型的準確性。使用 PCA 將輸出嵌入大小減少到 512。對于每個圖像,較小的邊被縮放到 256,然后中心裁剪到 227x227。

大多數(shù)論文使用的是簡單的訓練/測試拆分

他們對一部分數(shù)據進行訓練,找到在測試集上表現(xiàn)最好的模型,并報告這個數(shù)字。換句話說,它們不使用驗證集。因此,超參數(shù)被調整,整個算法都是由測試集的直接反饋創(chuàng)建的。這打破了 Machine Learning 101 的最基本規(guī)則。此外,同一個模型訓練/測試分離的方法已使用多年。隨著時間的推移,這兩個因素可能會導致測試集的過度擬合。

所以讓我們正確地對這些算法進行基準測試

這就是強大的基準測試被用到的地方。

用正確方法對度量學習算法進行基準測試

為什么要用這個工具?

透明性。你運行的每個實驗都附帶了詳細的配置文件,這些文件精確地顯示了使用了哪些模型、損失、轉換等等。所以現(xiàn)在我們可以公平地比較各種方法的優(yōu)缺點。

更好的性能衡量指標。使用比回憶更具信息性的指標。

用正確的方法測量精度。在多個基于類的訓練/val/測試分段上測量精度?;蛘吣憧梢允褂门f的 50/50 訓練/測試拆分進行比較。

保存詳細的記錄。在 Tensorboard 上查看有關訓練過程的深入信息。

配置文件的靈活性。通過配置文件控制實驗的大部分標準。通過合并現(xiàn)有的配置文件來擴展現(xiàn)有配置文件。下面是如何指定模型的示例:

models:

        trunk:

              bninception:

                     pretrained: imagenet

       embedder:

              MLP:

                     layer_sizes:

                            - 512

下面是如何合并 3 個配置文件的方法:

python run.py \

--experiment_name test \

--config_general default daml train_with_classifier

加大命令行的靈活性。使用標準 Python 字典表示法指定復雜配置選項:

python run.py \

--experiment_name test \

--optimizers {metric_loss_optimizer: {SGD: {lr: 0.01}}}

更多詳情,請查看相關 github 項目:https://github.com/KevinMusgrave/powerful_benchmarker#override-config-options-at-the-command-line 

算法的靈活性。混合匹配損失、函數(shù)、采樣器和訓練方法。要使用硬批處理的多相似性損失?沒問題:

loss_funcs:

        metric_loss:

              MultiSimilarityLoss:

                     alpha: 0.1

                     beta: 40

                     base: 0.5


mining_funcs:

       post_gradient_miner:

              BatchHardMiner: {}

訪問 torchvision 和 pretrainedmodels 包中的所有模型。在配置模型文件中,只需指定出現(xiàn)在 torchvision 或 pretrainedmodels 中的函數(shù)名。

獲取 torch.nn 和 pytorch_metric_learning 中的所有損失。在 config_loss_and_miners 文件中,只需指定出現(xiàn)在 torch.nn 或 pytorch_metric_learning 中的類名。

它真的有用嗎?

下表是在 CVPR 2019 和 ICCV2019 上發(fā)表的一系列度量學習論文的結果。每種顏色代表不同的模型和嵌入大小配置。由于沒有標準的實驗方法,很難比較各種算法的性能。這阻礙了研究進展,因為我們不知道哪種方法最有效。因此,重要的是要有一個基準工具,使我們能夠做公平的比較。

用正確方法對度量學習算法進行基準測試

綠色:BN-Inception,512;藍色:Blue: Resnet50, 128;黃色:Resnet50, 512;紅色:GoogleNet, 512。前 8 行的數(shù)字來自各自的論文。

要查看這些實驗和其他實驗的配置文件,請參閱此電子表格,我將隨時間添加到其中:https://docs.google.com/spreadsheets/d/1kiJ5rKmneQvnYKpVO9vBFdMDNx-yLcXV2wbDXlb-SB8/edit?usp=sharing 

表格的底部是使用基準測試工具獲得的結果。 triplet loss 和 contrastive loss 都接近最新水平。然而,這兩種方法常常被排除在結果表之外,或者被認為是性能最差的方法之一。強大的基準測試程序使檢查這些基準算法變得容易。

寫在最后

你對這個工具的看法和度量學習的現(xiàn)狀怎么看?如果你有任何問題或想添加某些功能,請訪問 GitHub repos 以了解強大的 powerful_benchmarker pytorch_metric_learning 。

via:https://medium.com/@tkm45/benchmarking-metric-learning-algorithms-the-right-way-90c073a83968

雷鋒網雷鋒網雷鋒網

雷峰網版權文章,未經授權禁止轉載。詳情見轉載須知

用正確方法對度量學習算法進行基準測試

分享:
相關文章
當月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經綁定,現(xiàn)在您可以設置密碼以方便用郵箱登錄
立即設置 以后再說