目錄
- 1.引言
- 2.泛化的定義
- 3.資料集分類
- 4.泛化能力分類
- 5.從訓練程序來理解泛化
- 參考資料
1.引言
什么是泛化呢?
先舉個栗子:
??小明和小李都上了高三,小明頭腦機靈,一邊刷著五年高考三年模擬一邊總結做題規律,而小李一門心思刷題,一套完了又一套,刷的試卷堆成山了卻沒有對錯題進行總結,高考結束成績公布,小明超出一本線幾十分,而小李卻勉強上了二本線,這是為什么呢?
??原來高考試題一般是新題,誰也沒做過,平時的刷題就是為了掌握試題的規律,能夠舉一反三、學以致用,這樣面對新題時也能從容應對,這種對規律的掌握便是泛化能力,
??在這個例子中,小明善于總結做題規律,可以說是他的泛化能力好;而小李只知道刷題卻沒有掌握做題規律,可以說是他的泛化能力差,
2.泛化的定義
??機器學習(深度學習)的根本問題是優化和泛化之間的對立,
??優化(optimization)是指調節模型以在訓練資料上得到最佳性能(即機器學習中的學習),而泛化(generalization)是指訓練好的模型在前所未見的資料上的性能好壞,
??機器學習的目的當然是得到良好的泛化,但你無法控制泛化,只能基于訓練資料調節模型,
對泛化能力可以從以下六個方面來理解:
泛化能力最直接的定義是訓練資料和真實資料間的差異,訓練模型的目地是要模型在完全陌生的資料上進行測驗的;
泛化能力還可以看成模型的稀疏性,正如奧卡姆的剪刀指出的,面對不同的解釋時,最簡單的解釋是最好的解釋,在機器學習中,具有泛化能力的模型中應該有很多引數是接近0的,而在深度學習中,則是待優化的矩陣應該對稀疏性有偏好性,
泛化能力的第三種解釋是生成模型中的高保真能力,具有泛化能力的模型應在其每個抽象層次具有重構特征的能力,
第四種解釋是模型能夠有效的忽視瑣碎的特征,或者說在無關的變化下都能找到相同的特征,
泛化能力還可以看成模型的資訊壓縮能力,
??這里涉及到解釋為什么深度學習有效的一種假說,資訊瓶頸(information bottleneck),說的是一個模型對特征進行壓縮(降維)的能力越強,其就越更大的可能性做出準確的分類,資訊壓縮能力可以概括上述的四種關于泛化能力的解釋,稀疏的模型因其結構而完成了資訊的壓縮,生成能力強,泛化誤差低的模型因資訊壓縮而可能,而忽略無關特征是資訊壓縮的副產品,
理解泛化能力的最后一種角度是風險最小化,
??這是從博弈論的角度來看,泛化能力強的模型能盡可能降低自己在真實環境中遇到意外的風險,因此會在內部產生對未知特征的預警機制,并提前做好應對預案,這是一種很抽象的也不那么精確的解釋,但隨著技術的進步,人們會找出在該解釋下進行模型泛化能力的量化評價方法,
3.資料集分類
資料集可以分為:
- 訓練集:實際訓練演算法的資料集;用來計算梯度或者Jacobian矩陣,并確定每次迭代中網路權值的更新;
- 驗證集:用于跟蹤其學習效果的資料集;是一個指示器,用來表明訓練資料點之間所形成的網路函式發生了什么,并且驗證集上的誤差值在整個訓練程序中都將被監測;
- 測驗集:用于產生最終結果的資料集 ,
為了讓測驗集能有效反映網路的泛化能力,需要牢記:
??第一,測驗集絕不能以任何形式用于訓練網路,即使是用于從一組備選網路中挑選網路中挑選網路,測驗集只能在所有的訓練和模型選擇完成后使用;
??第二、測驗集必須代表網路使用中涉及的所有情形(當輸入空間是高維或者形狀復雜時,難以保證),
舉個栗子:
??老師出了10 道習題供同學們練習,考試時老師又用同樣的這10道題作為試題,這個考試成績能否有效反映出同學們學得好不好呢?
??答案是否定的,可能有的同學只會做這10 道題卻能得高分.回到我們的問題上來,我們希望得到泛化性能強的模型?好比是希望同學們對課程學得很好、獲得了對所學知識"舉一反三"的能力;訓練樣本相當于給同學們練習的習題,測驗程序則相當于考試.顯然,若測驗樣本被用作訓練了,則得到的將是過于"樂觀"的估計結果,
4.泛化能力分類
根據泛化能力強弱,可以分為:

