Machine-Learning

機器學習模型的“容量”是多少?

  • November 7, 2017

我正在研究Carl Doersch 的變分自動編碼器教程。在第二頁中,它指出:

最流行的此類框架之一是變分自動編碼器 [1, 3],這是本教程的主題。該模型的假設很弱,並且通過反向傳播進行快速訓練。VAE 確實進行了近似,但這種近似引入的誤差可以說是在高容量模型的情況下很小。這些特點促成了它們的迅速普及。

我過去讀過這些關於高容量模型的聲明,但我似乎沒有找到任何明確的定義。我還發現了這個相關的 stackoverflow 問題,但對我來說答案非常不令人滿意。

模型的容量是否有定義?你能測量它嗎?

容量是一個非正式的術語。它與模型複雜性非常接近(如果不是同義詞)。這是一種談論模型可以表達的模式或關係有多複雜的方式。與容量較低的模型相比,您可以期望容量較高的模型能夠對更多變量之間的更多關係進行建模。

從容量的通俗定義中進行類比,您可以將其視為模型從越來越多的數據中學習的能力,直到它完全被信息“填滿”。

有多種方法可以形式化容量並為其計算數值,但重要的是,這些只是容量的一些可能的“操作化”(就像如果有人想出一個計算美的公式,你會意識到這個公式只是對美的一種錯誤解釋)。


VC 維度是容量的數學上嚴格的表述。但是,模型的 VC 維度與模型擬合數據的實際能力之間可能存在很大差距。儘管知道 VC dim 可以限制模型的泛化誤差,但這通常過於鬆散,無法用於神經網絡。

此處看到的另一項研究是使用神經網絡中權重矩陣的譜範數作為容量的度量。理解這一點的一種方法是頻譜範數限制了網絡的 Lipschitz 常數。

估計模型容量的最常見方法是計算參數的數量。參數越多,一般容量就越高。當然,通常較小的網絡比較大的網絡能更好地學習建模更複雜的數據,因此這種度量也遠非完美。

衡量容量的另一種方法可能是使用隨機標籤訓練模型(Neyshabur 等人)——如果您的網絡能夠正確記住一堆輸入以及隨機標籤,它本質上表明該模型有能力記住所有這些數據點單獨。可以“學習”的輸入/輸出對越多,容量就越高。

將此調整為自動編碼器,您可能會生成隨機輸入,訓練網絡以重建它們,然後計算您可以成功重建的隨機輸入數量少於 $ \epsilon $ 錯誤。

引用自:https://stats.stackexchange.com/questions/312424

comments powered by Disqus