🎨
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
  • 怎样把正则化转换为带约束的最优化问题
  • 正则化转 VS 带约束的最优化问题

Was this helpful?

  1. 第7章 深度学习中的正则化

7.2 作为约束的范数惩罚

Previous7.1.2 L1参数正则化Next7.3 正则化和欠约束问题

Last updated 5 years ago

Was this helpful?

怎样把正则化转换为带约束的最优化问题

考虑经过参数范数正则化的代价函数:

J~(θ;X,y)=J(θ;X,y)+αΩ(θ).\begin{aligned} \tilde{J}(\theta;X, y) = J(\theta;X, y) + \alpha \Omega(\theta) . \end{aligned}J~(θ;X,y)=J(θ;X,y)+αΩ(θ).​

[success] 正则化的目的是限制参数的大小,手段是把参数加入代价函数中。 要达到同样的目的,还可以有别的方法 --- 增加参数的约束。

min⁡J(θ;X,y)s.t.Ω(θ)<k\begin{aligned} \min J(\theta;X,y) \\ s.t. \Omega(\theta)<k \end{aligned}minJ(θ;X,y)s.t.Ω(θ)<k​

使用算法求解带约束的最小化问题 求解这些带约束的最小化问题不是这一节的重点。 这一节的重点是比较“显式约束”和“参数范数惩罚”这两个思考角度。

回顾我们可以构造一个广义Lagrange函数来最小化带约束的函数,即在原始目标函数上添加一系列惩罚项。 每个惩罚是一个被称为Karush–Kuhn–Tucker乘子的系数以及一个表示约束是否满足的函数之间的乘积。 如果我们想约束$\Omega(\theta)$小于某个常数$k$,我们可以构建广义Lagrange函数

L(θ,α;X,y)=J(θ;X,y)+α(Ω(θ)−k).\begin{aligned} \Bbb L(\theta, \alpha; X, y) = J(\theta; X, y) + \alpha (\Omega(\theta) - k). \end{aligned}L(θ,α;X,y)=J(θ;X,y)+α(Ω(θ)−k).​

[success] KKT算法第1步:写出广义Lagrange函数

这个约束问题的解由下式给出

θ∗=arg⁡min⁡θmax⁡α,α≥0L(θ,α).\begin{aligned} \theta^* = \arg\min_{\theta} \max_{\alpha, \alpha \geq 0} \Bbb L(\theta, \alpha). \end{aligned}θ∗=argθmin​α,α≥0max​L(θ,α).​

[success] KKT算法第2步:把最优解写成极小极大问题的形式 KKT算法第3步:转化为极大极小问题

θ∗=arg⁡max⁡α,α≥0min⁡θL(θ,α).\begin{aligned} \theta^* = \arg\max_{\alpha, \alpha \geq 0}\min_{\theta}\Bbb L(\theta, \alpha). \end{aligned}θ∗=argα,α≥0max​θmin​L(θ,α).​

如第4.4节中描述的,解决这个问题我们需要对$\theta$和$\alpha$都做出调整。 第4.5节给出了一个带$L^2$约束的线性回归实例。 还有许多不同的优化方法,有些可能会使用梯度下降而其他可能会使用梯度为0的解析解,但在所有过程中$\alpha$在$\Omega(\theta) > k$时必须增加,在$\Omega(\theta) < k$时必须减小。 所有正值的$\alpha$都鼓励$\Omega(\theta)$收缩。 最优值$\alpha^*$也将鼓励$\Omega(\theta)$收缩,但不会强到使得$\Omega(\theta)$小于$k$。

为了洞察约束的影响,我们可以固定$\alpha^*$,把这个问题看成只跟$\theta$有关的函数:

θ∗=arg⁡min⁡θL(θ,α∗)=arg⁡min⁡θJ(θ;X,y)+α∗Ω(θ).\begin{aligned} \theta^* = \arg\min_{\theta} \Bbb L(\theta, \alpha^*) = \arg\min_{\theta} J(\theta; X, y) + \alpha^* \Omega(\theta). \end{aligned}θ∗=argθmin​L(θ,α∗)=argθmin​J(θ;X,y)+α∗Ω(θ).​

