機器學習與深度學習中模型訓練時常用的四種正則化技術L1,L2,L21,ElasticNet

L1正則化和L2正則化是機器學習中常用的兩種正則化方法,用于防止模型過擬合。它們的區別主要體現在數學形式、作用機制和應用效果上。以下是詳細對比:

1. 數學定義

  • L1正則化(也叫Lasso正則化):
    在損失函數中加入權重參數的絕對值之和,即 λ ∑ ∣ w i ∣ \lambda \sum |w_i| λwi?
    公式:
    L o s s = L o s s 原始 + λ ∑ ∣ w i ∣ Loss = Loss_{原始} + \lambda \sum |w_i| Loss=Loss原始?+λwi?
    其中 w i w_i wi? 是模型的權重參數, λ \lambda λ 是正則化強度的超參數。

  • L2正則化(也叫Ridge正則化):
    在損失函數中加入權重參數的平方和,即 λ ∑ w i 2 \lambda \sum w_i^2 λwi2?
    公式:
    L o s s = L o s s 原始 + λ ∑ w i 2 Loss = Loss_{原始} + \lambda \sum w_i^2 Loss=Loss原始?+λwi2?

2. 幾何解釋

  • L1正則化
    在參數空間中,L1正則化對應一個菱形(或高維的絕對值約束)。優化時,損失函數的最優解傾向于落在菱形的頂點上,導致部分權重被精確地壓縮到0,具有稀疏性。

  • L2正則化
    對應一個圓形(或高維球面約束)。優化時,權重傾向于均勻縮小,但不會精確到0,而是變得很小。

3. 作用效果

  • L1正則化

    • 傾向于產生稀疏解,即部分權重變為0。
    • 適合特征選擇,因為它可以自動剔除不重要的特征。
  • L2正則化

    • 傾向于讓所有權重變小但不為0,保持權重分布更平滑。
    • 更適合處理多重共線性(特征之間高度相關)的情況。

4. 計算復雜度

  • L1正則化
    由于絕對值函數不可導,優化時需要特殊的算法(如次梯度下降或坐標下降法),計算復雜度稍高。

  • L2正則化
    平方項是連續可導的,可以直接用梯度下降等方法優化,計算上更簡單。

5. 應用場景

  • L1正則化

    • 當特征數量很多且你懷疑只有少部分特征重要時(如高維數據降維)。
    • 示例:Lasso回歸。
  • L2正則化

    • 當所有特征都可能有貢獻,但需要控制權重大小以避免過擬合時。
    • 示例:Ridge回歸、神經網絡中的權重衰減。

6. 組合使用

在實踐中,L1和L2正則化可以結合使用,稱為Elastic Net,公式為:
L o s s = L o s s 原始 + λ 1 ∑ ∣ w i ∣ + λ 2 ∑ w i 2 Loss = Loss_{原始} + \lambda_1 \sum |w_i| + \lambda_2 \sum w_i^2 Loss=Loss原始?+λ1?wi?+λ2?wi2?
這種方法兼具L1的稀疏性和L2的平滑性。

總結

特性L1正則化L2正則化
懲罰項絕對值 w w w平方 w 2 w^2 w2
權重結果稀疏(部分為0)小但非0
幾何形狀菱形圓形
主要用途特征選擇權重平滑、防止過擬合
計算難度稍高較低

簡單來說,L1更像“選擇性淘汰”,L2更像“整體削弱”。根據具體任務需求選擇合適的正則化方法!


補充: L 21 n o r m L_{21}norm L21?norm范數正則化與Elastic Net 的區別

