成人av在线资源一区,亚洲av日韩av一区,欧美丰满熟妇乱XXXXX图片,狠狠做五月深爱婷婷伊人,桔子av一区二区三区,四虎国产精品永久在线网址,国产尤物精品人妻在线,中文字幕av一区二区三区欲色
    您正在使用IE低版瀏覽器,為了您的雷峰網賬號安全和更好的產品體驗,強烈建議使用更快更安全的瀏覽器
    此為臨時鏈接,僅用于文章預覽,將在時失效
    人工智能開發者 正文
    發私信給skura
    發送

    0

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

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

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

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

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

    這里有一張隨機圖

    有些論文對比對象不一致

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

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

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

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

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

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

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

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

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

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

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

    為什么要用這個工具?

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

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

    用正確的方法測量精度。在多個基于類的訓練/val/測試分段上測量精度。或者你可以使用舊的 50/50 訓練/測試拆分進行比較。

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

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

    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 

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

    loss_funcs:

            metric_loss:

                  MultiSimilarityLoss:

                         alpha: 0.1

                         beta: 40

                         base: 0.5


    mining_funcs:

           post_gradient_miner:

                  BatchHardMiner: {}

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

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

    它真的有用嗎?

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

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

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

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

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

    寫在最后

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

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

    雷鋒網雷鋒網雷鋒網

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

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

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