Google Brain解釋了為什麼標籤平滑有用以及什麼時候使用它

編譯:ronghuaiyang

導讀

標籤平滑算是一種常規技術了,但是這背後的原理不知道大家有沒有深究過,Google brain給出了他們的解釋,並給出了一些使用它的SOTA的建議。

來自谷歌 Brain 的 Hinton, Muller 和 Cornblith 發表了一篇題為“When does label smoothing help?”的新論文,深入研究了標籤平滑如何影響深度神經網絡的最終激活層。他們建立了一種新的可視化方法來闡明標籤平滑的內部效果,並對其內部工作原理提供了新的見解。標籤平滑經常被使用,本文解釋了為什麼和標籤平滑如何影響神經網絡,以及何時使用,何時不使用的有價值的洞見。

Google Brain解釋了為什麼標籤平滑有用以及什麼時候使用它

使用了標籤平滑在廣泛的深度學習模型中都有提升。

這篇文章是對論文觀點的總結,幫助你快速地利用這些發現來進行自己的深度學習工作。建議對全文進行深入分析。

什麼是標籤平滑?

標籤平滑是一種損失函數的修正,已被證明是非常有效的訓練深度學習網絡的方法。標籤平滑提高了圖像分類、翻譯甚至語音識別的準確性。我們的團隊用它來打破許多 FastAI 排行榜記錄:

Google Brain解釋了為什麼標籤平滑有用以及什麼時候使用它

在我們的FastAI訓練代碼中調用了標籤平滑

簡單的解釋是,它將神經網絡的訓練目標從“1”調整為“1-label smoothing adjustment”,這意味著神經網絡被訓練得對自己的答案不那麼自信。默認值通常是 0.1,這意味著目標答案是 0.9(1 - 0.1)而不是 1。

例如:假設我們要將圖像分類為狗和貓。如果我們看到一張狗的照片,我們訓練 NN(通過交叉熵損失)向 1 表示狗,0 表示貓的方向移動。如果是一隻貓,我們訓練的方向正好相反,1 代表貓,0 代表狗。換句話說,這是一個 binary 或者說“hard”的答案。

然而,NN 有一個壞習慣,就是在訓練過程中對預測變得“過於自信”,這可能會降低它們的泛化能力,從而在新的、看不見的未來數據上表現得同樣出色。此外,大型數據集通常會包含標籤錯誤的數據,這意味著神經網絡在本質上應該對“正確答案”持懷疑態度,以減少一定程度上圍繞錯誤答案的極端情況下的建模。

因此,標籤平滑所做的就是通過訓練 NN 向“1-adjustment”目標移動,然後在其餘的類上除以這個 adjustment,從而使它對自己的答案不那麼自信,而不是簡單的設為 1。

對於我們的二分類貓/狗示例,0.1 的標籤平滑意味著目標答案將是 0.90(90%確信)這是一個狗的圖像,而 0.10(10%確信)這是一隻貓,而不是先前的向 1 或 0 移動的結果。由於不太確定,它作為一種正則化形式,提高了它對新數據的預測能力。

可以看到,代碼中的標籤平滑有助於理解它如何比通常的數學運算更好地工作(來自 FastAI github)。ε 是標籤平滑調整因子:

Google Brain解釋了為什麼標籤平滑有用以及什麼時候使用它

標籤平滑的FastAI實現

標籤平滑對神經網絡的影響

現在我們進入文章的核心部分,直觀地展示標籤平滑對神經網絡分類處理的影響。

首先,AlexNet 在訓練中對“飛機、汽車和鳥類”進行分類。

Google Brain解釋了為什麼標籤平滑有用以及什麼時候使用它

驗證集上的表現:

Google Brain解釋了為什麼標籤平滑有用以及什麼時候使用它

你可以看到的,標籤平滑強制對分類進行更緊密的分組,同時強制在聚類之間進行更等距的間隔。

“河狸、海豚和水獺”的 ResNet 例子更能說明問題:

Google Brain解釋了為什麼標籤平滑有用以及什麼時候使用它

