@[TOC]L1 和 L2正则化
对L1 和 L2正则化可以抑制训练过拟合的理解
L1范数和L2范数经常被用于损失函数中,用来防止网络训练过程的过拟合问题。
一、几种范数
设任一组向量为x = ( 2 , 1 , − 1 , 0 , 2 , 3 ) x=(2,1,-1,0,2,3)x=(2,1,−1,0,2,3)
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}=5∥x∥0=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} \mid∥x∥1=∑i=1n∣xi∣。∥ x ∥ 1 = 2 + 1 + 1 + 0 + 2 + 3 = 9 \parallel x\parallel _{1}=2+1+1+0+2+3=9∥x∥1=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}}∥x∥2=∑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}∥x∥2=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的复杂度>模型2的复杂度;
- 在训练模型1具有更小的误差,拟合效果好;
- 模型复杂度越高,模型的泛化能力越差。(表现在:用测试数据检测模型时,模型1的误差>模型2的误差,也就是存在了过拟合问题)。
因此,我们在进行网络训练时,就希望能通过降低模型的复杂度来抑制模型的过拟合问题,尽管这样做会损失一部分精度。
这里面也有一个稀疏性的问题,模型的复杂度越低,越稀疏。
稀疏指的是参或者数据中0的个数,0越多,参数或数据越稀疏
稀疏的优点:
- 特征选择 能实现特征的自动选择
一般来说,x i x_{i}xi的大部分元素(也就是特征)是和最终的输出y yy无关或不提供任何有效的信息,在最小化目标函数时,考虑x i x_{i}xi的这些额外特征,虽然可以获得更小的训练误差,但在预测新的样本时,这些没用的信息反而会干扰对正确y yy的预测。稀疏性规划算子的引入就是为了完成特征的自主选择,使哪些无用的特征对应的权值为0. - 可解释性 能够根据非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}l1和l 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.∥w∥1⩽C
然后通过构建拉格朗日函数进行优化求解,即:拉格朗日函数: 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)+α∥w∥1
通过求解:{ ∂ 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.{∂w∂L(w,α)=0∂α∂F(w,α)=0
就可以看出加入l 1 l_{1}l1范数可以减少模型复杂度
我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:
- 全新的界面设计 ,将会带来全新的写作体验;
- 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
- 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
- 全新的 KaTeX数学公式 语法;
- 增加了支持甘特图的mermaid语法1 功能;
- 增加了 多屏幕编辑 Markdown文章功能;
- 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
- 增加了 检查列表 功能。
功能快捷键
撤销: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.
图片:
带尺寸的图片:
居中的图片:
居中并且带尺寸的图片:
当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。
如何插入一段漂亮的代码片
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.
// An highlighted block
var foo = 'bar';
生成一个适合你的列表
- 项目
- 项目
- 项目
- 项目
- 项目1
- 项目2
- 项目3
- 计划任务
- 完成任务
创建一个表格
一个简单的表格是这么创建的:
| 项目 | Value |
|---|---|
| 电脑 | $1600 |
| 手机 | $12 |
| 导管 | $1 |
设定内容居中、居左、居右
使用:---------:居中
使用:----------居左
使用----------:居右
| 第一列 | 第二列 | 第三列 |
|---|---|---|
| 第一列文本居中 | 第二列文本居右 | 第三列文本居左 |
SmartyPants
SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:
| TYPE | ASCII | HTML |
|---|---|---|
| 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)=(n−1)!∀n∈N 是通过欧拉积分
Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.Γ(z)=∫0∞tz−1e−tdt.
你可以找到更多关于的信息 LaTeX 数学表达式here.
新的甘特图功能,丰富你的文章
- 关于 甘特图 语法,参考 这儿,
UML 图表
可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:
这将产生一个流程图。:
- 关于 Mermaid 语法,参考 这儿,
FLowchart流程图
我们依旧会支持flowchart的流程图:
- 关于 Flowchart流程图 语法,参考 这儿.
导出与导入
导出
如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。
导入
如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。
注脚的解释 ↩︎