CVPR 2022詳解|重新挖掘logit蒸餾的潛力,曠視等開源解耦知識蒸餾DKD

語言: CN / TW / HK

↑ 點選 藍字  關注極市平臺

作者丨科技猛獸

編輯丨極市平臺

極市導讀

本文提出了一種十分新穎的觀點,即:輸出知識蒸餾的潛力其實還沒有得到完全開發。作者在本文中揭示出傳統知識蒸餾方法會自然地抑制 NCKD 的作用,因此限制了知識蒸餾的潛力和靈活性。本文進一步將 TCKD 和 NCKD 進行解耦,通過獨立的超引數控制二者的作用,得到的 DKD 蒸餾方法在一系列視覺任務上得到的明顯的效能提升。 >> 加入極市CV技術交流群,走在計算機視覺的最前沿

目錄

1 解耦知識蒸餾 (CVPR 2022)

(來自曠視科技,早稻田大學,清華大學)

1 DKD 原理分析

1.1 DKD 設計動機

1.2 重新思考知識蒸餾

1.3 兩部分的不同作用

1.4 解耦知識蒸餾

1.5 實驗結果

論文名稱:Decoupled Knowledge Distillation

論文地址:

https://arxiv.org/pdf/2203.08679.pdf

1 DKD 原理分析

1.1 DKD 設計動機

現代知識蒸餾方法大多數注重深層的中間特徵層面的知識蒸餾 (feature distillation),而對於相對而言比較原始的輸出層面的知識蒸餾 (logit distillation) 的研究,因為效能不如前者而相對被忽略。本文提出了一種十分新穎的觀點,即:輸出知識蒸餾的潛力其實還沒有得到完全開發。在本文中作者把 logit distillation 的輸出分為兩個部分,即: 目標類別知識蒸餾 (target class knowledge distillation, TCKD) 和 非目標類別知識蒸餾 (non-target class knowledge distillation, NCKD)。顧名思義,這兩個名詞的含義分別是指:對於模型輸出中目標類別的值和非目標類別的值分別進行蒸餾。作者在這篇文章中指出:TCKD 傳授給 "學生" 模型的知識是當前訓練樣本的難度,而 NCKD 才是知識蒸餾 work 的最主要原因。但是文章同樣指出:常規的 KD 方法會 "抑制" NCKD 的作用,並且限制這兩個部分的靈活度。因此本文提出將這兩個部分進行解耦,分別完成對應的知識蒸餾操作。

1.2 重新思考知識蒸餾

本部分將對知識蒸餾的表示式進行重新推導。對於任意的訓練樣本,假設其類別屬於第類,則其分類結果可以被寫成: 。其中, 為樣本的類別數, 為其屬於第 個類別的概率,通過 softmax 函式最終得到:

其中,代表第 個類別的 output logits。

作者接下來定義屬於目標類別的可能性引數,其中:

同時,定義為非目標類別的概率,就是在計算概率值時分母不包含第 個類別:

定義和 分別為學生和教師模型,知識蒸餾使用 KL-Divergence 作為目標函式:

根據上式1和上式3,有,所以上式4可以被重寫成:

根據上式5可以看到,知識蒸餾損失函式可以視為是兩部分 KL 散度之和:第1項是教師和學生模型關於目標類別二值概率的 KL 散度,稱為目標類別知識蒸餾 (TCKD)。第2項是教師和學生模型關於非目標類別的 KL 散度,稱為非目標類別知識蒸餾 (NCKD)。上式5可以被重寫成:

1.3 兩部分的不同作用

如下圖1所示是幾種不同的模型 (ResNet8×4,ShuffleNet-V1等) 使用不同的損失函式得到的精度。直觀上,TCKD 注重獲得與目標類別相關的知識,因為相應的損失函式只考慮二元概率。相反,NCKD 注重獲得非目標類別相關的知識。

圖1:CIFAR100 驗證集結果