ResNet訓練用於分類3個圖像類別…請注意在聚類緊密性方面的巨大差異

Google Brain解釋了為什麼標籤平滑有用以及什麼時候使用它

ResNet驗證集結果,標籤平滑提高了最終的精度。請注意,在訓練中,標籤平滑會將激活值驅動到緊密的簇中,而在驗證集中,它會在中心周圍傳播,並充分覆蓋了預測的置信度範圍

正如圖像所顯示的,標籤平滑為最終的激活產生了更緊密的聚類和更大的類別間的分離。

這是為什麼標籤平滑可以產生更多的正則化和魯棒的神經網絡的主要原因,重要的是趨向於更好地泛化未來的數據。然而,除了得到了更好的激活值的中心,還有額外的好處。

標籤平滑的隱式網絡校正功能

在本文中,Hinton 等人從可視化過程出發,展示瞭如何在不需要手動調節溫度的情況下,自動校準網絡,減少網絡校準誤差。

以前的研究(Guo et al)表明,神經網絡常常過於自信,相對於它們的真實準確性校準得很差。為了證明這一點,Guo 等人開發了一種名為 ECE(預期校準誤差)的校準度量。通過使用這種度量方法,他們能夠使用一種稱為溫度縮放的訓練後的修改器來調整給定神經網絡的校準值,並使網絡更好地與它的真實能力保持一致(減少 ECE),從而提高最終精度。(在傳遞給 softmax 函數之前,通過將最終 logits 與溫度標量相乘來執行溫度縮放)。

這篇論文展示了一些例子,但是最好的例子是在 ImageNet 上使用和不使用標籤平滑訓練的 ResNet,並將這兩個網絡與溫度調整網絡進行了比較。

Google Brain解釋了為什麼標籤平滑有用以及什麼時候使用它

與未校準的網絡相比,標籤平滑極大地提高了置信度/準確率。其結果幾乎與使用溫度縮放進行手動調節相同。

正如你所看到的,使用標籤平滑訓練產生的網絡具有更好的 ECE(預期校準誤差),更簡單地說,相對於它自己的精度有一個更理想的置信度。

實際上,經過平滑處理的標籤網絡並不是“過於自信”的,因此應該能夠在未來的真實數據上進行泛化並表現得更好。

知識蒸餾(什麼時候不使用標籤平滑)

論文的最後一部分討論了這樣一個發現,即儘管標籤平滑可以產生用於各種任務的改進的神經網絡……如果最終的模型將作為其他“學生”網絡的老師,那麼它不應該被使用。

作者注意到,儘管使用標籤平滑化訓練提高了教師的最終準確性,但與使用“硬”目標訓練的教師相比,它未能向學生網絡傳遞足夠多的知識(沒有標籤平滑化)。


Google Brain解釋了為什麼標籤平滑有用以及什麼時候使用它

標籤平滑“擦除”了在hard目標訓練中保留的一些細節。這樣的泛化有利於教師網絡的性能,但是它傳遞給學生網絡的信息更少。

標籤平滑產生的模型是不好的教師模型的原因可以通過初始的可視化或多或少的表現出來。通過強制將最終的分類劃分為更緊密的集群,該網絡刪除了更多的細節,將重點放在類之間的核心區別上。

這種“舍入”有助於網絡更好地處理不可見數據。然而,丟失的信息最終會對它教授新學生模型的能力產生負面影響。

因此,準確性更高的老師並不能更好地向學生提煉信息。

總結

在幾乎所有的情況下,使用標籤平滑訓練可以產生更好的校準網絡,從而更好地泛化,最終對不可見的生產數據產生更準確的預測。因此,標籤平滑應該是大多數深度學習訓練的一部分。然而,有一種情況是,它對構建將來作為教師的網絡沒有用處,hard 目標訓練將產生一個更好的教師神經網絡。

英文原文:https://medium.com/@lessw/label-smoothing-deep-learning-google-brain-explains-why-it-works-and-when-to-use-sota-tips-977733ef020


分享到:


相關文章: