🎨
Bible-DeepLearning
  • Introduction
  • 第6章 深度前馈网络
    • 6.1 例子:学习XOR
    • 6.2 基于梯度的学习
      • 6.2.1 代价函数
        • 6.2.1.1 使用最大似然学习条件分布
        • 6.2.1.2 学习条件统计量
      • 6.2.2 输出单元
        • 6.2.2.1 用于高斯输出分布的线性神单元
        • 6.2.2.2 用于Bernoulli输出分布的sigmoid单元
        • 6.2.2.3 用于Multinoulli输出分布的softmax单元
    • 6.3 隐藏单元
      • 6.3.1 ReLU及其扩展
      • 6.3.2 logistic sigmoid与双曲正切函数
      • 6.3.3 其他隐藏单元
      • 李宏毅补充 SELU
    • 6.4 架构设计
    • 6.5 反向传播和其他的微分算法
      • 6.5.1 计算图
      • 6.5.2 微积分中的链式法则
      • 6.5.3 递归地使用链式法则来实现反向传播
      • 6.5.4 全连接MLP中的反向传播计算
      • 6.5.5 符号到符号的导数
      • 6.5.6 一般化的反向传播
      • 6.5.7 实例:用于MLP 训练的反向传播
      • 6.5.8 复杂化
  • 第7章 深度学习中的正则化
    • 7.1 参数范数惩罚
      • 7.1.1 L2参数正则化
      • 7.1.2 L1参数正则化
    • 7.2 作为约束的范数惩罚
    • 7.3 正则化和欠约束问题
    • 7.4 数据集增强
    • 7.5 噪声鲁棒性
    • 7.6 半监督学习
    • 7.7 多任务学习
    • 7.8 提前终止
    • 7.9 参数绑定和参数共享
    • 7.10 稀疏表示
    • 7.11 Bagging 和其他集成方法
    • 7.12 Dropout
    • 7.13 对抗训练
    • 7.14 切面距离、正切传播和流形正切分类器
    • Ag补充 一些能用于提升比赛成绩的方法
  • 第8章 深度模型中的优化
    • 8.1 学习和纯优化有什么不同
      • 8.1.1 经验风险最小化
      • 8.1.2 代理损失函数和提前终止
      • 8.1.3 批量算法和小批量算法
    • 8.2 神经网络优化中的挑战
      • 8.2.1 病态
      • 8.2.2 局部极小值
      • 8.2.3 8.2.3 高原、鞍点和其他平坦区域
      • 8.2.4 悬崖和梯度爆炸
      • 8.2.5 长期依赖
      • 8.2.6 非精确梯度
    • 8.3 基本算法
      • 8.3.1 随机梯度下降
      • 8.3.2 动量
      • 8.3.3 Nesterov 动量
    • 8.4 参数初始化策略
    • 8.5 自适应学习率算法
      • 8.5.1 AdaGrad
      • 8.5.2 RMSProp
      • 8.5.3 Adam
      • 8.5.4 选择正确的优化算法
    • 8.6 二阶近似方法
      • 8.6.1 牛顿法
      • 8.6.2 共轭梯度
      • 8.6.3 BFGS
    • 8.7 优化策略和元算法
      • 8.7.1 批标准化
      • 8.7.2 坐标下降
      • 8.7.3 Polyak 平均
      • 8.7.4 监督预训练
      • 8.7.5 设计有助于优化的模型
  • 第9章 卷积网络
    • 9.1 卷积运算
    • 9.2 动机
    • 9.3 池化
    • 9.4 卷积与池化作为一种无限强的先验
    • 9.5 基本卷积函数的变体
    • 9.6 结构化输出
    • 9.7 数据类型
  • 第10章 序列建模:循环和递归网络
    • 10.1 展开计算图
    • 10.2 循环神经网络
      • 10.2.1 导师驱动过程和输出循环网络
      • 10.2.2 计算循环神经网络的梯度
      • 10.2.3 作为有向图模型的循环网络
      • 10.2.4 基于上下文的RNN序列建模
    • 10.3 双向RNN
    • 10.4 基于编码 - 解码的序列到序列架构
    • 10.5 深度循环网络
    • 10.6 递归神经网络
    • 10.7 长期依赖的挑战
    • 10.9 渗漏单元和其他多时间尺度的策略
    • 10.10 长短期记忆和其他门控RNN
      • 10.10.1 LSTM
      • 10.10.2 其他门控RNN
    • 10.11 优化长期依赖
      • 10.11.1 梯度截断
      • 10.11.2 引导信息流的正则化
    • 10.12 外显记忆
  • 第11章 实践方法论
    • 11.1 性能度量
    • 11.2 默认的基准模型
    • 11.3 决定是否收集更多数据
    • 11.4 选择超参数
      • 11.4.1 手动选择超参数
      • 11.4.3 网络搜索
      • 11.4.4 随机搜索
    • 11.5 调试策略
