人工智慧的主題是學習, 從簡單的機器學習到深度學習, 我們始終在頭疼的一個事情就是過擬合。 對於過擬合, 我們有很多說法, 過擬合對應的是機器死記硬背, 沒有能夠舉一反三的情況。 關於什麼是泛化能力, 我們管它叫機器在新數據面前的預測水平。
用一個簡單的方法理解過擬合,如果你手中的數據有限,比如說星空裡觀測到的三個星星, 你可以想像出任何一個複雜的圖形穿過那三個點,也是你的想像力豐富多彩,你就可以做出越多這樣的圖形。事實上,我們知道這樣的想像不具備任何預測能力,如果天空中出現第四顆星,我們一定就不能確定它是否在該在的位置上。
過擬合的反面, 就是泛化, 應該說,它就是學習的本質。 否則, 整個機器學習就是一門擬合而已, 深度學習就是比較複雜的擬合。學習的最高境界,是在紛繁的現象裡總結出簡單的定理,比如看到大量物體運動的軌跡,總結出牛頓定律: F=ma . 但是它的預測能力幾乎是無限的。學習, 本來就是在總結規律, 而不是複製數據。
然而翻開機器學習的典籍,關於泛化和過擬合的理解,卻非常零碎,表面化。首先,我們回顧,我們看來自不同學派的不同觀點和做法:
1, 貝葉斯學派的最簡單模型: 學習是從先驗到後驗概率的轉化, 一個好的學習算法, 最重要的事情是用最少的假設,得到對數據出現最大概率的解釋 ,每多一個假設 ,整個觀測成立的概率就乘以一個小於1的因子, 假設解釋理論的概率迅速減少。 這個理念翻譯為白話就是「如無必須, 勿添實體」。 來自貝葉斯的一個直接方法論是引入最大後驗概率和正則化的概念, 貝葉斯派的核心觀點是我們需要簡單的模型。 模型的參數直接體現複雜度, 因此貝葉斯觀點下參數多而數據少, 就是過擬合的直接原因。
2, 幾何派機器學習的風險最小化: 泛化誤差的來源是數據的量不夠大, 新的沒有見過的數據代表著看不見的額風險, 因此我們要泛化風險最小化, 如果是一個分類問題, 意味著你要找一個分類界限,叫已知的數據點離分類邊界足夠遠, 這個想法, 就是maximum margin solution 支持向量機的源泉。
3, 統計機器學習的模型平均: 過擬合的源泉是數據量不夠大而模型的參數過多,引起對於數據集的輕微變化, 模型參數劇烈變化, 從而在測試集的表現就是高方差, 訓練集稍微一變,結果就變了。
那麼如何抵抗過擬合的一個方法就是做平均,每個模型假設可能會犯錯誤, 把它們平均起來減少了模型在新數據上的方差。 比如說我們最喜歡的決策樹, 我們如果把一棵樹變成一片森林, 過擬合的風險大大減少, 因此我們得到隨機森林。
3, 連接主義學派, 連接主義學派認為, 過擬合的風險來自於神經網絡具有無與倫比的擬合能力, 那麼如果要削弱過擬合的風險, 我們就加入一個東西, 叫dropout, 我們在訓練的時候隨機的篩選掉一些連接, 然後如果網絡還能做正確分類他就是具有魯棒性, 這就是連接主義的做法。
應該說,這些說法不僅有些雜亂,甚至某些時候是矛盾的。 如果仔細思考,我們會立刻發現下面幾個問題:
1,在機器學習時代,我們希望在同等數據下參數越少越好,而在深度學習時代 ,我們發現模型的範化能力隨著參數的增加而增加,層數多了,反而泛化誤差的能力更好。更有甚者, 深度學習動輒使用參數的數量大於數據的量,但是模型卻不會過擬合。
2,即使機器學習傳統的正則方法,也看起來矛盾重重,比如很多模型都沒有使得模型更簡單而是更複雜,卻同樣能夠減少範化誤差。
一種更好的理解方法是,機器學習裡說的泛化誤差和物理裡的熵最大有一種深刻的聯繫。如果有一個實際觀測,有一個模型空間, 這個模型空間的每個模型都代表著我們對真實數據生成過程的一種模擬。 那麼我們希望符合實際觀測的模型在這個模型空間裡越多越好,而不僅僅只有一個, 而且從符合觀測到不符合觀測的過度要比較均勻,這樣我們就可以從容的容納最多的隨機性,這樣找到的模型,也就是我們要的泛化能力最高的解。
簡單的來說,機器學習的過擬合, 根源於它是一種反向工程。 一組輸入, 經過真實世界的變化得到一組輸出,比如說人腦看到一個圖片就知道是個蘋果。機器只是得到了這些輸入和輸出,就要產生一個模型,跟那個真實世界的產生過程一樣。這其實是不可能的,頂多是類似。你所擁有的數據也僅僅是一些特例而已。我們的機器學習黑箱,無論如何學,只是提供可能的關係中的一個版本。你的訓練集上的準確度再高,這僅僅是一個巧合而已。 一個經常被用到的比喻就是,如果一個機器學習模型死記硬背的能力超強,它幾乎可以把所有的訓練集的標籤都記下來,然後一個不差的背出(想像一個神經元數量和數據量一樣多的神經網絡),但是只要數據哪怕改變一點點,它一定出錯。
那麼如何抵抗這樣的問題呢? 其實一個很好的方法就是讓這個求得的解不那麼湊巧。假如你用不同的方法改變你的數據集, 最終得到的結果是一致的。當年的機器學習經典教材裡管這個叫低方差,就是說數據變一變, 結果不太變。 如果你一味追求低方差, 你會發現最後模型就傻了,所以,你還要權衡一下模型的準確度。
我們再看下物理裡熵的概念: 對於一個複雜的系統,比如一群分子,一個人群,你要測量其中的某個性質, 比如分子的動能, 人的身高, 這個東西首先具有的性質就是不確定性,由一個概率分布表達。熵用來衡量這個分布的不確定性大小。一個分布具有的可能性越多, 概率分布越均勻,熵就越大。 物理上一個系統往往趨於熵最大的狀態, 熵越高系統越穩定。但是真實情況下, 我們只關心在一定限制條件下的熵, 比如體積溫度壓強,這個時候熵不能隨意的增大而是受到限制條件的最大化, 我們通過在熵最大化公式裡引入拉格朗日乘子法解決這個問題,也就是受限條件下的最大化問題。
在同樣能擬合數據的情況下, 我們需要找到模型空間裡那個熵最大的解。 學習器永遠不是只有一組參數w,而是一個很多參數組成的空間。 每組參數代表一個假設。什麼是好的模型? 一方面你要能給我生成特別多不一樣的假設, 也就是模型的容量要足夠大, 足夠有層次(比如加入深度),這樣你具有足夠強的擬合能力。 另一方面, 要讓符合數據觀測的假設足夠多, 可能的分布足夠均勻, 這也正是熵最大的含義所在。 你找到的解不是那麼湊巧得到的, 也就是熵很大,最終, 你在這組解裡取一個平均,也就取得了泛化誤差最小的解。
一方面模型儘量複雜,一方面有大量行的通的解, 這樣就是最好的。 這就把那些特別複雜的模型從潘多拉的魔盒解放了出來。
用這樣的觀點來看,機器學習和深度學習不同視角下的正則化就不會那麼多矛盾:
1, 機器學習, 這個觀點在支持向量機算法上體現的淋漓盡致。所謂的max margin solution, 也就是最大間隔,也就是說這個時候兩組點之間的隔離帶最胖,兩組點被分的最開,這個時候,所有出於隔離帶裡的直線本質都可以把兩組點分開,如果一個直線代表模型的一種可能,這個時候就有最多的模型可以解釋數據,而我們選擇中央的那一條,是因為這個解是所有那些可能的解的平均,因而也就是最安全的。 我們最終把這個解釋為結構風險最小。
再看邏輯斯蒂回歸,整個邏輯斯蒂回歸都可以從熵最大裡面推出。事實上,通過交叉熵找到的最後的邏輯斯蒂回歸的解, 和支持向量機的解具有一致性。 我們的邏輯斯蒂回歸就是加了概率分布的最大間隔解。
2,關於一範數和二範數: 如果有一組數據x,y同時可以被模型w解釋,那麼我們偏好w較小的(這基於你假定預測數據的分布符合高斯)。 事實上如果你做一個統計實驗你會發現,w的模長越小,你在你選擇的解周圍就有越多差不多也符合觀測的解。 相反,如果你的w模長很大,你會發現,你稍微改變w以後, 模型的解釋力就很差了。 一範數的道理是類似的, 只不過你假定數據的分布符合拉普拉斯而非高斯分布,同時引入稀疏性。
3 進入到深度學習的世界, 我們看到之前說過的那個矛盾不見了, 因為,增加模型參數不再和過擬合有必然聯繫,增加模型參數只是增大了可能的模型空間。但是,如果這裡面有很多解是符合觀測的,那增大的模型空間不但不是詛咒,還是一種福祉。 比如如果你增加了很多層, 但是通過dropout這樣的隨機減枝操作,你的解不受影響,也就說明有大量的解都符合觀測, 也就是說這一組解其實都是泛化能力比較好的。
我們的網絡不是宇宙裡最特別的那個, 它只是無數個這樣的網絡裡的一元,而最後我們就把這些網絡做個平均就可以了, 這正是dropout的道理所在! 一個網絡越接近一個隨機的網絡, 越是在毫不刻意的情況下發現數據裡的規律, 就越有可能是泛化能力最好的模型。
再看各類隱式的防止過擬合的手段,比如隨機梯度下降,SGD, 隨機梯度下降是說每次取一個數據(或一個小批量數據), 由於取數據的這個過程是隨機的,帶來的參數改變的信息也就有限,也就是帶來一個噪聲。我們說,這個過程就像物理裡的含有一個漂移項的布朗運動,一方面它在往更正確的方向運動,一方面它也在做一個隨機遊走。Tshiby信息瓶頸的論文指出到了訓練後期,我們幾乎完全做的是一個隨機遊走(我們看到訓練誤差變化不大)。這件事和泛化的聯繫就很顯然了,一個隨機遊走的過程又不允許訓練誤差增大,那麼它只能尋找那個周圍有很大的自由度,或者說附近的解都比較正確的那個參數區域, 這就是泛化的根本。
4, 回看Tshiby的信息瓶頸理論,其實,它裡面有新意的東西已然不多了,它所說的,深度網絡實現一個信息壓縮,也就是一個降維的過程,它符合公式:
而在這其中, 我們也看到深度學習和傳統機器學習的潛在不同, 它出現了一個介導T, 也就是我們說的representation。 輸入信息X, 先被翻譯成表徵T, 再達到Y , 從T到Y的過程。
這裡說的是, 表徵就是被轉化出來的特徵T, 需要具有兩重性, 一方面, 它需要儘量少的含有X的信息, 另一方面, 它們需要儘量多的含有標籤Y的信息。
儘量少的含有X的信息, 也就是你要儘可能的不care X裡的變化。
如果對這個公式進行處理:
這裡的 H(T|H) 就是條件熵,數據本身分布的熵 H(X) 是先天確定的,那麼最小化互信息,就是最大化這個條件熵。也就回到了我們剛剛說的,要有儘可能多的模型符合觀測數據的同時保存對Y的預測力,也正是泛化的本質,也是深度學習模型能夠在變得越來越複雜的同時保有抵抗過擬合能力的關鍵。
作者簡介
作者許鐵, 法國巴黎高師物理碩士 ,以色列理工大學(以色列85%科技創業人才的搖籃, 計算機科學享譽全球)計算神經科學博士,巡洋艦科技有限公司創始人, 《機器學習與複雜系統》紙質書作者。曾在香港浸會大學非線性科學中心工作一年 ,萬門童校長好戰友。