[success] KKT算法第4步:固定$\alpha^$,求$\theta^$

这和最小化$\tilde J$的正则化训练问题是完全一样的。

[warning] 怎么求$\theta^*$?也有梯度下降法?

因此,我们可以把参数范数惩罚看作对权重强加的约束。

正则化转 VS 带约束的最优化问题

如果$\Omega$是$L^2$范数,那么权重就是被约束在一个$L^2$球中。 如果$\Omega$是$L^1$范数,那么权重就是被约束在一个$L^1$范数限制的区域中。 通常我们不知道权重衰减系数$\alpha^$约束的区域大小,因为$\alpha^$的值不直接告诉我们$k$的值。 原则上我们可以解得$k$,但$k$和$\alpha^*$之间的关系取决于$J$的形式。 虽然我们不知道约束区域的确切大小,但我们可以通过增加或者减小$\alpha$来大致扩大或收缩约束区域。 较大的$\alpha$,将得到一个较小的约束区域。 较小的$\alpha$,将得到一个较大的约束区域。

有时候,我们希望使用显式的限制,而不是惩罚。 如第4.4节所述,我们可以修改下降算法(如随机梯度下降算法),使其先计算$J(\theta)$的下降步,然后将$\theta$投影到满足$\Omega(\theta) < k$的最近点。

[warning] "将$\theta$投影到满足$\Omega(\theta) < k$的最近点"是什么意思?

如果我们知道什么样的$k$是合适的,而不想花时间寻找对应于此$k$处的$\alpha$值,这会非常有用。

[success] 显式约束的好处1:如果知道什么样的k是合适的,使用“显式约束”可以省去不必要的搜索。

另一个使用显式约束和重投影而不是使用惩罚强加约束的原因是惩罚可能会导致目标函数非凸而使算法陷入局部极小(对应于小的$\theta$)。

[warning] [?]重投影是什么意思?

当训练神经网络时,这通常表现为训练带有几个``死亡单元''的神经网络。 这些单元不会对网络学到的函数有太大影响,因为进入或离开它们的权重都非常小。 当使用权重范数的惩罚训练时,即使可以通过增加权重以显著减少$J$,这些配置也可能是局部最优的。 因为重投影实现的显式约束不鼓励权重接近原点,所以在这些情况下效果更好。 通过重投影实现的显式约束只在权重变大并试图离开限制区域时产生作用。

[success] 效果略有不同: “参数范数惩罚”鼓励参数向原点靠近。 而“显式约束”只关心参数是不是在约束区域内,只有在参数试图离开约束区域时约束才会起作用。 显式约束的好处2:“参数范数惩罚”容易使算法陷入局部最小,而“显式约束”不会。 显式约束的好处3:“显式约束”对优化过程增加了稳定性。

最后,因为重投影的显式约束还对优化过程增加了一定的稳定性,所以这是另一个好处。 当使用较高的学习率时,很可能进入正反馈,即大的权重诱导大梯度,然后使得权重获得较大更新。 如果这些更新持续增加权重的大小,$\theta$就会迅速增大,直到离原点很远而发生溢出。 重投影的显式约束可以防止这种反馈环引起权重无限制地持续增加。 \cite{Hinton-et-al-arxiv2012}建议结合使用约束和高学习速率,这样能更快地探索参数空间,并保持一定的稳定性。

[warning] 这一段没看懂。

\cite{Hinton-et-al-arxiv2012}尤其推荐由\cite{Srebro05}引入的策略:约束神经网络层的权重矩阵每列的范数,而不是限制整个权重矩阵的\ENNAME{Frobenius}范数。 分别限制每一列的范数可以防止某一隐藏单元有非常大的权重。 如果我们将此约束转换成\ENNAME{Lagrange}函数中的一个惩罚,这将与$L^2$ 权重衰减类似但每个隐藏单元的权重都具有单独的KKT乘子。 每个KKT乘子分别会被动态更新,以使每个隐藏单元服从约束。

[success] 显式约束的好处4:可以分别限制每一层的参数。

在实践中,列范数的限制总是通过重投影的显式约束来实现。

KKT
第4.4节