尋找全局最小值和防止過擬合之間是不是矛盾的?
尋找全局最小值和防止過擬合不是一個緯度的問題。
尋找全局最小值是優化過程,也就是模型選定了,目標函數確定了,用訓練數據來求解模型參數的過程。
過擬合或欠擬合,指的是模型與數據集的關係,也就是模型對數據集分布的assumption是否跟數據集真實分布相符(例如數據集是一次函數的採樣點,而建模時我們選了一個二次函數),訓練數據集是否與模型複雜度相匹配等等(例如數據集是一元二次函數的採樣點,但是訓練數據集中只有兩個樣本點)。
舉個極端的例子,如果選擇的模型跟數據集是完美匹配的,而且在優化過程你尋找到最優解,那麼你在訓練集和測試集上的準確率就都是100%。
題主把這兩個問題混在了一起,應該是被「early stop是一種解決過擬合問題的手段」給弄迷糊了。
據我所知,early stop來解決過擬合問題應該主要在深度學習中用得比較多,這種思路的assumption就是你所用的模型跟數據集是不匹配的,模型的複雜度太高,在優化時如果你尋找到了最優解,這個最優解很大幾率是過擬合的。
early stop其實可以看做是一種模型選擇的方法,在訓練的過程中會產生一系列模型,選擇在這系列模型在驗證集上的表現最好的模型作為最後的模型。
用early stop解決過擬合是一種偏工程的思路。我很驚訝評論里很多反對數據同分布這句話。這句話本身就是統計和ML的公理,所有的模型演算法都是在這個假設的基礎上才有意義。就像數學的公理一樣,爭論公理對不對本身就沒意義。如果說你的數據不是同分布的,that"s fine。那麼在你使用所有的ML和stat技術時,依賴的只有luck,沒有任何理論保證你做的事情有意義。任何靠譜點ML書或者stat書第一章就會講這個(最多第二章),如果沒講,那麼換一本吧。
-----------------------------------------原答案----------------------------
我也來反對所有答案。全不全局最優和過不過擬合本質上一毛錢關係都沒有。
王贇 Maigo的答案中說「過擬合產生的原因,是訓練數據、測試數據,以及抽象的「數據總體」分布不一致,導致在這些數據上損失函數的形狀的細節不一致」
這個說法是錯的。訓練數據和測試數據肯定是同分布的。即便是用很差或者過強的分布來fit數據,也總可以得到非過擬合的結果,關鍵是你fit的什麼target。比如你擬合一個簡單的高斯數據,你優化VB target,用inifinite GMM也不會過擬合。
導致是不是過擬合是由於優化目標造成的。當設計好target後,優化方法的目的永遠都是得到越優的答案越好。
Frequentist的target本質上就傾向過擬合,regularization是把過擬合的target盡量往簡單的模型方向拉。Variational Bayesian永遠不會過擬合只會欠擬合。所以放心的使勁優化就行了。
至於early stopping,這個技術就是個錯錯蒙對了的一種方法。就好像說,我們先往錯的方向走,然後我們再偷點懶我們就對了.....你覺得靠譜么?
early stopping依賴於優化演算法的optimization path。假設一個優化目標全局最優是個過擬合解,而好的解在一個優化演算法的optimization path上,那麼early stopping碰巧能work,但是也沒有任何依據來指導你什麼時候stop。對於同一個優化目標,用另一個演算法優化,而好的解不在path上,無論你怎麼stop也沒鳥用。
當然能導出某些特殊情況early stopping等價於regularization,那你幹嘛不直接regularization。
結論就是設計演算法過程應該是設計好的optimization target,然後用最強的優化演算法盡量得到最優。並不是設計一個爛目標,然後我們再嘗試著用爛優化,即所謂的early stopping,得到好結果也是蒙的。
同意@陳默的觀點。會不會過擬合本質上取決於優化目標的選取是不是正確。會產生這種矛盾感的原因在於,實際我們選擇的優化目標(比如最小化training loss)出於很多原因(數據有雜訊,模型太複雜…),往往並不正確。將不正確的目標干到最優(i.e. 取全局最小值)就會讓學出來的模型過分擬合到訓練數據而不是背後的分布上,故而會對泛化性能造成一定的影響。
所以很多防止過擬合的手段,可以看作是在將現有的優化目標向更正確的方向做矯正。比如在loss上加regularization,就是在限制模型的複雜程度,將優化目標從單純的降低training loss調整為用更簡單的模型取得盡量低的training loss。過擬合是模型太複雜,而可用的數據量小。
尋找全局最小值本身沒錯。
你的問題把優化問題和泛化問題對立起來是不對的。另外,現實中的訓練數據集永遠都是從想學習的分布中有限採樣的。因此,我的觀點是不管你有多少數據,你的模型採用什麼方法對抗過擬合,你的模型必然是過擬合的。各種對抗過擬合的手段和更多的數據只是減輕你過擬合的程度而已。
反對陳默和mileistone的高票回答。
mileistone說如果模型和數據集完美匹配,解出最優就是完美解。事實上這是不對的,關鍵點在於雜訊是最終習得的模型有過擬合現象的一個很主要的原因,這是難以避免的,也是尋找全局最小值和防止過擬合之間出現矛盾的主要原因。
舉個例子大家就明白了,我們研究一些來自一個一元一次方程的數據點: y = 2 * x + 3 ,這些y在觀測時受到一些高斯雜訊的影響 y_o = y + N(0, 1),這個問題和最簡單的 y = a * x + b 的線性回歸完美契合,是完全遵循模型建模假設構建的數據。也相信是大多數人開始機器學習時最早學的東西。
隨便寫個程序,模擬一個100個點的數據,a 算出來 2.0031183306114526,b算出來2.9109819716202736。我們知道這個結果過擬合了,這和我們已知的真實分布2和3並不一樣。為什麼?很簡單,模型學習到了一些和真實分布不一樣的東西,那就是雜訊。
因為在現實生活中雜訊總是存在,所以對觀察到的有限數據建模設立損失函數並尋找其上的全局最小值,往往與防止過擬合是矛盾的,特別是模型的自由度大於實際問題所需的時候且數據中雜訊較多的時候,這些多的自由度很大程度上會被用來學習數據中的雜訊,以得到訓練數據上的最優解。一般解決辦法有兩種:
- 減少模型自由度,比如regularization,比如dropout。(再比如在我之前舉的例子里,採取小學生策略,答案必是整數策略。就可以得到2和3兩個正解。)
- 雜訊一般比我們想要的特徵更難習得,因為雜訊隨機性更高,更難預測,那麼在習得它之前停止學習,比如early stop,比如決策樹減枝,等等。
綜上所述,什麼只要搞定最優化目標模型就不會過擬合這事大多數現實情況下是不存在的。由於我們只能得到部分樣本,樣本中必然帶有雜訊,雜訊又天生難以和有效信息分開,那麼全局最優和防止過擬合就是很容易產生矛盾的。這個矛盾來自於模型取得全局最優時會學習雜訊中的信息導致的。
最後針對題主的問題,如果只有一個數據集,在上面做最優化,我們是很難知道哪部分是有效信息,哪部分是雜訊,模型學到什麼程度了的。這個時候就努力先把損失降下去,在其他數據集上發現過擬合現象了,再想辦法。過擬合總比欠擬合好解決。
import numpy as np
from scipy import statssize = 100
x = np.arange(0, size , 1, dtype=np.float)
y_t = 2 * x + 3
y = y_t + np.random.normal(0, 1, size)
stats.linregress(x,y)
這兩個有毛的關係。尋找全局最小值,首先得有最小值,其次得有能獲得最小值的方法,最後才是獲得最小值。防止過擬合是指得到的模型對訓練集擬合度過高,導致對訓練集以外的樣例的判別性很差。也就是傳說中的話不要說太滿,容易打臉。這兩個同時存在,防止過擬合的情況下也需要找全局最小值,只不過優化目標變成了加正則或泛化項的最小值。這個和sgd又是另一種關係吧?沒有一個答案寫到bias variance tradeoff的我也是醉了,大家都不看葵花寶典PRML了嗎?
機器學習就是瞎雞巴搞,沒有完美的數據你怎麼測得出來是過擬和還是欠擬和,抑或有了完美的數據你還要模型做甚,你都自己可以作為一個完美的模型了過擬合產生的原因,是訓練數據、測試數據,以及抽象的「數據總體」分布不一致,導致在這些數據上損失函數的形狀的細節不一致。不過,這些損失函數的形狀總體上還是一致的。
那麼「尋找全局最小值」,也就有一個程度問題:如果是從一片不那麼深的大山谷跳到一片更深的大山谷,那就是好事。但如果是從一個小坑跳到另一個小坑,那就是過擬合了。
反對所有答案首先幾乎沒有優化演算法可以避免local minima只能避免鞍點
其次early stopping是可以等價正則項有人證明過ridge regression等價於early stopping所以找全局最小值和防止過擬合的確是需要一個balance……這方面還沒有很系統的工作如果有人能做一點我覺得是很好的,只是我覺得最後都會變到toy model上了,先說觀點:
這兩者其實不存在矛盾,只是當模型選取的不好時(模型複雜度相大於問題複雜度時),優化方法找到的局部極值可能會導致比較嚴重的過擬合。
同意 @陳默 提到的機器學習是建立在訓練集和測試集同分布的假設的基礎上的。但即使訓練集和樣本集確實來自同分布同樣會存在過擬合的問題。一個簡單的例子是,針對真實模型是二次函數,單輸入單出的樣本,訓練集、測試集也都是來自二次函數時,如果用三次函數或者更高階的多項式函數作為模型時,就很容易產生過擬合,特別是數據量不夠大的時候。如果用一次函數來擬合,就會產生欠擬合(無論如何訓練都不會收斂到可觀的參數)
另外,DL模型基本上都沒有機會能夠找到全局最小值,能找到的最多也就是局部極值。找到局部極值當然對提升準確率是有利的,但是更關鍵的是模型的選取。只是由於現在DL模型都比較深,基本上稍微深一點的模型訓練後就很容易產生過擬合,另外DL模型也沒有很系統的針對數據建立合適的網路結構的討論,大家網路結構也基本上在跟著前輩大神們的腳步探索吧。
當然實際項目中也存在訓練集與測試集有較大偏差的情形,特別是數據標註不廉價,使用大量人工生成樣本或者實驗室樣本時,這種偏差就更嚴重了。這時候過擬合是一定存在的,如何提高模型泛化能力是更值得注意的地方。
學控制的有「建模與辨識」這樣的一門課程/問題,其實和機器學習里的參數尋優問題很像。只是本學渣已經忘光了,不敢多說妄語。就這樣
首先,兩者本質上並不矛盾。
簡單地想,存不存在訓練集loss優化到最小值,同時又不過擬合的情況呢?當訓練集的數據足夠體現你所尋找的規律的時候,這種情況是存在的。但是當訓練集不夠充分,難以僅僅從中就抽取出足夠規律的時候,對訓練集loss優化到最小可能並不是你真正關心的問題的最優解,因此就會過擬合。
但任何模型和優化演算法的訓練過程都是在尋求 最小化訓練集的loss 這個問題的最優解,那麼,數據不夠時,這個問題和你追求的目標問題並不一致,因此往往就和防止過擬合就產生了矛盾。
由於希望模型在數據不足以展現本質規律的時候猜出一個更普適的解,這個問題本質上是無解的,所以手段往往十分粗糙,看上去很魔法,效果也並不理想。我的理解是:
過擬合是模型相對於訓練數據來說太複雜了。要防止過擬合,要選用更簡單的模型(或增加訓練數據)。
而尋找全局最小值,是模型已經確定之後,來尋找最優的模型參數。
我想從貝葉斯的視角,試著分析一下這個問題。
假如我們要訓練的模型參數為w,用於訓練的樣本集是D。我們的求解目標是:
利用觀測到的樣本集合D去估計一個最可能的w,換句話說,求解的是 使p(w | D) 最大的w值。
根據貝葉斯公式,有:
p(w | D) = p(D | w) * p(w) / p(D)
上式中 分母 p(D)對於所有的w都一樣,因此只需要關注分子 p(D | w) * p(w) 。
尋找全局最小值:
確定了模型形式,去做最優化,相當於固定了p(w),去求解使得p(D | w) 最大的w。
但不同的w 對應的概率 p(w) 畢竟是不一樣的,因為求解目標與最終上面公式里分子項還是有gap的,因此求得的w不是對應最佳參數,會導致在測試或驗證集上效果不好。
防止過擬合:
確切的p(w)是沒法直接計算的,但還是可以設法把p(w)考慮進來。
例如,增加正則化項可以換個角度推導出來:
將最大化 p(D | w) * p(w) 轉化為 最大化其對數,即 log( p(D | w)) + log(p(w))。
前一項是對數似然值,後一項就可以看作正則項,例如 L2正則 對應於 w的概率分布服從一個以原點為均值的高斯分布。
不矛盾。個人理解如下:在設定目標函數的時候我們就已經假定了該目標函數到達全局最優時得到的權值對應的預測函數最符合數據集的分布情況。而過擬合的其中一個原因是目標函數陷入了局部最優值,所以有了early stopping這玩意,它是為了防止陷入局部最優的,而不是為了防止陷入全局最優。
第一件事情回答是否是矛盾的:
假設數據完備即擁有全部數據, (這裡以二次平方誤差為損失函數的神經網路為例子)達到最小,那麼在理論上分類誤差是可以到達貝葉斯誤差的.即神經網路的輸出是一個後驗概率.
具體證明:見模式分類第六章
所以可以得出結論:尋找全局最小值和防止過擬合之間不是矛盾的
第二件事,為什麼會過擬合:
大部分的統計學習方法,都是為了找到一個超平面 ,去區分數據,即使是神經網路也這個任務的(想想,神經網路最後一層是不是sigmod函數,是不是logistic回歸?)
在這個任務下,我可以把其認為是個線性回歸,即最優平面 的回歸,即
我們選用正規方程的方式去解這個 ,那麼方程就是 ,設 為 的矩陣
然而假設數據量較少, 那麼就會 (大於,或者遠遠大於),那麼這個方程就是欠定的
那麼解就是無限個,那麼如何確定最優的那個?
這就是一個問題,正則化理論是一個比較好的解決方法
但是,擴展能力如何,又是頭疼的問題.
想像一下SVM是不是一個,線性回歸,然後又加正則化的一個過程呢
所以,得出結論就是,過擬合是數據太少,而參數又太多,並非是全局最小點的問題
知其然之後,回想一下,為啥你會提出這個問題,大概就是,因為你只是知道正則化,而正則化表象可以防止到達最小點.但實際上,正則化可以有的時候可以達到一個稀疏解效果(壓縮感知),或者其他什麼的.具體理論參看 神經網路與機器學習 第七章
不矛盾,在Frequentist框架下,我們最希望的訓練其實是這種狀況:對不同的正則參數,每次都走到全局最小,然後根據交叉驗證表現在不同的參數里選一個表現最好的。
不矛盾。
不同的模型對樣本分布類型進行了不同的假設。
尋找全局最小值理應指該模型在其假設下找到和 樣本總體 誤差最小的近似分布。即我們要求 argmax loss(all)但由於種種限制 我們只能求 argmax loss(train)
這樣講應該就沒什麼分歧了
loss(all) ≈ loss( train ) + loss( all-train) &>= min{ loss(all) }
所以當loss(train)過低時 loss( all-train) 必然要上升的
防止過擬合的多種手段如早停
就是把驗證集誤差近似當成了當成了loss( all-train)
正則化權重懲罰等就是加了個先驗信息
減少參數的多種手段則即可避免由於參數空間過大而進入一些局部極小值 而且還可防止過擬合
總而言之這些都是尋找全局最優的一些手段
尋找全局最小值是在當前選擇的模型與數據集的基礎之上的,而過擬合是模型沒有很好的fit到數據整體的潛在分布而fit到了一些訓練集中對於模型沒有太大幫助的噪音。
並不是說不去尋找全局最小值就能避開過擬合從而很好的擬合到數據的潛在分布,是否會過擬合應該是模型與數據集本身的特點。
而且early stopping應該也是基於模型會優先擬合訓練集中的整體趨勢(有幫助)再擬合訓練集中的噪音(無幫助)這一假設之上的吧。
regularization能夠讓模型(僅)擬合數據的整體趨勢的價值,即對於cost function的減少程度,比擬合訓練集噪音的價值更高,從而避免過擬合。
用不同的模型以來應對不同的問題,就是為了能夠使得這個模型在找到訓練集全局最小值的時候fit到整體數據集的潛在分布吧。
推薦閱讀:
TAG:機器學習 | 神經網路 | 梯度下降 | 深度學習DeepLearning |