Powered by GitBook
On this page
  • 什么是L1正则化
  • L1正则化对简单线性回归模型的影响
  • L1 VS L2

Was this helpful?

  1. 第7章 深度学习中的正则化
  2. 7.1 参数范数惩罚

7.1.2 L1参数正则化

Previous7.1.1 L2参数正则化Next7.2 作为约束的范数惩罚

Last updated 5 years ago

Was this helpful?

什么是L1正则化

$L^2$权重衰减是权重衰减最常见的形式,我们还可以使用其他的方法限制模型参数的规模。 一个选择是使用$L^1$正则化。

形式地,对模型参数$w$的$L^1$正则化被定义为:

Ω(θ)=∣∣w∣∣1=∑i∣wi∣\begin{aligned} \Omega(\theta) = ||{ w }||_1 = \sum_i | w_i | \end{aligned}Ω(θ)=∣∣w∣∣1​=i∑​∣wi​∣​

即各个参数的绝对值之和。

L1正则化对简单线性回归模型的影响

接着我们将讨论$L^1$正则化对简单线性回归模型的影响,与分析$L^2$正则化时一样不考虑偏置参数。 我们尤其感兴趣的是找出$L^1$和$L^2$正则化之间的差异。 与$L^2$权重衰减类似,我们也可以通过缩放惩罚项$\Omega$的正超参数$\alpha$来控制$L^1$权重衰减的强度。 因此,正则化的目标函数 $\tilde{J}(w;X, y)$如下所示

J~(w;X,y)=α∥w∥1+J(w;X,y)(7.20)\begin{aligned} \tilde{J}(w;X, y) = \alpha \| w \|_1 + J(w;X, y) && (7.20) \end{aligned}J~(w;X,y)=α∥w∥1​+J(w;X,y)​​(7.20)​

对应的梯度(实际上是次梯度):

[success]

∇wJ~(w;X,y)=αsign(w)+∇wJ(w;X,y)\begin{aligned} \nabla_{w} \tilde{J}(w; X, y) = \alpha \text{sign}(w) + \nabla_{w} J(w; X, y) \end{aligned}∇w​J~(w;X,y)=αsign(w)+∇w​J(w;X,y)​

其中$\text{sign}(w)$只是简单地取w各个元素的正负号。

观察公式(7.20),我们立刻发现$L^1$的正则化效果与$L^2$大不一样。 具体来说,我们可以看到正则化对梯度的影响不再是线性地缩放每个$w_i$;而是添加了一项与$\text{sign}(w_i)$同号的常数。 使用这种形式的梯度之后,我们不一定能得到$J(X, y;w)$二次近似的直接算术解($L^2$正则化时可以)。

[warning] 为什么不能得到$J(X, y;w)$二次近似的直接算术解?使用什么形式的$\tilde J$不应该影响J的计算。

简单线性模型具有二次代价函数,我们可以通过泰勒级数表示。 或者我们可以设想,这是逼近更复杂模型的代价函数的截断泰勒级数。

在这个设定下,梯度由下式给出

∇wJ^(w)=H(w−w∗)(7.21)\begin{aligned} \nabla_{w} \hat{J}(w) = H (w - w^*) && (7.21) \end{aligned}∇w​J^(w)=H(w−w∗)​​(7.21)​