注意到僅僅使用 TCKD 對模型效能的提升沒有幫助,甚至帶來效能的下降。NCKD 的蒸餾效能與經典 KD 相當,甚至更好 (例如,在 ResNet8×4 上為1.76%對1.13%)。針對這一實驗現象,作者給出了以下分析:

TCKD 傳遞關於訓練樣本 "難度" 的知識:

根據上式5的第1項,TCKD 通過二元知識蒸餾任務傳遞了一些 "dark knowledge",傳遞的知識是一個樣本的目標類別的概率值的大小。比如,一個的樣本比另外一個 的樣本更加 "容易"。當這個樣本的目標類別的概率值更小時,TCKD 會更加有效。因為 CIFAR-100 訓練集很容易擬合。因此,教師模型提供的 知識是沒有資訊量的。在這一部分,作者從三個角度進行了實驗來驗證:訓練資料越困難,TCKD 提供的幫助越大。

第一個角度是使用更強的資料增強手段。通過下圖2的實驗結果可以驗證。

圖2:更強的資料增強手段有助於提升 TCKD 的優勢

第二個角度是使用噪聲標籤。通過下圖3的實驗結果可以驗證。

圖3:噪聲標籤有助於提升 TCKD 的優勢

第二個角度是使用更有挑戰性的資料集。通過下圖4的實驗結果可以驗證。

圖4:更有挑戰性的資料集有助於提升 TCKD 的優勢

作者通過實驗各種策略來增加訓練資料的難度,從而證明了 TCKD 在訓練任務相對更困難時,使得蒸餾策略帶來的幫助更大。

NCKD 是知識蒸餾起作用的最主要原因,但是它會被極大程度地抑制:

通過圖1結果作者注意到,當僅應用 NCKD 時,實驗的效能與經典 KD 相當甚至更好。這表明非目標類之間的知識至關重要,是 KD 方法 work 的主要原因。但是根據上式7可以發現,NCKD 這一項會乘以一項,這使得 NCKD 會被極大程度地抑制,從而無法充分發揮 KD 方法的效能。

針對這一觀點作者做了個對比實驗:根據的大小將訓練樣本分為兩個子集,分別使用 NCKD 蒸餾在每個子集上進行訓練,實驗效果如下圖所示。可以發現, 普遍較大 (0-50%) 時,NCKD 帶來的效能增益就越多,證明 原本 NCKD 被抑制的程度越高。

圖5:p_t 普遍較大 (0-50%) 時,NCKD 帶來的效能增益就越多

1.4 解耦知識蒸餾

到目前為止,作者已經將經典的 KD 損失轉化為兩個獨立部分的加權和,並進一步驗證了 TCKD 的有效性,揭示了 NCKD 部分在正常使用 KD Loss 時會受到抑制。因此作者提出將這兩個部分進行解耦,具體方法如下圖6所示,虛擬碼如下圖7所示。

圖6:解耦知識蒸餾

DKD 方法將 TCKD 和 NCKD 部分分開,分別乘以兩個超引數和 ,損失函式為:

通過調節超引數和 ,可以減少 NCKD 被抑制的程度,從而更好地發掘 KD 的潛力。

DKD 方法虛擬碼為:

圖7:DKD 方法虛擬碼

1.5 實驗結果

作者在 CIFAR100 分類任務,ImageNet 分類任務,MS-COCO 目標檢測任務上分別進行了實驗。

CIFAR100 的實驗結果如下圖8所示。對於所有的教師-學生模型對,DKD 方法都獲得了效能的提升。此外,DKD實現了與基於特徵的蒸餾方法相當甚至更好的效能,顯著改善了蒸餾效能和訓練效率之間的平衡。

圖8:不同教師-學生模型對的 CIFAR100 分類任務實驗結果

ImageNet 的實驗結果如下圖9和圖10所示。DKD 方法獲得了顯著的效能提升,並且超過了一些基於特徵蒸餾的方法。

圖9:ResNet-34 作為教師,ResNet-18 作為學生模型的 ImageNet 分類任務實驗結果
圖10:ResNet-50 作為教師,MobileNet-V2 作為學生模型的 ImageNet 分類任務實驗結果

MS-COCO 目標檢測任務的實驗結果如下圖11所示。目標檢測任務的效能很大程度上取決於網路提取得到的深層特徵的質量。檢測模型特徵模擬至關重要,因為邏輯輸出不能為檢測模型提供知識。如下圖11所示,單獨應用DKD 很難實現出色的效能,但有望超過經典的 KD。因此,作者引入基於特徵的蒸餾方法 ReviewKD 以獲得滿意的結果。可以看出,即使 ReviewKD 的蒸餾效能相對較高,DKD 也可以進一步提高AP指標。總之,通過將 DKD 與基於特徵的提取方法結合在目標檢測任務,可以獲得更加出色的結果。

圖11:MS-COCO 目標檢測任務實驗結果

特徵視覺化

以 ResNet32x4 作為教師模型,ResNet8x4 作為學生模型,在 CIFAR100 資料集上的特徵視覺化結果如下圖12所示。t-SNE 結果顯示 DKD 的特徵表示比 KD 更易區分,證明 DKD 有利於深層特徵的可辨性。

圖12:特徵視覺化實驗結果

訓練效率比較

如下圖13所示為最先進的蒸餾方法的訓練成本,證明了 DKD 的高訓練效率。DKD 實現了模型效能和訓練成本 (例如,訓練時間和額外引數) 之間的最佳平衡。由於 DKD 是從經典的 KD 方法重新構造的,它只需要與 KD 幾乎相同的計算複雜度,當然沒有額外的引數。然而,基於特徵的提取方法需要額外的提取中間層特徵的訓練時間,以及 GPU 的儲存成本。

圖13:訓練效率比較

總結

本文提出了一種十分新穎的觀點,即:輸出知識蒸餾的潛力其實還沒有得到完全開發。在本文中作者把 logit distillation 的輸出分為兩個部分,即:目標類別知識蒸餾 (target class knowledge distillation, TCKD) 和非目標類別知識蒸餾 (non-target class knowledge distillation, NCKD)。顧名思義,這兩個名詞的含義分別是指:對於模型輸出中目標類別的值和非目標類別的值分別進行蒸餾。作者在本文中揭示出傳統知識蒸餾方法會自然地抑制 NCKD 的作用,因此限制了知識蒸餾的潛力和靈活性。本文進一步將 TCKD 和 NCKD 進行解耦,通過獨立的超引數控制二者的作用,得到的 DKD 蒸餾方法在一系列視覺任務上得到的明顯的效能提升。

公眾號後臺回覆“ 資料集 ”獲取90+深度學習資料集下載~

△點選卡片關注極市平臺,獲取 最新CV乾貨

極市乾貨

資料集資源彙總: 10個開源工業檢測資料集彙總 21個深度學習開源資料集分類彙總

演算法trick 目標檢測比賽中的tricks集錦 從39個kaggle競賽中總結出來的影象分割的Tips和Tricks

技術綜述: 一文弄懂各種loss function 工業影象異常檢測最新研究總結(2019-2020)

# 極市平臺簽約作者 #

科技猛獸

知乎:科技猛獸

清華大學自動化系19級碩士

研究領域:AI邊緣計算 (Efficient AI with Tiny Resource):專注模型壓縮,搜尋,量化,加速,加法網路,以及它們與其他任務的結合,更好地服務於端側裝置。

作品精選

搞懂 Vision Transformer 原理和程式碼,看這篇技術綜述就夠了

用Pytorch輕鬆實現28個視覺Transformer,開源庫 timm 瞭解一下!(附程式碼解讀)

輕量高效!清華智慧計算實驗室開源基於PyTorch的影片 (圖片) 去模糊框架SimDeblur

投稿方式:

新增小編微信Fengcall(微訊號:fengcall19),備註: 姓名-投稿

△長按新增極市平臺小編

覺得有用麻煩給個在看啦~