Yann LeCun, et al.
Links
- Paper: https://arxiv.org/abs/1906.00184
- Github: -
Introduction
本文將利用幾頁投影片快速簡介 A Tutorial on Energy-Based Learning 的部分內容理解,目的為記錄所學。
系統越穩定,能量越低;系統越不穩定,能量越高
在物理學中,能量最低的狀態認為是最穩定的,也可以認為是事物本來的狀態。那麼在圖型識別(Pattern Recognition)中可以這樣理解:把準則(判別函數)放在一個輸入和各個模式上,如果輸入在某個模式上的能量最小,就認為輸入屬於這個模式的可能性最大。
機器學習與能量模型
統計建模(Probabilistic Modeling)和機器學習(Machine Learning)的主要目的是描述變量之間的依賴關係。通過捕獲變量間的依賴關係,可以使用模型來推斷有關已知變數值的未知變數值的問題。而基於能量的模型(Energy-Based Model, EBM)通過將標量能量(方便理解,可以想成深度學習的標籤)與變數的每個配置(輸入的資料)相關聯來捕獲依賴關係。
掃地機器人的例子
考慮一掃地機器人左右各有一顆IR感測器,機器人根據這兩顆感測器的資訊分別決定左右馬達該正轉反轉,左邊感測器決定左邊馬達,右邊決定右邊馬達,最後進而達到控制機器人直走、左轉、右轉…。
從獨立的多能量模型到單一能量模型
對於單一系統執行決策任務(例如機器人根據一感測器資訊決定馬達該正轉反轉),系統僅需要提供最低的能量給正確的答案即可,而其他答案的能量就無關緊要(左邊感測器發現障礙物,所以左邊馬達停止),因為其他答案的能量很大。 然而,現實情況可能是一個系統的輸出必須與另一個系統的輸出結合,或回饋到另一個系統的輸入,這種期況下,每個可能的決策結果之間必須有關聯(左邊感測器發現障礙物,但右邊沒有,或許可以選擇左邊馬達前進,右邊馬達後退,使機器人向右旋轉避開障礙物,而不是只讓左邊馬達停止)。
然而,每個能量模型是未經校準的(即以任意單位測量),因此結合兩個分別訓練的能量模型其實並不容易,因為我們沒有先驗的資訊。我們的目標是將所有可能輸出的能量收集並轉換為一致的系統表述。
一種簡單的想法即是歸一化概率分佈(Normalized Probability Distribution)。
文中使用Gibbs distribution作為整合各能量模型的方法。當然文中也提到實現規一化的方法很多種,並不只有這種方式。以機器人為例,整合為單一能量模型可以理解為機器人根據兩顆感測器來決定兩顆馬達該如何協同運動,即將直走、左轉、右轉、停止等動作的決策任務整合在一起。此外,當單一能量模型表述為一機率分布後,分母項必須要能夠收斂。
讓我們考慮一個具有兩組變量X和Y的模型,如上圖所示。變量X可以是一個包含對像圖像中像素的向量。變量Y可以是代表對象可能類別的離散變量。
例如,Y可以採用六個可能的值:動物,人物,飛機,卡車,汽車和“以上皆非”。該模型被視為一個能量函數,用於度量X和Y每種可能匹配程度的“好”(或壞)。輸出可以解釋為X和Y值之間的兼容程度。
我們將使用將能量函數表示為E(Y, X),目標是將能量模型通過學習過程最小化損失函數。
Learning consists in finding an energy function that associates low energies to correct values of the remaining variables, and higher energies to incorrect values.
甚麼樣的損失函數是我們期望的? 還記得上面提到,在物理學中,系統越穩定,能量越低;系統越不穩定,能量越高。學習的目標是找到一個能量函式,將低能量與其餘變數的正確值相關聯,將高能量與不正確的值相關聯。
文內介紹了很多 Loss function,這裡就不提了。比較有興趣的是下面要介紹的負對數似然損失-Negative Log-Likelihood Loss
從推導說起,負對數似然損失的形式源於根據最大條件概率原理的學習問題的概率表述。給定訓練集S,我們必須找到給定訓練集中所有輸入的條件下使所有答案的條件概率最大化的參數值。 假設樣本間彼此獨立,我們使用 P(Y^i | X^i,W)表示由我們模型在參數W下產生的給定Xi的Y i的條件概率,則該模型下訓練集的條件概率是樣本上的連續乘積 :
我們要求得使上述乘積最大化的W,或使上述乘積的負對數最小的W:
複習一下Gibbs distribution:
將P(Y^i | X^i,W) 用 Gibbs distribution代入後,我們得到:
將上述表達式除以P和β:
注意求最小值對於乘除是沒有影響的。最後我們得到了負對數似然損失的最終形式。
負對數似然損失有我們要的特性嗎? 有的! 如上圖紅色框內,對正確答案的能量Push down,對所有能量Pull up(上圖綠色框)。然而,奇怪的是既然連正確答案的能量也被一併拉起? 沒錯,但是比起拉起的能量,往下推的能量更大!我們對負對數似然損失取W偏微分,可以發現第一項是正確答案下推得能量,而後面那一項則是所有可能答案的能量乘上Gibbs distribution,也就是說對於對於正確答案的拉起能量來說,他永遠乘上一個小於等於1的值。
注意的是,求解最後一項(配分函數)是棘手的!
原文內提到求解配分函數(Partition function)是棘手的,但是為什麼是棘手的呢? 他說難求解就真的難求解嗎? 上網找到了可能的解答,下面以一個小例子演示為何難以求解配分函數:
我們要訓練一影像分類器可以在ImageNet上很好的分出1000個類別,假設只有一個隨機變數作為模型參數 w={a}∈W,分類器可以想像成 y=ax,因此分配函數就是計算隨機變數a對應1000個類別的Exponential值。(解答中雖然以"機率值"陳述,但事實上計算配分函數就是要做Normalization,還沒規一化前當然沒有機率的意義)。
接著,若現在分類器 y=ax+b 有兩個隨機變量 w={a, b}∈W,則分配函數所求為聯合機率分布,也就是考慮所有隨機變量組合所構成的Exponential值。因此為求配分函數,就需要計算由1000*1000個數值所構成的向量。這時的計算量就會越來越大。
最後,考量訓練一深度學習模型,參數量都是幾(十、百)萬起跳,對於求解分配函數的可能性微乎其微。
In the case of NN + softmax, doing so multiple times for every training example does indeed become intractable.
Conclusion
非常經典的一篇文章,巧妙的結合系統能量與鑑別模型之間的關係,並描述如何透過學習方法建模這種關聯,對於基於能量模型在深度學習領域有很大的啟發。
P.S. Energy OOD 請忽略。
References: