2022.01-02-02 深度学习入门-基于python的理论与实现

本周时间太短了,所以只能先简单的记录一下,后续有时间再补充。

本章主要涉及寻找最优权重参数的最优方法,权重参数的初始值,超参数的设定方法等。同时还会介绍权值衰减,Dropout等正则化方法,并进行实现。

1.参数更新

神经网络学习的目的是找到是损失函数的值尽可能小的参数。这是寻找最优参数的问题,解决这个问题的过程称为最优。前面介绍过,将参数的梯度作为线索,使用参数的梯度,沿梯度方向更新参数,并重复这个步骤多次,从而逐渐靠近最优参数,这个过程称为”随机梯度下降法“ 简称 SGD。

SGD 中的梯度更新法则为:

W \leftarrow W - \eta \frac{\vartheta L}{\vartheta W} W为需要更新的权重参数, 把损失函数关于W的梯度记为\frac{\vartheta L}{\vartheta W}\eta表示学习率。

随机梯度下降法的缺点:如果函数的形状非均向,比如呈延伸状,搜索的路径就会非常低效。Momentum, AdaGrad, Adam可以有效的避免SGD的问题。

Momentum:\

\upsilon \alpha \leftarrow \alpha \upsilon - \eta \frac{\vartheta L}{\vartheta W},         W \leftarrow W + \upsilon

AdaGrad:会为参数的每个元素适当地调整学习率

在神经网络的学习中,学习率(\eta)的值很重要,学习率过小导致学习花费过多时间;反过来,学习率过大,则会导致学习发散而不能正确进行。实际上,在神经网络中常使用学习率衰减的方法,随着学习的进行,使学习率逐渐减小。

h \leftarrow h + \frac{\vartheta L}{\vartheta W}\bigodot \frac{\vartheta L}{\vartheta W},      W \leftarrow W - \eta \frac{1}{\sqrt{h}}\frac{\vartheta L}{\vartheta W}

W为需要更新的权重参数, 把损失函数关于W的梯度记为\frac{\vartheta L}{\vartheta W}\eta表示学习率。出现新变量 h 保存以前的梯度值得平方和。\bigodot表示矩阵元素乘法。乘\frac{1}{\sqrt{h}} 是为了调整学习的尺度。这意味着参数的元素中变化较大(被大幅度更新)的元素的学习率将变小。可以按参数的元素进行学习率衰减,使变动大的参数的学习率逐渐减小。

Adam 后续补充

在实际的实践中,应该使用哪种更新方法呢?并不存在能在所有问题中都表现良好的方法。之后可以根据问题不断尝试选择。

权重的初始值

在神经网络的学习中,权重的初始值特别重要,为什么不能直接将权值初始值设置为0呢? 那是因为使用在误差反向传播法中,所有的权重值都会进行相同的更新。这意味着反向传播被过程中权值会进行想听的更新。一次权重拥有了对称的值(重复的值),这使得神经网络拥有许多不同权重的意义就丧失了,为了防止”权重均一化“(为了瓦解权重的对称结构)必须随机生成初始化。

激活函数的选择也是十分重要的,各层的激活值的分布都要求有适当的广度。因为通过在各层间传递多样性的数据,神经网络可以进行高效的学习。反过来,如果传递的是有所偏向的数据,就会出现梯度消失或者”表现力受限“的问题,导致学习可能无法顺利进行。作为几乎函数的函数最好具有远点对称的性质。

He初始值(KaiMing He等人推荐的初始值): 当前一层的节点数为n时候, He初始值使用标准差为\sqrt{\frac{2}{n}}的高斯分布。当激活函数使用Relu时,权重初始值使用He初始值,当激活函数为sigmoid挥着tanh等S型曲线函数时,初始值使用 Xavier初始值(当前一层的节点数为n时候, He初始值使用标准差为\sqrt{\frac{1}{n}}的分布)。这个是目前的最佳实践。

Batch Normalization: 通过观察各层的激活分布,从中了解到如果设定了合适的权重初始值,则各层的激活值分布会有适当的广度,从而可以顺利地进行学习。为了使各层拥有适当的广度,“强制性”地调整激活值得分布会怎么样呢? Batch Normalization就是基于这个想法而产生的。

  • Batch Normalization 具有以下有点:
  • 可以使学习快速进行(可以增大学习率)
  • 不那么依赖初始值
  • 抑制过拟合(降低对Dropout的必要性)

Batch Normalization 以进行学习时的mini-batch为单位,按 mini-batch进行正规化(进行数据分布均值为0,方法为1的正则化)数学公式如下:

  • \mu _{B}\leftarrow \frac{1}{m} \sum_{m}^{i=1}x_{i}
  • \sigma ^2\leftarrow \frac{1}{m} \sum_{m}^{i=1}(x_i - u_B)^2
  • \hat{x_i} \leftarrow \frac{x_i-u_B}{\sqrt{\sigma ^2 + \varepsilon }}

这里对 mini-batch 的m个输入数据的集合B = \{x_1, x_2,..., x_m \}求平均值u_B, 和方差\sigma ^2。然后,对输入数据进行均值为0, 方差为1的正则化。\varepsilon是为了防止出现分母为0 的问题。通过将这个处理放到激活函数前或者激活函数后,可以减少数据分布的偏向。

接着,Batch Norm 层会对正则化后的数据进行缩放和平移变换。计算公式如下:

y_i \leftarrow \gamma \hat{x_i} + \beta

这里\gamma ,\beta是参数,开始r = 1, \beta = 0后面通过学习在调整到适当的值。

正则化:过拟合是指只能拟合训练数据,但不能很好地拟合不包含在训练数据的其他数据的状态。机器学习的目的是提高泛化能力。即便没包含在训练数据中,也希望能够进行正确的识别。发生过拟合的主要原因有:

  • 模型拥有大量的参数,表现能力强。
  • 训练数据少

权值衰减是常用来抑制过拟合的方法,该方法通过在学习过程中对大的权证进行乘法。来抑制过拟合。很多过拟合就是权重参数取值过大才发生的。

在神经网络学习过程中为损失函数加上权重的平法范数(L2范数)。就可以抑制权重变大。用符号表示,如果权重为W,L2范数的权重衰减就是\frac{1}{2}\lambda W^2,然后加到损失函数中。这里\lambda是控制正则化强度的超参数。\lambda设置的越大,对大的权重的惩罚就越重。\frac{1}{2}是用于\frac{1}{2}\lambda W^2求导变为\lambda W的调整常量。

对于所有权重,权值衰减的方法都会为损失函数加上\frac{1}{2}\lambda W^2(求导后:\lambda W ),还有其他范数L1, Max范数)因此,在求权重梯度的计算中,要为之前的误差反向传播法的结果上加上正则化的导数\lambda W。 可以达到部分抑制过拟合的效果。

Dropout:是一种在学习过程中随机删除神经元的方法。训练时,随机(使用随机函数)选出隐藏层的神经元,然后将其删除。被删除的神经元不在进行信号的传递。可以有效的抑制过拟合。

超参数的验证:在神经网络中,除了权重和偏置等参数,超参数也经常出现,比如各层的神经元数量,batch大小,参数更新时的学习率和权值衰减等。如果超参数没有设置后,模型的性能就会很差。虽然超参数很重要,但是在决定超参数的过程中一般会伴随很多的试错。

验证数据:将数据分为训练数据,测试数据,验证数据。训练数据用于参数(权重和偏置) 的学习,验证数据用于超参数的性能评估。为了确认泛化能力,要在最后使用测试数据,验证模型的泛化能力。

超参数的最优化: 逐渐缩小超参数“好值” 的范围(一开始大致设定一个范围,从这个范围中随机选一个超参数(采样),用这个采样到的值进行识别精度的评估;然后重复该炒作,观察识别精度的结果,根据这个结果缩小超参数的"好值“的范围,通过重复该操作,即可逐渐确定超参数的合适范围)。

总结:

  • 参数的更新方法,除了SGD之外,还有Momentum, AdamGrad, Adam等方法
  • 权重初始值的赋值方法对进行正确的学习非常重要。
  • 作为权重初始值,Xavier初始值,He初始值等比较有效。
  • 通过使用Batch Normalization可以加速学习,并且对初始值变的健壮。
  • 抑制过拟合的正则化技术有权值衰减, Dropout等
  • 逐渐缩小”好值“存在的范围是搜索超参数的有效方法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值