Elastic Net和L21范數正則化是兩種不同的正則化方法,它們的主要區別如下:

  • 原理不同
    • Elastic Net:結合了L1和L2正則化的特點,在損失函數中同時引入L1范數和L2范數作為正則化項,通過一個混合參數來平衡兩者的貢獻。其正則化項的表達式為(R(\boldsymbol{w})=\lambda_1|\boldsymbol{w}|_1+\lambda_2|\boldsymbol{w}|_2^2),其中(\boldsymbol{w})是模型的參數,(\lambda_1)和(\lambda_2)是正則化參數。
    • L21范數正則化:是對矩陣的每一行或每一列的L2范數進行求和,然后將其作為正則化項添加到損失函數中。對于一個矩陣(\boldsymbol{W}),其L21范數正則化項的表達式為(R(\boldsymbol{W})=\sum_{i}|\boldsymbol{w}_i|_2),其中(\boldsymbol{w}_i)表示矩陣(\boldsymbol{W})的第(i)行或第(i)列。
  • 應用場景不同
    • Elastic Net:常用于線性回歸、邏輯回歸等模型中,當數據存在多個相關特征時,它可以有效地選擇出重要的特征,并對模型進行正則化,防止過擬合。
    • L21范數正則化:在一些需要對矩陣結構進行約束的場景中更為常用,如圖像處理、信號處理等領域,它可以用于特征選擇、矩陣分解等任務。
  • 效果不同
    • Elastic Net:由于同時包含L1和L2正則化的特性,它既能夠實現特征的稀疏性,又能夠對模型的參數進行平滑處理,使得模型具有較好的泛化能力。
    • L21范數正則化:主要作用是促進矩陣的行或列的稀疏性,使得一些行或列的元素趨近于零,從而實現特征選擇或矩陣結構的簡化。

Elastic Net和L21范數正則化在原理、應用場景和效果等方面都存在一定的區別,在實際應用中,需要根據具體的問題和數據特點選擇合適的正則化方法。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/898106.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/898106.shtml
英文地址,請注明出處:http://en.pswp.cn/news/898106.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

qt+opengl 播放yuv視頻

一、實現效果 二、pro文件 Qt widgets opengl 三、主要代碼 #include "glwidget.h"GLWidget::GLWidget(QWidget *parent) : QOpenGLWidget(parent) {connect(&m_timer, &QTimer::timeout, this,[&](){this->update();});m_timer.start(1000/33); }v…

Android開源庫——RxJava和RxAndroid

RxJava和RxAndroid是什么? RxJava是基于JVM的響應式擴展,用于編寫異步代碼 RxAndroid是關于Android的RxJava綁定 RxJava和RxAndroid使用 依賴 implementation io.reactivex.rxjava3:rxjava:3.1.0 implementation io.reactivex.rxjava3:rxandroid:3.…

并發基礎—三大問題:可見性、原子性、有序性

文章目錄 可見性原子性有序性(指令重排)經典的指令重排案例:單例模式的雙重檢查鎖volatile和synchronize都可以保證有序性并發壓測工具Jcstress證明指令重排會在多線程下出現問題(了解)CPU緩存分為三個級別&#xff1a…

PyTorch 入門學習

目錄 PyTorch 定義 核心作用 應用場景 Pytorch 基本語法 1. 張量的創建 2. 張量的類型轉換 3. 張量數值計算 4. 張量運算函數 5. 張量索引操作 6. 張量形狀操作 7. 張量拼接操作 8. 自動微分模塊 9. 案例-線性回歸案例 PyTorch 定義 PyTorch 是一個基于 Python 深…

Hive SQL 精進系列:REGEXP_REPLACE 函數的用法

目錄 一、引言二、REGEXP_REPLACE 函數基礎2.1 基本語法參數詳解2.2 簡單示例 三、REGEXP_REPLACE 函數的應用場景3.1 去除特殊字符3.2 統一字符串格式 四、REGEXP_REPLACE 與 REPLACE 函數的對比4.1 功能差異4.2 適用場景 五、REGEXP_REPLACE 與 REGEXP 函數的對比5.1 功能差異…

從0開始搭建微服務架構特別篇SpringCloud網關聚合knife4j

前言:總所周知項目開發接口測試需要knife4j,但是,微服務架構中微服務很多,模塊地址很多,需要統一管理api測試,就需要聚合在網關統一調用,本章,就說明如何通過網關聚合使用knife4j。 …

Spring Cloud 中的服務注冊與發現: Eureka詳解

1. 背景 1.1 問題描述 我們如果通過 RestTamplate 進行遠程調用時,URL 是寫死的,例如: String url "http://127.0.0.1:9090/product/" orderInfo.getProductId(); 當機器更換或者新增機器時,這個 URL 就需要相應地變…

網頁制作15-Javascipt時間特效の記錄網頁停留時間

01效果圖: 02運用: window.setTimeout()刷新function()函數document.forms():表單if條件語句window.alert()窗口警示 03、操作代碼:…

【Rust基礎】排序和分組

