「機器學習速成」正則化:降低模型的複雜度以減少過擬合
大家好,今天我們學習【機器學習速成】之 正則化:降低模型的複雜度以減少過擬合。
我們 馬上學三點 ,
- 泛化曲線,
- 降低模型的複雜度
- L2 正則化的損失函式
大家可以點選下面的“ 瞭解更多 ”,或搜尋“ 馬上學123 ”,線上觀看PPT講義。
泛化曲線
我們之前已經討論過 如何讓訓練損失降至最低, 也就是 獲取正確的樣本 。
今天,我們要討論的是正則化, 也就是 不要過於信賴樣本 , 這是確保機器學習效果的一個關鍵因素。
如圖泛化曲線, 該曲線顯示的是訓練集和驗證集 相對於訓練迭代次數的損失。
從圖中可以看出, 隨著迭代次數的增加, 藍色 的訓練集損失逐漸減少, 最終會在某種程度上 收斂於低端 。 但紅線的測試集損失開始上升。
事實上, 紅線 才是我們真正要關注的, 儘管我們在對訓練樣本進行訓練, 但我們想要 泛化到新的樣本 , 也就是我們希望在 測試集上的損失控制在較低 的範圍。
如何抑制測試集損失上升
那麼如何抑制紅線的測試集損失上升呢?
該圖說明模型與訓練集中的資料 過擬合 了。 我們可以透過 正則化來避免過擬合 ,
正則化有很多不同的策略:
- 其中一種策略是 早停法(Early Stopping) , 也就是訓練中計算模型在測試集上的表現, 當模型在測試集上的表現開始下降的時候, 停止訓練,這樣就能避免繼續訓練導致過擬合的問題。
- 這是一種常用策略, 儘量抵達紅色測試集曲線的底端, 但實際操作起來可能有些困難。
其他正則化策略 包括嘗試 新增模型複雜度懲罰項 , 這就是我們接下來要講的。
降低模型的複雜度
目前,我們訓練僅專注於一個重要方面, 也就是輸入正確的訓練樣本, 最大程度地最小化損失, 也就是 經驗風險最小化 為目標
現在我們要引入第二項以對模型複雜度進行懲罰。
我們以最小化損失和複雜度為目標,這稱為 結構風險最小化 。
現在,我們的訓練最佳化演算法是一個由兩項內容組成的函式:
- 一個是 損失項 ,用於衡量模型與資料的擬合度,
- 另一個是 正則化項 ,用於衡量模型複雜度。
如何衡量模型複雜度呢?
那麼我們如何衡量模型複雜度呢?
我們可以採用多種方法, 一種常見的策略是 儘量選擇較小的權重 , 也就是使引數小到幾乎可以讓我們忽略, 同時我們 仍能獲取正確的訓練樣本 。
這裡將重點探討 L2正則化 , 模型複雜度= 權重的平方和, 在這種正則化策略中, 我們會對 權重的平方和 進行懲罰。
我們用 L2 正則化公式 來量化複雜度, 該公式將正則化項定義為 所有特徵權重的平方和 。
在使用L2正則化時, 模型的確會關注訓練資料, 但會盡量確保最後的權重 不會超過所需的大小 。
L2 正則化的損失函式
我們再以數學方式總結一下:
目前,我們在 訓練最佳化 方面新增了兩項:
- 第一項是 訓練損失 。 我們希望獲取正確的樣本。 可以看出,L損失項取決於訓練資料。
- 現在, 我們在模型複雜度方面引入了第二項。 您會注意到,第二項與資料無關, 它只是要 簡化模型 。
您會發現這兩項透過lambda實現了平衡。 這是一個係數, 代表我們對 獲取正確樣本 與對 簡化模型 的關注程度之比。
lambda的選擇和平衡
lambda的選擇其實取決於具體情況:
- 如果您有 大量的訓練資料 , 訓練資料和測試資料看起來一致, 並且統計情況呈現 獨立同分布 , 那麼您可能 不需要進行多少正則化 。
- 如果您的訓 練資料不多 , 或者訓練資料與測試資料有所不同, 那麼您可能需要進行 大量正則化 。 您可能需要利用 交叉驗證 , 或使用單獨的測試集進行調整。
選擇 lambda 值時, 目標是在 簡單化 和 訓練資料擬合 之間達到 適當的平衡 :
- 如果您的 lambda 值過高, 則模型會非常 簡單 ,但是您將面臨資料 欠擬合 的風險。
- 如果您的 lambda 值過低, 則模型會比較 複雜 ,並且您將面臨資料 過擬合 的風險。
- 理想的 lambda 值生成的模型可以很好地 泛化到以前未見過的新資料 。
總結:
- 我們要獲取正確的樣本,讓損失降至最低;也要進行正則化,不要過於信賴樣本
- 經驗風險最小化:旨在減少訓練誤差
- 結構風險最小化:旨在減少訓練誤差,同時平衡複雜度。
- L2 正則化的損失函式: 第一項用來訓練損失 第二項用來簡化模型
這裡講了三點,關鍵詞有哪幾個?
提問!除了L2可以衡量模型複雜度,還有其它方法嗎?
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2648294/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 「機器學習速成」稀疏性正則化:L1正則化機器學習
- 機器學習–過度擬合 欠擬合機器學習
- 原理解析-過擬合與正則化
- 減小時間複雜度——尤拉的37%法則時間複雜度
- 從模型複雜度角度來理解過擬合現象模型複雜度
- 降低程式碼圈複雜度最佳化技巧複雜度
- 如何理解過擬合、正則化和交叉驗證
- 機器學習筆記——模型選擇與正則化機器學習筆記模型
- 降低程式碼的圈複雜度——複雜程式碼的解決之道複雜度
- 什麼是機器學習迴歸演算法?【線性迴歸、正規方程、梯度下降、正則化、欠擬合和過擬合、嶺迴歸】機器學習演算法梯度
- 機器學習中的過擬合機器學習
- 機器學習之簡化正則化:L2 正則化機器學習
- 專案複雜度模型(轉)複雜度模型
- 如何減小ABAP業務程式碼的複雜度複雜度
- 機器學習之稀疏性正則化:L1 正則化機器學習
- 如何降低空間複雜度 陣列本地操作複雜度陣列
- 機器學習之過擬合的風險機器學習
- 機器學習之簡化正則化:Lambda機器學習
- 過擬合與欠擬合-股票投資中的機器學習機器學習
- 如何無痛降低 if else 麵條程式碼複雜度複雜度
- 網路模型複雜度計算方法模型複雜度
- 【Parasoft SOAtest】如何減少重複工作以加速功能測試程式
- Pytorch_第八篇_深度學習 (DeepLearning) 基礎 [4]---欠擬合、過擬合與正則化PyTorch深度學習
- 機器學習4-模型的誤差來源以及減少誤差的方法機器學習模型
- 聽說逆向思維能夠降低時間複雜度?時間複雜度
- 如何降低軟體的複雜性?
- 複雜度分析的套路及常見的複雜度複雜度
- 正則化與模型選擇模型
- TensorFlow筆記-08-過擬合,正則化,matplotlib 區分紅藍點筆記
- css合併減少重複程式碼簡單例項CSS單例
- 正則雜談
- 為了減少程式碼複雜度,我將if-else升級為面向狀態程式設計複雜度程式設計
- SEO如何減少網站複製重複內容過多的問題?網站
- 正規表示式時間複雜度O(n)時間複雜度
- 時間複雜度跟空間複雜度時間複雜度
- 時間複雜度和空間複雜度時間複雜度
- 時間複雜度與空間複雜度時間複雜度
- 如何降低 Oracle 容災加固資源池的總成本和複雜度?Oracle複雜度