- 欠擬合:模型不能在訓練集上獲得足夠低的誤差;
- 擬合:測驗誤差與訓練誤差差距較小;
- 過擬合:訓練誤差和測驗誤差之間的差距太大;
- 不收斂:模型不是根據訓練集訓練得到的,
??在機器學習中,可以用Bias(偏差)、Variance(方差)衡量欠擬合、剛好擬合、過擬合,
對于Bias:
- Bias衡量模型擬合訓練資料的能力(訓練資料不一定是整個 training dataset,而是只用于訓練它的那一部分資料,例如:mini-batch);
- Bias反映的是模型在樣本上的輸出與真實值之間的誤差,即模型本身的精準度;
- Bias 越小,擬合能力越高(可能產生overfitting);反之,擬合能力越低(可能產生underfitting),
對于Variance:
- Variance描述的是預測值的變化范圍,離散程度,也就是離其期望值的距離,方差越大,資料的分布越分散,模型的穩定程度越差;
- Variance反映的是模型每一次輸出結果與模型輸出期望之間的誤差,即模型的穩定性;
- Variance越小,模型的泛化的能力越高;反之,模型的泛化的能力越低,
??左圖是高偏差,對應欠擬合;右圖是高方差,對應過擬合,中間是Just Right,對應剛好擬合,
對于過擬合,可以理解為:
??過擬合指的是給定一堆資料,這堆資料帶有噪聲,利用模型去擬合這堆資料,可能會把噪聲資料也給擬合了,這點很致命,一方面會造成模型比較復雜(想想看,本來一次函式能夠擬合的資料,現在由于資料帶有噪聲,導致要用五次函式來擬合,多復雜!),另一方面,模型的泛化性能太差了(本來是一次函式生成的資料,結果由于噪聲的干擾,得到的模型是五次的),遇到了新的資料讓你測驗,你所得到的過擬合的模型,正確率是很差的,
5.從訓練程序來理解泛化
??模型的容量(capacity):通常指模型中可學習引數的個數(或模型復雜度),
??訓練剛開始的時候,模型還在學習程序中,在訓練集以及測驗集上同時具有較高的誤差,此時模型的偏差較大,這個時候,模型還沒有學習到知識,處于欠擬合狀態,曲線落在欠擬合區域,
??隨著訓練的進行,訓練誤差和測驗誤差都下降,隨著模型的進一步訓練,在訓練集上表現的越來越好,終于在突破一個點之后,訓練集的誤差繼續下降,而測驗集的誤差上升了,此時模型的方差較大,就進入了過擬合區間, 它通常發生在模型過于復雜的情況下,如引數過多等,會使得模型的預測性能變弱,并且增加資料的波動性,雖然模型在訓練時的效果可以表現的很完美,基本上記住了資料的全部特點,但這種模型在未知資料的表現能力會大減折扣,因為簡單的模型泛化能力通常都是很弱的,
??因此,所使用的模型應該具有足夠多的引數,以防欠擬合,即模型應避免記憶資源不足,在容量過大與容量不足之間要找到一個折中,即最優容量,
這里有兩個地方需要注意,
(1) 模型訓練程序中,訓練集的誤差一定一直低于測驗集嗎?
??未必,如果這兩個集合本來就取自于同樣的資料分布,比如從一個資料集中隨機采樣,那么有可能測驗的誤差從一開始就低于訓練集,不過,總體的趨勢肯定是不變的,兩者從一開始慢慢下降直到最后過擬合,訓練集的誤差低于測驗集,
(2) 模型的訓練一定會過擬合嗎?
??這也不一定!如果資料集足夠大,很可能模型的能力不夠始終都不會過擬合,另一方面,有很多的方法可以阻止,或者級訓模型的過擬合,比如正則化,
參考資料
1.聊聊神經網路中的正則化
2.尹恩·古德費洛.深度學習[M].北京:人民郵電出版社,2017.8
3.馬丁 T·哈根,章毅(譯).神經網路設計.第二版.北京:機械出版社,2017.12
4. 深度學習500問
5.談談自己對正則化的一些理解
6.網上其它資料(后補)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/62226.html
標籤:其他
下一篇:抖音數字雨,竟然可以這么玩!
