如何计算模型参数的估计值(梯度下降法)

摘要:
1.梯度下降法1.1梯度下降法的算法思路算法目的:找到(损失)函数的最小值和相应的参数值。从而找到最小损失函数。梯度下降法:通过模拟球的滚动来获得函数的最小点。根据函数的形状,球会找到一个下降的方向并保持滚动,其高度始终在下降。随着时间的推移,球将滚动到底部以找到最小点。然而,梯度下降法不能保证达到最小点,也有可能达到鞍点(该点的梯度为0)或
1. 梯度下降法

  1.1 梯度下降法的算法思路

    算法目的:找到(损失)函数的最小值以及相应的参数值。从而找到最小的损失函数。

    梯度下降法:通过模拟小球滚动的方法来得到函数的最小值点。

如何计算模型参数的估计值(梯度下降法)第1张

    小球会根据函数形状找到一个下降方向不停的滚动,它的高度一直是下降的。随着时间的推移,小球会滚到底,从而找到最小值点。

    但是梯度下降法不能保证到达最小值点,也有可能到达 鞍点 (这一点的梯度为0)或者 极小值点

  1.2 梯度下降法的数学细节(泰勒级数)

    损失函数等于每一点的损失之和,就如之前所将的 线性回归 和 逻辑回归(交叉熵)。

如何计算模型参数的估计值(梯度下降法)第2张

    损失函数在模型训练的时候, Yi 和 Xi 都是给定的,所以损失函数是一个以 模型参数β 为变量的函数。我们要找的也是 模型参数β 的估计值。在此基础上,进一步假设损失函数对于模型参数都是可微的。在现实生活中,有的时候有的模型对于模型参数不是可微的。但是我们总可以通过一些数学上的近似方法,使其变成模型参数是可微的。这样才能在数学上比较好处理。

    泰勒展开式描述了函数在某一点的值跟它附近的值之间的关系。具体来说,我们想计算函数在 β1 到 βn 的值。那么可以在附近找一点 a1 到 an ,所以 β1 到 βn 这一点的损失函数的值就约等于 a1 到 an 这一点的值再加上损失函数的梯度(一阶偏导)乘以两点之间的距离。

如何计算模型参数的估计值(梯度下降法)第3张

    公式中的损失函数的梯度(一阶偏导)可以展开为 每一点的一阶偏导的和再乘 1/n 。

如何计算模型参数的估计值(梯度下降法)第4张

    从这里可以看出计算量是很大的,至少要做 n 次加法才能得到这个值。所以后面才会引入 随机梯度下降法 来简化计算。

    举一个具体的例子来推导梯度下降法。

    假设一个线性回归模型,它的损失函数为

如何计算模型参数的估计值(梯度下降法)第5张

    首先随机选取损失函数上的点作为起点(a0, b0),希望看(a0, b0)的附近,我们如何能找到一个点,这个点相对于(a0, b0)来说是它的函数值下降的。假设我们找到的点是(a1, b1),这两个函数值相减就是 ΔL 。如果我们希望(a1, b1)相对于(a0, b0)来说是它的函数值下降的。那么 ΔL 小于 0。

如何计算模型参数的估计值(梯度下降法)第6张

    借助泰勒展开式,将右面移到左面可以得到 ΔL

如何计算模型参数的估计值(梯度下降法)第7张

    所以 ΔL 等于:

如何计算模型参数的估计值(梯度下降法)第8张

    如果令:

如何计算模型参数的估计值(梯度下降法)第9张

    那么将 Δa 和 Δb 带回 ΔL:

如何计算模型参数的估计值(梯度下降法)第10张

    所以,就可以定义 a , b 的迭代公式。

如何计算模型参数的估计值(梯度下降法)第11张

    通过继续分析迭代公式,我们可以知道 γ 是学习速率,决定每次迭代参数值移动的步伐大小。它必定是大于0的值。否则就不满足 ΔL 小于 0。

如何计算模型参数的估计值(梯度下降法)第12张

    为什么说它决定了移动的方向呢,如 1 点,它在一个递减函数上,所以按照迭代公式,γ 后面的一堆是小于 0 的。又由于 γ 大于0,所以 ak 减去负数,相当于加一个正数,所以 1点 下一步要向右移动。2 点同理。

如何计算模型参数的估计值(梯度下降法)第13张

    而且在数学上可以证明,沿着梯度下降,是函数值下降最快的方向。

  1.3 梯度下降法的注意事项

    1.3.1 学习速率不能过大

       依然如点1为例,如果学习速率过大(步长过大),那么它就会跨过最小值点到达2点。2点也会跨过最小值到3点。3点也会跨过最小值到4点。这样会遇到参数值左右摇摆,但就是不下降的情况。

       从数学上来说,梯度下降法依赖的是 泰勒展开式,泰勒展开式 中的约等于是在函数的局部成立的。如果局部被扩的比较大,那么偏差也就比较大。所以学习速率不能过大,这样泰勒展开式的精度更高,梯度下降法效果更好。

如何计算模型参数的估计值(梯度下降法)第14张

    1.3.2 局部最优和全局最优

       以 1点 为例,梯度下降法只能经过 点2 然后到达 点3。点3 的梯度是为0的。所以就停止了迭代。这样只能找到局部最优。

      为了解决这个问题,我们可以选择 点4 为起点进行梯度下降法。

如何计算模型参数的估计值(梯度下降法)第15张

      在实际运用中,如果我们使用梯度下降法,通常会随机选取若干起点,同时运用梯度下降法进行下降,每一个起点都会得到一个它认为的全局最低点。然后再比较这些 “全局最低点”,从中选出最低的点,那么这个点就作为最终的结果。

    1.3.3 鞍点和山谷

      鞍点和山谷是梯度下降法很怕遇到的。

      鞍点:在这点的梯度等于0,但并不是极小值点。所以梯度下降法将会停止迭代。不会得到极小值点。

如何计算模型参数的估计值(梯度下降法)第16张

      山谷:在一个狭长的区域内,梯度几乎等于0,但两边的梯度绝对值很大。下图深蓝色的一环就是这种情况。

如何计算模型参数的估计值(梯度下降法)第17张

      这两点到目前为止没有特别好的解决方法,但是后面会讲针对这种情况的优化改良算法。

2. 随机梯度下降法

  2.1 随机梯度下降法

    正如 1.2 部分所说,梯度下降法面对大量的数据,速度会变得很慢。下面是梯度下降法的回顾。

如何计算模型参数的估计值(梯度下降法)第18张

    总结一下,由于损失函数的梯度等于各点梯度的平均值,这导致了:

      1. 计算开销大。2. 面对大量的训练数据时,几乎不可用梯度下降法。

    所以,现实生活中,一般都使用随机梯度下降法。为了提高效率,在随机梯度下降法中,使用小批量的数据的梯度平均值代替损失函数的梯度

如何计算模型参数的估计值(梯度下降法)第19张

    在这里和统计学的应用类似,比如说我们要统计所有中国人的平均年龄。由于中国人太多了,所以随机抽样100万人,然后求这100万人的平均年龄。这样近似代替中国人的平均年龄。虽然是有误差的,但是这个误差也是很小的,效率的提升是极大的。

    所以根据这个思路,我们得到了随机梯度下降法的迭代公式:

如何计算模型参数的估计值(梯度下降法)第20张

    在实现随机梯度下降法时,会引入两个超参数。batch_size(公式中的 m ),epoch(所有数据循环的上限)。同时,需要注意的是,在极限的情况下,可以使用一个数据点的梯度代替损失函数的梯度,也就是说m可以是等于1的。当 m = 1 的时候,称为 Mini-Batch Gradient Descent。

  2.2 随机梯度下降法的缺陷和改进

    2.2.1 随机梯度下降法的缺陷

      随机梯度下降法面对的主要困难在于,它的梯度估计并不稳定,下降路径时常“弯弯曲曲”。如何计算模型参数的估计值(梯度下降法)第21张

      随机梯度下降法的梯度是近似值,与真实值是有误差的,虽然我们认为这个误差是比较小的,但是在特定条件下可能会引起整个算法的下降效率变差。

      梯度下降法(GD)可以准确地计算每一点的梯度,所以它的下降是比较直接的(红色)。但是对于随机梯度下降法(SGD),因为它的梯度估计有误差,所以真实的下降路线是弯弯曲曲的。它需要的迭代次数也会比梯度下降法更高,虽然它每一次迭代比梯度下降法需要的时间更短。

      总结一下,随机梯度下降法中,函数梯度的估计值并不稳定,遇到 鞍点山谷 时,随机梯度下降法的效果很差。

    2.2.2 随机梯度下降法的改进(动量方法)

      在随机梯度下降法中,根据递推公式,它每次的迭代都只与这次迭代的起点的梯度相关,跟上次是无关的。这并不是很合理。

      动量方法模拟了物理中的惯性作用:

        1. 上一次迭代的改变量视为速度。2. 这次迭代的梯度视为加速度。

      它的公式及参数说明如下:

如何计算模型参数的估计值(梯度下降法)第22张

      使用这样的方法去迭代,从实践上证明,它通常会比梯度下降法和随机梯度下降法的下降效率高很多。

    2.2.3 随机梯度下降法的改进(Adam方法)

       它不仅仅保留了 2.2.2章节中动量方法的“惯性作用”,并在此基础上,增加了如下作用:

        对于历史梯度较小的模型参数,放大当前的更新步伐(步长);反之,则变小。

如何计算模型参数的估计值(梯度下降法)第23张

        我们可以认为 mk 代表了速度。vkmk 的差别在于 gk 的平方,这里的平方在于,我们想衡量历史上梯度的绝对值的大小。当 vk 特别大的时候,就需要减少 mk 的值。否则,将放大 mk 的值。结合这两点就得到了模型参数的估计公式 ak+1 。这里的 ε 就是工程上的处理,主要为了处理 vk = 0的情况,这种情况下会变得无法计算。

       另外,递推公式里用的 mk帽子vk帽子mkvk 处理之后得到的。

如何计算模型参数的估计值(梯度下降法)第24张

       做这种处理的目的在于,我们希望 mk帽子 的期望是等于 gk 的期望,vk帽子 的期望是等于 gk平方 的期望。如果我们将 mkvk 展开之后可以得到

如何计算模型参数的估计值(梯度下降法)第25张

      因此,我们做了上面的帽子修正。就使得期望成立。从数学上来说公式更加完美,从实践上来说梯度的下降效率和下降精度都会有所提高。

免责声明:文章转载自《如何计算模型参数的估计值(梯度下降法)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Android ButterKnife注解式开发mysql索引长度的一些限制下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Keras同时有多个输出时损失函数计算方法和反向传播过程

来源:https://stackoverflow.com/questions/57149476/how-is-a-multiple-outputs-deep-learning-model-trained Keras calculations are graph based and use only one optimizer. The optimizer...

权值初始化

设计好神经网络结构以及loss function 后,训练神经网络的步骤如下: 初始化权值参数 选择一个合适的梯度下降算法(例如:Adam,RMSprop等) 重复下面的迭代过程: 输入的正向传播 计算loss function 的值 反向传播,计算loss function 相对于权值参数的梯度值 根据选择的梯度下降算法,使用梯度值更新每个权值参数...

粒子群算法(1)----粒子群算法简单介绍

   一、粒子群算法的历史    粒子群算法源于复杂适应系统(Complex Adaptive System,CAS)。CAS理论于1994年正式提出,CAS中的成员称为主体。比方研究鸟群系统,每一个鸟在这个系统中就称为主体。主体有适应性,它能够与环境及其它的主体进行交流,而且依据交流的过程“学习”或“积累经验”改变自身结构与行为。整个系统的演变或进化包...

pspice仿真老不收敛怎么办?

仿真不收敛,提示ERROR(ORPSIM-15138): Convergence problem in transient analysis at Time =  116.4E-21.         Time step =  116.4E-21, minimum allowable step size =  1.000E-18 就是在计算时迭代还没有达到...

DeepSpeed超大规模模型训练工具

DeepSpeed超大规模模型训练工具 2021年 2 月份发布了 DeepSpeed。这是一个开源深度学习训练优化库,包含的一个新的显存优化技术—— ZeRO(零冗余优化器),通过扩大规模,提升速度,控制成本,提升可用性,极大地推进了大模型训练能力。DeepSpeed 已经帮助研究人员,开发了图灵自然语言生成模型( Turing-NLG),在发表时,为世...

参数估计|无偏性|有效性|一致性|

生物统计学-参数估计 参数估计需要未知参数的估计量和一定置信度 估计方法:用点估计估计一个值;用区间估计估计值的可能区间和是该值的可能性。 对估计值的评价标准: 无偏性是估计量(不一定是样本均值)抽样分布的数学期望等与总体参数的真值。 有效是有时几组数据都是无偏的,但是此时有效数是方差最小的。 一致性是指样本变大,估计越准。 现存方法都是通过这三个评价标准...