[success] 问:这个公式与上一节是一样的。为什么这次有个前提设定? 答:因为正则化项不同。 上文说过,如果目标函数是二次的,那么它的泰勒展开最多二阶,对它的泰勒展开做二阶截断得到的函数与原函数相同。 如果目标函数高于二次,那么它的泰勒展开也多于二阶,对它的泰勒展开做二阶截断得到的函数与原函数的逼近。 这一节是关于正则化的影响,因此J是否是二次不在考虑范围内,只考虑正则化项部分。 L2正则化项$\frac{1}{2}\alpha w^\top w$是二次的,所以可以直接把它泰勒展开,然后根据二次函数的计算公式求它的极值。 L1正则化项是$\alpha ||w||_1$,它是高于二次的。不能直接使用二次函数求极值的公式。因此要先把它近似成二次函数。近似成二次函数的方法就是把它泰勒展开并二阶截断。 文中所谓的“前提设定”就是把泰勒展开并二阶截断。如果没有这个前提设定,它就不是二次函数。无法使用二次函数求极值的公式,也就无法得出公式7.21。

同样,H是J在$w^*$处的Hessian矩阵(关于w)。

由于$L^1$惩罚项在完全一般化的Hessian的情况下,无法得到直接清晰的代数表达式,因此我们将进一步简化假设Hessian是对角的,即$H = \text{diag}([H{1,1}, ... , H{n,n}])$,其中每个$H_{i,i}>0$。

[warning] Hessian矩阵是关于导数的矩阵,而L1正则项不是处处可导,所以在某些情况下求不到Hessian需要的导数。但是为什么Hessian的对角线一定能求出来呢? Hessian是目标函数的关于参数的二阶导数,但也会遇到不是处处可导的问题。 另外即使可导部分,它的二阶导数应该都是0。对角矩阵就成了全0矩阵了。

如果线性回归问题中的数据已被预处理(如可以使用PCA),去除了输入特征之间的相关性,那么这一假设成立。

[warning] 是不是意味着L1正则化之前最好先对数据做PCA?

我们可以将$L^1$正则化目标函数的二次近似分解成关于参数的求和:

J^(w;X,y)=J(w∗;X,y)+∑i[12Hi,i(wi−wi∗)2+α∣wi∣]\begin{aligned} \hat J(w; X, y) = J(w^*; X, y) + \sum_i \Bigg [\frac{1}{2} H_{i,i} (w_i - w_i^*)^2 + \alpha |w_i| \Bigg] \end{aligned}J^(w;X,y)=J(w∗;X,y)+i∑​[21​Hi,i​(wi​−wi∗​)2+α∣wi​∣]​

[danger] 这次的$\hat J$代表L1正则化目标函数的二次近似,而不是像上一节那样代表基本代价函数的二次近似。

[success] $\tilde J$的二次近似 = J的二次近似 + L1正则项 J的二次近似 = $J(w^) + \frac{1}{2}(w-w^)^\top H(w - w^)$ 由于H是对角矩阵,可写成$J(w^) + \frac{1}{2}H_{i,i}(w-w^*)^2$

如下列形式的解析解(对每一维i)可以最小化这个近似代价函数:

wi=sign(wi∗)ax{∣wi∗∣−αHi,i,0}\begin{aligned} w_i = \text{sign}(w_i^*) ax\Big\{ |w_i^*| - \frac{\alpha}{H_{i,i}} , 0\Big\} \end{aligned}wi​=sign(wi∗​)ax{∣wi∗​∣−Hi,i​α​,0}​

[warning] [?]分别对每个wi求导并令导数为0?我没推出这个结果。

对每个i,考虑$wi^ > 0$的情形,会有两种可能结果: (1)$w_i^ \leq \frac{\alpha}{H{i,i}}$的情况。 正则化后目标中的$i$最优值是$w_i = 0$。 这是因为在方向i上$(w; X, y) $对$ \hat J(w; X, y)$的贡献被抵消,$L^1$正则化项将$w_i$推至0。 (2)$w_i^* > \frac{\alpha}{H{i,i}}$的情况。在这种情况下,正则化不会将$wi$的最优值推至0,而仅仅在那个方向上移动$\frac{\alpha}{H{i,i}}$的距离。 $i^ < 0$的情况与之类似,*$L^1$惩罚项使$w_i$接近0(增加$ \frac{\alpha}{H{i,i}}$)或者为0。

L1 VS L2

相比$L^2$正则化,$L^1$正则化会产生更稀疏的解。 此处稀疏性指的是最优值中的一些参数为0。 和$^2$正则化相比,$L^1$正则化的稀疏性具有本质的不同。

[info] L2没有稀疏性。所以这句正确的翻译是“L2和L1具有本质的不同”。

公式7.13给出了$L^2$正则化的解$\tilde w$。

[info] 公式12:

w~=Q(Λ+αI)ΛQ⊤w∗\tilde w = Q(\Lambda+\alpha I)\Lambda Q^\top w^*w~=Q(Λ+αI)ΛQ⊤w∗

如果我们使用Hessian矩阵$H$为对角正定矩阵的假设(与$L^1$正则化分析时一样),重新考虑这个等式,我们发现 $\tilde{wi} = \frac{H{i,i}}{H_{i,i} + \alpha} w_i^$。 如果$w_i^$不是零,那么$\tilde{w_i}$也会保持非零。 这表明$L^2$正则化不会使参数变得稀疏,而$L^1$正则化有可能通过足够大的$\alpha$实现稀疏。

[success] L2中w是按比例缩小,如果w本来就小,那么它的变化也会小,最后也不会到0。 而L1中w是缩小一个定值。与w本身的大小无关。一定次数后,w就变成0了。

由$L^1$正则化导出的稀疏性质已经被广泛地用于特征选择机制。 特征选择从可用的特征子集选择出有意义的特征,化简机器学习问题。 著名的LASSO(Least Absolute Shrinkage and Selection Operator)模型将$L^1$惩罚和线性模型结合,并使用最小二乘代价函数。

[success] 最小二乘代价函数 = 二次代价函数 = 均方误差代价函数

$L^1$惩罚使部分子集的权重为零,表明相应的特征可以被安全地忽略。

在第5.6.1节,我们看到许多正则化策略可以被解释为MAP贝叶斯推断,

特别是$L^2$正则化相当于权重是高斯先验的MAP贝叶斯推断。

[warning] 为什么"$L^2$正则化相当于权重是高斯先验的MAP贝叶斯推断"?

对于$L^1$正则化,用于正则化代价函数的惩罚项$\alpha \Omega(w) = \alpha \sum_i |w_i |$与通过MAP贝叶斯推断最大化的对数先验项是等价的($w \in R^n$并且权重先验是各向同性的拉普拉斯分布(公式3.26):

log⁡p(w)=∑ilog⁡Laplace(wi;0,1α)=−α∣∣w∣∣1+nlog⁡α−nlog⁡2\begin{aligned} \log p(w) = \sum_i \log \text{Laplace}(w_i;0,\frac{1}{\alpha}) = -\alpha ||{w}||_1 + n \log \alpha - n \log 2 \end{aligned}logp(w)=i∑​logLaplace(wi​;0,α1​)=−α∣∣w∣∣1​+nlogα−nlog2​

因为是关于w最大化进行学习,我们可以忽略$\log \alpha - \log 2$项,因为它们与w无关。

[success] 泰勒公式由常数项、一项导数项、二阶导数项、。。。等组成。 如果一个简单模型是二次的,那么它最多只有前三项。 如果一个复杂模型高于二次,那么它除了前三项还会有后面的项。 假设二阶以上的项忽略不计,只保留前三项。那就得到的就是近似这个复杂模型的截断泰勒级数。

[success] PCA可用于去除输入特征之间的相关性。 如果输入特征之间是独立的,那么Hessian的非对角线位置的元素肯定都是0。

[warning] 为什么"许多正则化策略相当于权重是高斯先验的MAP贝叶斯推断"?

[warning] 为什么"$L^1$正则化相当于权重是高斯先验的MAP贝叶斯推断"? [?] 各向同性的?

次梯度
泰勒公式
PCA
MAP贝叶斯推断
拉普拉斯分布