一行代碼提升遷移性能

一行代碼提升遷移性能 | CVPR 2020

作者 | 崔書豪

本文首發於知乎

只需要一行代碼,立刻提升遷移性能。

這就是我們出的新方法:批量核範數最大化(Batch Nuclear-norm Maximization)。

一行代码提升迁移性能 | CVPR 2020

論文原址:https://arxiv.org/pdf/2003.12237.pdf

開源地址:https://github.com/cuishuhao/BNM

在發表在CVPR 2020 上的文章《Towards Discriminability and Diversity: Batch Nuclear-norm Maximization under Label Insufficient Situations》中,我們通過理論推導和分析,發現類別預測的判別性與多樣性同時指向批量響應矩陣的核範數,這樣就可以最大化批量核範數來提高遷移問題中目標域的性能。

在遷移任務中,目標域由於沒有標籤,常常導致分界面附近混淆較多的數據。而我們基於這一現象,分析了批量類別響應組成的批量矩陣A,並希望從判別性和遷移性進行優化。

  • 判別性

所謂判別性,指的是預測類別的過程是否堅定。比如對於二類問題的響應

  1. [0.9,0.1]判別性較高,

  2. [0.6,0.4]判別性較低。

常見的方法採用最小化熵來得到較高的判別性。我們發現矩陣A的F範數與熵有著相反的單調性,從而可以通過最大化A的F範數來提升判別性。

  • 多樣性

多樣性可以近似表達為批量矩陣中預測的類別數量,即預測的類別數量多則響應多樣性大。

考慮不同類別響應的線性相關性,如果兩個響應屬於不同類別,那麼響應會差別較大線性無關,如果屬於相同類別則近似線性相關。

  1. [0.9,0.1]與[0.1,0.9]線性無關,

  2. [0.9,0.1]與[0.8,0.2]近似線性相關。

那麼預測類別數也就是矩陣中最大的線性無關向量數,即矩陣的秩。

  • BNM

核範數是矩陣奇異值的和,在數學上有兩點結論

  1. 核範數與F範數相互限制界限,

  2. 核範數是矩陣秩的凸近似。

所以類別預測的判別性與多樣性同時指向矩陣的核範數,我們可以最大化矩陣核範數(BNM)來提升預測的性能。

一行代码提升迁移性能 | CVPR 2020

比如上圖中,如果使用熵最小化(EntMin)和BNM來優化,當熵相同的時候,使用BNM優化更容易使得核範數更大,從而正確預測綿羊的樣本(保障類別比重較少的數據有利於提高整體的多樣性)。

實現在常用的框架Pytorch與Tensorflow中,均可通過一行代碼實現BNM

Pytorch:

<code>L_BNM = - torch.norm(A,'nuc')/<code>

Tensorflow:

<code>L_BNM = -tf.reduce_sum(tf.svd(A, compute_uv = False))/<code>

應用

我們將BNM應用到三個標籤不足的場景中,半監督學習,領域適應和開放域物體識別。實驗表明,在半監督學習中可以提升現有方法,在領域適應中BNM約束明顯優於EntMin,並且單一的BNM約束可以達到與現有方法相近的性能,如下圖:

一行代码提升迁移性能 | CVPR 2020

在開放域物體識別中單一的BNM約束超過有著冗雜損失函數的UODTN,達到SOTA性能,如下圖:

一行代码提升迁移性能 | CVPR 2020

同時在開放域物體識別中,我們統計了隨機採樣的批量響應中未知類所佔比例,如圖:

一行代码提升迁移性能 | CVPR 2020

我們發現BNM確實可以保持未知類所佔比例,從而保障整體預測的類別數量與準確性,從而保持多樣性。

值得一提的是,我們的方法主要針對的是缺少標籤場景下分界面附近數據密度較大的問題,對於遷移相關的任務有著較為普遍的改善價值。

一行代码提升迁移性能 | CVPR 2020


分享到:


相關文章: