首页 > 其他分享 >Gradient Descent

Gradient Descent

时间:2023-04-23 15:56:38浏览次数:36  
标签:prime partial Descent Gradient lr 计算 pass 最优

Learning Rate

关于lr的问题

  • lr太小

    模型收敛的很慢,时间开销大

  • lr太大

    每次更新参数步子迈的很大,容易越过最优解

image-20230423100204282

我们追求的是红色的情况

动态调整lr

基本原则:先大再小

在训练开始时,此时我们距离最优解还较远,lr可以设置稍大些,以较快的速度接近最优解。在训练的后期,此时我们已经很接近最优解了,lr要设置的小一些,慢慢地逼近最优解,否则会越过最优解。

具体实现如下,第t次更新时,lr设置如下

\[\eta^t = \eta / \sqrt{t+1} \]

这样随着训练的进行,lr逐渐减小

不同参数给不同的lr

每一个参数都设置不同的learning rate,Adagrad优化器

image-20230423100940399

与传统的lr相比,Adagrad的lr除以root mean square,这样可以使得所有参数的lr都是不同的

具体实现如下

image-20230423101221074

实际上Adagrad综合考虑了动态调整lr给不同参数不同lr,数学表达如下

image-20230423102135003

Stochastic Gradient Descent

stochastic gradient descent 随机梯度下降

  • Gradient Descent

    计算Loss需要计算所有的样本,然后才更新一次参数

  • SGD

    计算Loss只需计算1个样本,然后更新一次参数,收敛速度较快

image-20230423104047368

Feature Scaling

使得特征向量中不同的分量(也就是样本不同的特征)具有相同(近似)的分布,换句话说使得不同的特征的取值范围近似(考虑Batch-Normalization)

举个栗子,注意2个特征x1,x2的取值范围

image-20230423104855191

直观理解就是,不做feature scaling(左/蓝),梯度下降时,绕了一圈,没有直接向最优解方向前进;做feature scaling(右/绿),梯度下降时,方向直指最优解

具体做法,对相同维度的所有样本的特征分量做标准化(归一化)

image-20230423105355211

Backpropagation

反向传播算法,是在梯度下降算法中高效计算梯度的方法

要计算损失函数对某个参数的梯度,分为forward passbackward pass两个步骤

image-20230423145730570

foward pass

对于神经网络中的每一个神经元,按照如下方式计算出\(\partial z / \partial w\),此即forward pass

image-20230423145853764

举例如下

image-20230423150232143

backward pass

forward pass已经计算出了神经网络中所有神经元的\(\partial z / \partial w\),而我们的目标是\(\partial C / \partial w\),所以接下来backward pass的目标就是计算\(\partial C / \partial z\),二者相乘即得所求梯度(求偏导链式法则)

image-20230423151121434

\(\partial C / \partial z\)可以写成如下形式

image-20230423151224157

\(\partial C / \partial z^\prime\)和\(\partial C / \partial z^{\prime\prime}\)两项如何计算,考虑两种情况

  • case 1:output layer

    image-20230423152032101

    \(\partial C / \partial y_1\)和\(\partial C / \partial y_2\)取决于损失函数如何定义,\(\partial y_1 / \partial z^\prime\)和\(\partial y_2 / \partial z^{\prime\prime}\)取决于输出层的激活函数

    至此为止,完成了\(\partial C / \partial w\)的计算

  • case 2:Not output layer

    image-20230423152521012

    与最开始分析backward pass时的问题类似,我们要求\(\partial C / \partial z^\prime\)就要先求\(\partial C / \partial z_a\)和\(\partial C / \partial z_b\),\(\partial C / \partial z^{\prime\prime}\)同理

    那么问题来了,如何计算\(\partial C / \partial z_a\)和\(\partial C / \partial z_b\),开始套娃了,又可以分case1和case2,直到output layer,计算完毕

    如果我们把解决求\(\partial C / \partial z\)这个问题的方向倒过来就可以高效地(一直从后往前计算)计算出结果。如果不倒过来看的话,每计算一个\(\partial C / \partial z\)都要向后看直到output layer。反向传播,其实相当于倒着看的正向传播

    image-20230423154056657

总结

image-20230423154633684

参考:李宏毅老师课程 https://youtu.be/yiY4nPOzJEg

标签:prime,partial,Descent,Gradient,lr,计算,pass,最优
From: https://www.cnblogs.com/dctwan/p/17346764.html

相关文章

  • css 利用 linear-gradient 实现条纹背景
    1.水平条纹背景当给背景设置渐变效果时,默认的渐变方向是垂直由上到下的,效果如下:{background:linear-gradient(#aaa,#ddd);}尝试拉近色标的距离,会发现渐变区域变小了:{background:linear-gradient(#aaa40%,#ddd60%);}当渐变色的色标设置为相同位置时,过渡区......
  • 【五期邹昱夫】arXiv(22)iDLG: Improved Deep Leakage from Gradients
    "ZhaoB,MopuriKR,BilenH.idlg:Improveddeepleakagefromgradients[J].arXivpreprintarXiv:2001.02610,2020."  本文发现共享梯度肯定会泄露数据真实标签。我们提出了一种简单但可靠的方法来从梯度中提取准确的数据。与DLG相比,可以提取基本真实标签,因此将其......
  • 【五期邹昱夫】CCF-A(NeurIPS'19)Deep leakage from gradients.
    "Zhu,Ligeng,ZhijianLiu,andSongHan."Deepleakagefromgradients."Advancesinneuralinformationprocessingsystems32(2019)."  本文从公开共享的梯度中获得私有训练数据。首先随机生成一对“伪”输入和标签,然后执行正常的向前和向后操作。在从伪数据导出......
  • Phasic Policy Gradient
    发表时间:2021(ICML2021)文章要点:这篇文章想说,通常强化都有一个policy网络一个value网络,这两部分要么分开训两个网络,要么合到一起作为一个网络的两个头。分开的好处是policy和value互相不会影响,合到一起的好处是feature是共享的,训练的时候相互之间会帮助训练。另一个观察到的现象......
  • Gradient-based Editing of Memory Examples for Online Task-free Continual Learnin
    摘要:在缺少明确的任务边界和任务标识的情况下,本文探索了task-freecontinuallearning(任务具有独立的数据标签空间,在训练和测试的过程中不提供任务识别符),在这个场景中需......
  • Gradient Descent
    GradientDescentUseloopsanddeltatoreducethedifferencebetweeny_predictandyimportpandasaspdimportnumpyasnpimportmatplotlib.pyplotasplt%m......
  • SGDR: Stochastic Gradient Descent with Warm Restarts
    SGDR和CLR比较类似,都是给学习率设置周期和变化范围,按照下面的公式让学习率周期性的变化:总的来说,就是在一个周期开始时,将学习率设置为最大值,然后按照余弦函数减小到......
  • 用于超大图像的训练策略:Patch Gradient Descent
    前言本文旨在计算和内存限制的情况下,解决在大规模图像上训练现有CNN架构的问题。提出PatchGD,它基于这样的假设:与其一次对整个图像执行基于梯度的更新,不如一次只对图像的......
  • Gradient descent梯度下降(Steepest descent)
    ​​WelcomeToMyBlog​​​梯度下降(gradientdescent)也叫最速下降(steepestdescent),用来求解无约束最优化问题的一种常用方法,结果是局部最优解,对于目标函数为凸......
  • 梯度下降算法 Gradient Descent
    梯度下降算法GradientDescent梯度下降算法是一种被广泛使用的优化算法。在读论文的时候碰到了一种参数优化问题:在函数\(F\)中有若干参数是不确定的,已知\(n\)组训练数......