排序 簡單排序 整數排序 #[test] fn test_sort(){let mut list vec![1, 5, 3, 2, 4];list.sort(); //?assert_eq!(list, vec![1, 2, 3, 4, 5]); }小數排序 #[test] fn test_sort(){let mut list vec![1, 5, 3, 2, 4];//? 不能直接使用sort,因為f32和f64未實現O…

C++ std::list超詳細指南:基礎實踐(手搓list)

目錄 一.核心特性 1.雙向循環鏈表結構 2.頭文件:#include 3.時間復雜度 4.內存特性 二.構造函數 三.list iterator的使用 1.學習list iterator之前我們要知道iterator的區分 ?編輯 2.begin()end() 3.rbegin()rend() 四.list關鍵接口 1.empty() 2. size…

996引擎 - 紅點系統

996引擎 - 紅點系統 總結NPC 紅點(TXT紅點)Lua 紅點1. Red_Point.lua2. UI_Ex.lua參考資料以下內容是在三端 lua 環境下測試的 總結 紅點系統分幾個部分組成。 M2中設置變量推送。 配置紅點表。 Envir\Data\cfg_redpoint.xls 2.1. UI元素中找到ID填寫 ids 列。 主界面掛載…

C語言——變量與常量

C語言中的變量與常量:簡潔易懂的指南 在C語言編程中,變量和常量是最基本的概念之一。理解它們的區別和使用方法對于編寫高效、可維護的代碼至關重要。本文將詳細介紹C語言中的變量和常量,并通過圖表和代碼示例幫助你更好地理解。 目錄 什么…

PySide(PyQt),使用types.MethodType動態定義事件

以PySide(PyQt)的圖片項為例,比如一個視窗的場景底圖是一個QGraphicsPixmapItem,需要修改它的鼠標滾輪事件,以實現鼠標滾輪縮放顯示的功能。為了達到這個目的,可以重新定義一個QGraphicsPixmapItem類,并重寫它的wheelE…

K8S學習之基礎三十一:k8s中RBAC 的核心概念

Kubernetes (k8s) 中的 RBAC(Role-Based Access Control,基于角色的訪問控制)是一種用于管理用戶和服務賬戶對集群資源訪問權限的機制。RBAC 允許管理員通過定義角色(Role)和角色綁定(RoleBinding&#xff…

【eNSP實戰】三層交換機使用ACL實現網絡安全

拓圖 要求: vlan1可以訪問Internetvlan2和vlan3不能訪問Internet和vlan1vlan2和vlan3之間可以互相訪問PC配置如圖所示,這里不展示 LSW1接口vlan配置 vlan batch 10 20 30 # interface Vlanif1ip address 192.168.40.2 255.255.255.0 # interface Vla…

軟考系統架構師 — 1 考點分析

目錄 1 考點總結 1 考點總結 章節 內容 真題考察 緒論 1. 緒論 不考 計算機相關知識 2. 計算機系統基礎知識,新增計算機硬件、嵌入式、計算機語言、系統工程 對應計算機組成結構、操作系統、數據庫、計算機網絡、多媒體等知識點,整體分值在 10 …

在Eclipse 中使用 MyBatis 進行開發,通常需要以下步驟:

在Eclipse 中使用 MyBatis 進行開發,通常需要以下步驟: 1. 創建 Maven 項目 首先,在 Eclipse 中創建一個 Maven 項目。如果你還沒有安裝 Maven 插件,可以通過 Eclipse Marketplace 安裝 Maven 插件。 打開 Eclipse,選…

錯誤記錄: git 無法連接到github

錯誤記錄: git 無法連接到github 今天, 新建了一個github倉庫, 但從本地怎么都push不上去.并報錯 gitgithub.com: Permission denied (publickey). fatal: Could not read from remote repository.Please make sure you have the correct access rights and the repository e…

k8s 配置兩個deployment主機級別互斥部署

在 Kubernetes 中,要實現兩個 Deployment 的 Pod 在主機級別互斥部署,可以使用 podAntiAffinity 配置。通過設置 podAntiAffinity,可以確保兩個 Deployment 的 Pod 不會被調度到同一節點上。 實現步驟 定義 Deployment: 為每個…

Unity中WolrdSpace下的UI展示在上層

一、問題描述 Unity 中 Canvas使用World Space布局的UI,想讓它不被3d物體遮擋,始終顯示在上層。 二、解決方案 使用shader解決 在 UI 的材質中禁用深度測試(ZTest),強制 UI 始終渲染在最上層。 Shader "Custo…