寫在前面

u1s1,在學習任何算法並嘗試復現的時候,最頭疼的不是寫模型架構,或是數據處理,而是在論文沒有明確具體參數的條件下,如何對關鍵方程進行調參,這個問題可能對於很多大佬來講是一件相對容易的事情,但是對於初涉人工智能的我而言,是一件很困難的工程。

有的時候以為按照論文說描述的流程以及限幅去調整瞭,但是仍然和實驗結果所描述的相差甚遠。此外,在閱讀論文的過程中,對於一些關鍵參數的理解同樣也是一件比較麻煩的事情,可能是積累還不夠,經驗不足的緣故,往往在學習如何調參上花費很多時間與精力,所以就打算記錄一些調研中比較有意思的參數意義,以及一些印象深刻的學習調參和實際進行調參的過程,也方便之後回顧。當然,有一些說法很可能不是很嚴謹,如果有大佬發現的話,也懇請能夠指點一波。

相關的參數解釋:

Temperature Parameter

對於這樣一個超參數,直譯為“溫度系數”,在很多任務中都可以看到,特別是計算機視覺的分類任務中,研究人員往往在 softmax 損失基礎上額外增加一個溫度系數 tau ,針對不同的任務,取不同的超參數值。

正如字面意義,假設該系數所參與的計算過程就是一個燒水的過程,溫度越高,水沸騰越劇烈,這就可以類比信息熵增減的過程,溫度系數越大,熵就越高,混亂程度越高,那麼 softmax 函數輸出的各類別概率差距會越來越小(因為差距越小那麼看出最優結果也就越困難,對應於熵越高),曲線也會愈發平滑。相反,溫度系數越小,函數曲線也會愈發陡峭。

圖中展示瞭不同溫度系數對NT-Xent loss的影響(L2正則先不看)標紅的這一列實際上已經可以清晰地看到溫度系數對熵的影響瞭。

好的,現在我們已經明確瞭溫度系數對信息熵,損失函數走向的影響,我們可以從這兩點出發,進一步理解溫度系數對模型收斂與訓練的影響。


從曲線走勢出發,我們可以將溫度系數取值設計類比成對結果的自信心大小:

  • 對於溫度系數大的情況(曲線變得平滑, tau> 1 ),說明我們目前對於算法的結果是不自信的,我們不相信當前的結果是最優的,所以我們通過添加大的溫度系數,將 softmax 輸出後的曲線變得平滑,那麼稍微陡峭的結果和不陡峭的結果所體現出來的效果是差別不大。因此如果我們想要明確獲得結果(肉眼可見的優秀),那麼就需要進行進一步的訓練,直到模型訓練得到一個非常陡峭的輸出,經過softmax之後才能獲得一個相對陡峭的結果。
  • 對於溫度系數小的情況(曲線變得陡峭, tau< 1 ),說明我們對於當前模型是很自信的,softmax會對上一步的輸入很敏感,本來一個稍微陡峭的結果都會經過損失函數之後變得非常陡峭(讓人一眼就看出來是最優秀的),也就是說模型變得更加敏感。因為我們的自信,那麼添加小的溫度系數來突出計算的優勢,就可以有效加快模型收斂速度。

粗糙鼠標意象繪圖)大概就那意思——添加溫度系數後的變化

以上也就是溫度系數對於我們模型計算與結果判定最直觀的效果。


那麼接下來這個效果如何應用比較合適,主要舉瞭兩個典型例子:知識蒸餾和對比學習。

  • 添加大溫度系數( tau> 1 ):知識蒸餾。

對於知識蒸餾,我們需要明確其常應用的teacher-student框架。知識蒸餾是為瞭節省計算資源,將原本的模型中比較“沒用”的參數給蒸發掉,本質上就是將原始數據集上訓練的重量級模型作為教師,然後取一個相對更輕量的模型作為學生,令學生輸出的概率分佈盡可能的逼近教師輸出的分佈,從而達到知識提純的目的。

那麼也由於蒸餾的本質是讓學生網絡去學習教師網絡的泛化能力,訓練好的模型本身會出現過度自信的問題,softmax輸出的概率分佈熵很小,換句話講,top k的優勢過於明顯。因此我們需要添加一個大的溫度系數,來令結果不那麼自信(也就是我們對當前結果不自信)。因此通過除以 tau> 1 來令分佈變得平滑,進而來令學生模型學到的結果更加準確。

  • 添加小(但是不能太小)溫度系數(tau< 1):對比學習。

對比學習從本質上講,以自監督學習為例,更多的是處理樣本正對與負對的問題,也就是令正對更近,負對更遠。典型的NCE損失:

mathcal{L} (x_{i})=-logleft [ frac{exp(s_{i,j}/tau )}{ {textstyle sum_{kne 1}exp(s_{i,k}/tau)+exp(s_{i,j}/tau )} } right ]

其中, s_{i,j}s_{i,k} 分別是正對和負對的相關度,實現瞭拉近正樣本,推遠負樣本的功能。

我們可以看到,這個式子的子項都會除以一個溫度系數 tau ,通常小於1。之所以 <1 的原因是:首先對比學習應用這種損失形式本身可以挖掘負樣本,經過softmax操作後,會給距離更近的負樣本更多的懲罰。那麼為瞭控制對困難樣本的懲罰程度,當 tau 越小,softmax就會越陡峭,輸出差異就被放得越大,那麼對困難負樣本的懲罰更大(loss更大)。如下圖所示。

那麼為什麼又說 tau 不能太小呢?

因為對於無監督學習的對比學習本身會遇到一種均勻性-容忍性困境:

  1. “均勻性”:小溫度系數更關註於將與本樣本相似的困難樣本分開,因此我們希望得到一個分佈均勻的表征空間,從而令負對更遠(上面筆記中的綜述提到這種表征或許是成功的關鍵)。所以說 tau應當小。
  2. “容忍性”:困難樣本往往是與本樣本相似程度較高的,舉個不恰當的例子,同類別的狗狗,但是薩摩耶和吉娃娃這兩種不同實例。那麼很多困難負樣本其實是潛在的正樣本,所以我們不能過度地分開“困難樣本”導致破壞潛在語義結構。所以說 tau 不能太小。

【2022.7.22記】