L1 和 L2正则化可以抑制训练过拟合的理解

@[TOC]L1 和 L2正则化

对L1 和 L2正则化可以抑制训练过拟合的理解

L1范数和L2范数经常被用于损失函数中,用来防止网络训练过程的过拟合问题。

一、几种范数

设任一组向量为x = ( 2 , 1 , − 1 , 0 , 2 , 3 ) x=(2,1,-1,0,2,3)x=211023

1. 0范数(l 0 l_{0}l0)

l 0 l_{0}l0是指一个向量中x i ≠ 0 x_{i}\neq 0xi=0的个数。即∥ x ∥ 0 = 5 \parallel x\parallel _{0}=5x0=5

2. 1范数(l 1 l_{1}l1)

l 1 l_{1}l1是指一个向量中x i x_{i}xi与0之间的曼哈顿距离,即:∥ x ∥ 1 = ∑ i = 1 n ∣ x i ∣ \parallel x\parallel _{1}=\sum_{i=1}^{n}\mid x_{i} \midx1=i=1nxi∥ x ∥ 1 = 2 + 1 + 1 + 0 + 2 + 3 = 9 \parallel x\parallel _{1}=2+1+1+0+2+3=9x1=2+1+1+0+2+3=9.

2. 2范数(l 2 l_{2}l2)

l 2 l_{2}l2是指一个向量中x i x_{i}xi与0之间的欧式范数,即:∥ x ∥ 2 = ∑ i = 1 n x i 2 \parallel x\parallel _{2}=\sqrt{\sum_{i=1}^{n}x_{i}^{2}}x2=i=1nxi2
∥ x ∥ 2 = 2 2 + 1 2 + ( − 1 ) 2 + 0 2 + 2 2 + 3 2 = 19 \parallel x\parallel _{2}=\sqrt{2^{2}+1^{2}+(-1)^{2}+0^{2}+2^{2}+3^{2}}=\sqrt{19}x2=22+12+(1)2+02+22+32=19.

二、正则化的目的

正则化的目的:通过控制模型的复杂度,来抑制模型过拟合的问题。
例如:现在有一组训练数据,我们可以根据不同的模型拟合得到不同的曲线,如下图所示,左侧假设模型为(模型1):y = w 5 x 5 + w 4 x 4 + w 3 x 3 + w 2 x 2 + w 1 x + w 0 y=w_{5}x^{5}+w_{4}x^{4}+w_{3}x^{3}+w_{2}x^{2}+w_{1}x+w_{0}y=w5x5+w4x4+w3x3+w2x2+w1x+w0,右侧假设模型为(模型2):y = w 1 x + w 0 y=w_{1}x+w_{0}y=w1x+w0。结合下图我们可以看到以下几点:

  1. 模型1的复杂度>模型2的复杂度;
  2. 在训练模型1具有更小的误差,拟合效果好;
  3. 模型复杂度越高,模型的泛化能力越差。(表现在:用测试数据检测模型时,模型1的误差>模型2的误差,也就是存在了过拟合问题)。

因此,我们在进行网络训练时,就希望能通过降低模型的复杂度来抑制模型的过拟合问题,尽管这样做会损失一部分精度。
在这里插入图片描述
这里面也有一个稀疏性的问题,模型的复杂度越低,越稀疏。
稀疏指的是参或者数据中0的个数,0越多,参数或数据越稀疏
稀疏的优点:

  1. 特征选择 能实现特征的自动选择
    一般来说,x i x_{i}xi的大部分元素(也就是特征)是和最终的输出y yy无关或不提供任何有效的信息,在最小化目标函数时,考虑x i x_{i}xi的这些额外特征,虽然可以获得更小的训练误差,但在预测新的样本时,这些没用的信息反而会干扰对正确y yy的预测。稀疏性规划算子的引入就是为了完成特征的自主选择,使哪些无用的特征对应的权值为0.
  2. 可解释性 能够根据非0值来说明哪些参数对输出结果产生影响。

如何来降低模型的复杂度呢?
一般情况下,我们可以通过在损失函数中添加惩罚项,具体表达式如:
F ( w i , x , y ) = J ( w i , x , y ) + α Ω ( w ) F(w_{i},x,y)=J(w_{i},x,y)+\alpha \Omega (w)F(wi,x,y)=J(wi,x,y)+αΩ(w)
J JJ为损失函数,Ω ( w ) \Omega (w)Ω(w)为惩罚项,w ww为权重矩阵,x xx为样本,y yy为标签,α \alphaα为系数。
这里的惩罚项一般为l 1 l_{1}l1范数和l 2 范 数 l_{2}范数l2

三、为什么l 1 l_{1}l1l 2 l_{2}l2可以防止过拟合呢?

l 1 l_{1}l1范数:

机器学习的目的:获得最好的参数w ww,并让模型 在训练、测试集上均表现良好,当模型复杂时,w ww较多,于是过拟合现象,为了降低模型复杂度,可以考虑适当减少w ww数目。
自然可以想到,让w = ( w 1 , w 2 , . . . , w n ) T w=(w_{1},w_{2},...,w_{n})^{T}w=(w1,w2,...,wn)T中的某些w i = 0 w_{i}=0wi=0
限制w i ≠ 0 w_{i}\neq 0wi=0元素的个数,可以利用l 1 l_{1}l1范数表示,则可以构建优化函数:
{ m i n J ( w i , x , j ) s . t . ∥ w ∥ 1 ⩽ C \left\{\begin{matrix} minJ(w_{i},x,j)\\ s.t. \parallel w\parallel _{1}\leqslant C \end{matrix}\right.{minJ(wi,x,j)s.t.w1C
然后通过构建拉格朗日函数进行优化求解,即:拉格朗日函数: F ( w , α ) = J ( w i , x , y ) + α ∥ w ∥ 1 F(w,\alpha)=J(w_{i},x,y)+\alpha \parallel w\parallel _{1}F(w,α)=J(wi,x,y)+αw1
通过求解:{ ∂ L ( w , α ) ∂ w = 0 ∂ F ( w , α ) ∂ α = 0 \left\{\begin{matrix} \frac{\partial L(w,\alpha )}{\partial w}=0\\ \frac{\partial F(w,\alpha )}{\partial \alpha }=0 \end{matrix}\right.{wL(w,α)=0αF(w,α)=0
就可以看出加入l 1 l_{1}l1范数可以减少模型复杂度

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 全新的界面设计 ,将会带来全新的写作体验;
  2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
  3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
  4. 全新的 KaTeX数学公式 语法;
  5. 增加了支持甘特图的mermaid语法1 功能;
  6. 增加了 多屏幕编辑 Markdown文章功能;
  7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
  8. 增加了 检查列表 功能。

功能快捷键

撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
查找:Ctrl/Command + F
替换:Ctrl/Command + G

合理的创建标题,有助于目录的生成

直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

插入链接与图片

链接: link.

图片:Alt

带尺寸的图片:Alt

居中的图片:Alt

居中并且带尺寸的图片:Alt

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted block
var foo = 'bar';

生成一个适合你的列表

  • 项目
    • 项目
      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目Value
电脑$1600
手机$12
导管$1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列第二列第三列
第一列文本居中第二列文本居右第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPEASCIIHTML
Single backticks'Isn't this fun?'‘Isn’t this fun?’
Quotes"Isn't this fun?"“Isn’t this fun?”
Dashes-- is en-dash, --- is em-dash– is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to- HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。2

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb NΓ(n)=(n1)!nN 是通过欧拉积分

Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.Γ(z)=0tz1etdt.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

Mon 06Mon 13Mon 20已完成进行中计划一计划二现有任务Adding GANTT diagram functionality to mermaid
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:

张三李四王五你好!李四, 最近怎么样?你最近怎么样,王五?我很好,谢谢!我很好,谢谢!李四想了很长时间, 文字太长了不适合放在一行.打量着王五...很好... 王五, 你怎么样?张三李四王五

这将产生一个流程图。:

链接
长方形
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

Created with Raphaël 2.2.0开始我的操作确认?结束yesno
  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. mermaid语法说明 ↩︎

  2. 注脚的解释 ↩︎


版权声明:本文为qq_33668060原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。