精华内容
下载资源
问答
  • 常见梯度下降法

    千次阅读 2018-02-24 14:56:50
    (学习cs231n的笔记,图片就直接偷懒贴了视频的截图,见谅)一、最常见的三种梯度下降法:批量梯度下降(BGD Batch gradient descent)BGD 采用整个训练集的数据来计算 cost function 对参数的梯度缺点:就对整个...
    (学习cs231n的笔记,图片就直接偷懒贴了视频的截图,见谅)

    一、最常见的三种梯度下降法:
    • 批量梯度下降(BGD Batch gradient descent)
    BGD 采用整个训练集的数据来计算 cost function 对参数的梯度

    缺点:就对整个数据集计算梯度,所以计算起来非常慢

    • 随机梯度下降(SGD stochastic gradient descent)
    每次更新时对每个样本进行梯度更新,速度快,可以随时增加新的样本,但是会造成剧烈震荡

    • Mini-batch gradient descent(MBGD)
    每一次利用一小批样本,即 n 个样本进行计算, 这样它可以降低参数更新时的方差,收敛更稳定


    总结:以上三种的区别仅仅是训练样本大小的不同,但是没有增加其他权重,会遇到如同SGD的问题
    Tensorflow实现函数:tf.train.GradientDescentOptimizer

    二、随机梯度下降法(SGD )存在的问题:
    1. 当存在两个或更多个权值矩阵时,某个方向的的权值改变对Loss影响很大,而另外的方向影响比较小,这就会造成权值矩阵在影响大的方向上震荡,然后缓慢的沿着影响小的方向前进

    2. 存在局部最小值(鞍点),在局部最小值时,会停止更新,但是在局部最小值附近,由于梯度非常小,会使得更新非常慢
    3. 我们经常用小批量的数据对Loss和梯度进行估计,这意味着我们每一步并不是去计算真是的梯度,而是在当前点对梯度进行噪声估计,所以优化的方向会比较曲折,也就是需要更多的时间

    三、改进的梯度下降法:
    1、Momentum
    在梯度改变时增加惯性因素,在下一次的梯度时,会继续沿着上一次的梯度方向前进,rho即ρ,意思是摩擦系数
    Tensorflow实现函数:tf.train.MomentumOptimizer(self, learning_rate, momentum,
    use_locking=False, name="Momentum", use_nesterov=False)





    2、Nesterov momentum



    比普通带动量的方式更加更加柔和,相当于提前知道梯度的变化方向,然后做出改变
    Tensorflow实现函数:tf.train.MomentumOptimizer(self, learning_rate, momentum,
    use_locking=False, name="Momentum", use_nesterov=False)
    设置use_nesterov=True

    总结:Momentum和Nesterov momentum的思路很像,都是在梯度改变时,考虑了上一时刻的梯度方向

    3、AdaGrad
    梯度更新规则:

    其中 g 为:t 时刻参数 θ_i 的梯度

    如果是普通的 SGD, 那么 θ_i 在每一时刻的梯度更新公式为:

    但这里的 learning rate η 也随 t 和 i 而变
    一般 η 就取 0.01

    缺点:因为grad_squared是单调递增的,这会导致学习步长会越来越小,越来越慢。在凸函数的情况下比较适用,但是在凹函数的情况下,会卡在局部最优值附近
    TensorFlow函数:tf.train.AdagradOptimizer(self, learning_rate, initial_accumulator_value=0.1,
    use_locking=False, name="Adagrad")

    4、RMSProp
    是对AdaGrad的一个变体
    RMSprop 是 Geoff Hinton 提出的一种自适应学习率方法。
    RMSprop 和 Adadelta 都是为了解决 Adagrad 学习率急剧下降问题的,Hinton 建议设定 γ 为 0.9, 学习率 η 为 0.001。

    参考文章:https://www.leiphone.com/news/201706/e0PuNeEzaXWsMPZX.html
    http://www.mooc.ai/course/268/learn?lessonid=2175#lesson/2175


    展开全文
  • 梯度下降算法

    千次阅读 2019-11-29 14:14:14
    梯度下降法的基本思想可以类比为一个下山的过程 假设这样一个场景: 一个人被困在山上,需要从山上下来(i.e. 找到山的最低点,也就是山谷)。但此时山上的浓雾很大,导致可视度很低。 因此,下山的路径就无法确定,他...
    4.梯度下降

    4.1什么是梯度下降?

    梯度下降法的基本思想可以类比为一个下山的过程

    假设这样一个场景:

    一个人被困在山上,需要从山上下来(i.e. 找到山的最低点,也就是山谷)。但此时山上的浓雾很大,导致可视度很低。

    因此,下山的路径就无法确定,他必须利用自己周围的信息去找到下山的路径。这个时候,他就可以利用梯度下降算法来帮助自己下山。

    具体来说就是,以他当前的所处的位置为基准,寻找这个位置最陡峭的地方,然后朝着山的高度下降的地方走,(同理,如果我们的目标是上山,也就是爬到山顶,那么此时应该是朝着最陡峭的方向往上走)。然后每走一段距离,都反复采用同一个方法,最后就能成功的抵达山谷。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z0kl1M85-1575007819305)(file:///C:/Users/%E6%B8%85%E9%A3%8E/Desktop/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AF%BE%E4%BB%B6/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AE%B2%E4%B9%89/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%EF%BC%88%E7%AE%97%E6%B3%95%E7%AF%87%EF%BC%89/%E7%BA%BF%E6%80%A7%E5%9B%9E%E5%BD%92/images/%E6%A2%AF%E5%BA%A6%E4%B8%8B%E9%99%8D%E6%B3%951.png)]

    梯度下降的基本过程就和下山的场景很类似。

    首先,我们有一个可微分的函数。这个函数就代表着一座山。

    我们的目标就是找到这个函数的最小值,也就是山底。

    根据之前的场景假设,最快的下山的方式就是找到当前位置最陡峭的方向,然后沿着此方向向下走,对应到函数中,就是找到给定点的梯度 ,然后朝着梯度相反的方向,就能让函数值下降的最快!因为梯度的方向就是函数值变化最快的方向。 所以,我们重复利用这个方法,反复求取梯度,最后就能到达局部的最小值,这就类似于我们下山的过程。而求取梯度就确定了最陡峭的方向,也就是场景中测量方向的手段。

    4.2 梯度的概念

    梯度是微积分中一个很重要的概念

    在单变量函数中,梯度其实就是函数的微分,代表着函数在某个给定点的切线的斜率;

    在多变量函数中,梯度就是一个向量,向量有方向,梯度的方向就指出了函数在给定点的上升最快的方向;

    这也就说明了我们为什么要千方百计是求取梯度!

    4.3 梯度下降举例

    • 1.单变量函数的梯度下降

      我们假设有一个单变量的函数 :J(θ) = θ2

      函数的微分:J、(θ) = 2θ

      初始化,起点为: θ0 = 1

      学习率:α = 0.4

      我们开始进行梯度下降的迭代计算过程:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L5kQu5OQ-1575007819311)(file:///C:/Users/%E6%B8%85%E9%A3%8E/Desktop/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AF%BE%E4%BB%B6/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AE%B2%E4%B9%89/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%EF%BC%88%E7%AE%97%E6%B3%95%E7%AF%87%EF%BC%89/%E7%BA%BF%E6%80%A7%E5%9B%9E%E5%BD%92/images/%E6%A2%AF%E5%BA%A6%E4%B8%8B%E9%99%8D%E6%B3%952.png)]

    如图,经过四次的运算,也就是走了四步,基本就抵达了函数的最低点,也就是山底

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RBLbDfTm-1575007819312)(file:///C:/Users/%E6%B8%85%E9%A3%8E/Desktop/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AF%BE%E4%BB%B6/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AE%B2%E4%B9%89/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%EF%BC%88%E7%AE%97%E6%B3%95%E7%AF%87%EF%BC%89/%E7%BA%BF%E6%80%A7%E5%9B%9E%E5%BD%92/images/%E6%A2%AF%E5%BA%A6%E4%B8%8B%E9%99%8D%E6%B3%953.png)]

    • 2.多变量函数的梯度下降

      我们假设有一个目标函数 ::J(θ) = θ12 + θ22

      现在要通过梯度下降法计算这个函数的最小值。我们通过观察就能发现最小值其实就是 (0,0)点。但是接下 来,我们会从梯度下降算法开始一步步计算到这个最小值! 我们假设初始的起点为: θ0 = (1, 3)

      初始的学习率为:α = 0.1

      函数的梯度为:▽:J(θ) =< 2θ1 ,2θ2>

      进行多次迭代:

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cwJGzvFs-1575007819313)(file:///C:/Users/%E6%B8%85%E9%A3%8E/Desktop/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AF%BE%E4%BB%B6/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AE%B2%E4%B9%89/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%EF%BC%88%E7%AE%97%E6%B3%95%E7%AF%87%EF%BC%89/%E7%BA%BF%E6%80%A7%E5%9B%9E%E5%BD%92/images/%E6%A2%AF%E5%BA%A6%E4%B8%8B%E9%99%8D%E6%B3%954.png)]

      我们发现,已经基本靠近函数的最小值点

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o1IOVpd5-1575007819314)(file:///C:/Users/%E6%B8%85%E9%A3%8E/Desktop/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AF%BE%E4%BB%B6/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AE%B2%E4%B9%89/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%EF%BC%88%E7%AE%97%E6%B3%95%E7%AF%87%EF%BC%89/%E7%BA%BF%E6%80%A7%E5%9B%9E%E5%BD%92/images/%E6%A2%AF%E5%BA%A6%E4%B8%8B%E9%99%8D%E6%B3%955.png)]

    4.4 梯度下降的公式

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kVwcTw2n-1575007819315)(file:///C:/Users/%E6%B8%85%E9%A3%8E/Desktop/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AF%BE%E4%BB%B6/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AE%B2%E4%B9%89/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%EF%BC%88%E7%AE%97%E6%B3%95%E7%AF%87%EF%BC%89/%E7%BA%BF%E6%80%A7%E5%9B%9E%E5%BD%92/images/%E6%A2%AF%E5%BA%A6%E4%B8%8B%E9%99%8D%E5%85%AC%E5%BC%8F.png)]

    1)a是什么含义?

    a在梯度下降算法中被称作学习率或者步长,意味着我们可以通过a来控制每一步走的距离,以保证不要步子跨的太大,错过最低点,同时也不要走的太慢,导致效率很低。所以a的选择在梯度下降法中很重要。a不能太大也不能太小。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MJyer6Th-1575007819316)(file:///C:/Users/%E6%B8%85%E9%A3%8E/Desktop/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AF%BE%E4%BB%B6/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AE%B2%E4%B9%89/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%EF%BC%88%E7%AE%97%E6%B3%95%E7%AF%87%EF%BC%89/%E7%BA%BF%E6%80%A7%E5%9B%9E%E5%BD%92/images/%E6%A2%AF%E5%BA%A6%E4%B8%8B%E9%99%8D%E6%B3%95%CE%B1%E8%AF%B4%E6%98%8E.png)]

    2)为什么梯度要乘以一个负号?

    梯度前面加上一个负号,就意味着朝梯度相反的方向走。

    所以有了梯度下降这样一个优化算法,回归就有了“自动学习”的能力

    5.梯度下降和正规方程的对比
    梯度下降正规方程
    需要选择学习率不需要
    需要迭代求解一次运算得出
    特征数量较大可以使用需要计算方程,时间复杂度高O(n3)
    6.算法选择依据
    • 小规模数据
      • 正规方程 : LinearRegression(不能解决拟合问题)
      • 岭回归
    • 大规模数据
      • 梯度下降法:SGDRegressor

    五、梯度下降法再次介绍

    常见的梯度下降算法有:

    • 全梯度下降算法(Full gradient descent),
    • 随机梯度下降算法(Stochastic gradient descent),
    • 小批量梯度下降算法(Mini-batch gradient descent),
    • 随机平均梯度下降算法(Stochastic average gradient descent)
    1.全梯度下降算法(FG)

    计算训练集所有样本误差,对其求和再取平均值作为目标函数。

    权重向量沿梯度相反方向移动,从而使当前目标函数减少的最多。

    因为在执行每次更新时,我们需要在整个数据集上计算所有的梯度,所以速度会很慢,同时,无法处理超出内存限制的数据集。

    批梯度下降法同样也不能在线更新模型,即在运行的过程中,不能增加新的样本。

    其是在整个训练数据集上计算损失函数关于参数 θ的梯度:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cfuUOqu2-1575007819317)(file:///C:/Users/%E6%B8%85%E9%A3%8E/Desktop/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AF%BE%E4%BB%B6/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AE%B2%E4%B9%89/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%EF%BC%88%E7%AE%97%E6%B3%95%E7%AF%87%EF%BC%89/%E7%BA%BF%E6%80%A7%E5%9B%9E%E5%BD%92/images/GD%E4%B8%8B%E9%99%8D%E5%85%AC%E5%BC%8F.png)]

    2.随机梯度下降法(SG)

    由于FG每迭代更新一次权重都需要重新计算所有样本误差,而实际问题中经常有上亿的训练样本,故效率偏低,且容易陷入局部最优解,因此提出了随机梯度下降算法。

    其每轮计算的目标函数不再是全体样本误差,而仅是单个样本误差,即每次只带入计算一个样本目标函数的梯度来更新权重,再取下一个样本重复此过程,知道损失函数值停止下降或损失函数值小于某个可以容忍的阈值。

    此过程简单,高效,通常可以较好地避免更新迭代收敛到局部最优解。其迭代形式为

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IrdEcxdr-1575007819318)(file:///C:/Users/%E6%B8%85%E9%A3%8E/Desktop/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AF%BE%E4%BB%B6/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AE%B2%E4%B9%89/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%EF%BC%88%E7%AE%97%E6%B3%95%E7%AF%87%EF%BC%89/%E7%BA%BF%E6%80%A7%E5%9B%9E%E5%BD%92/images/SG%E4%B8%8B%E9%99%8D%E5%85%AC%E5%BC%8F.png)]

    其中,x(i)表示一条训练样本的特征值,y(i)表示一条训练样本的标签值

    但是由于,SG每次只使用一个样本迭代,若遇上噪声则容易陷入局部最优解。

    3.小批量梯度下降算法(mini-barch)

    小批量梯度下降算法是FG和SG的这种方案,在一定程度上兼顾了以上两种方法的优点。

    每次从训练样本集上随机抽取一个小样本集,在抽出来的小样本集上采用FG迭代更新权重。

    被抽出的小样本集所含样本点的个数称为batch_size,通常设置为2的幂次方,更有利于GPU加速处理。

    特别的,若batch_size=1,则变成了SG;若batch_size=n,则变成了FG.其迭代形式为

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LhK9Qh5L-1575007819318)(file:///C:/Users/%E6%B8%85%E9%A3%8E/Desktop/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AF%BE%E4%BB%B6/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AE%B2%E4%B9%89/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%EF%BC%88%E7%AE%97%E6%B3%95%E7%AF%87%EF%BC%89/%E7%BA%BF%E6%80%A7%E5%9B%9E%E5%BD%92/images/mini-batch%E4%B8%8B%E9%99%8D%E5%85%AC%E5%BC%8F.png)]

    4.随机平均梯度下降算法(SAG)

    在SG方法中,虽然避开了运算成本大的问题,但对于大数据训练而言,SG效果常不尽如人意,因为每一轮梯度更新都完全与上一轮的数据和梯度无关。

    随机平均梯度算法客服了这个问题,在内存中为每一个样本都维护一个旧的梯度,随机选择第i个样本来更新此样本的梯度,其他样本的梯度保持不变,然后求得所有梯度的平均值,进而更新了参数。

    如此,每一轮更新仅需计算一个样本的梯度,计算成本等同于SG,但收敛速度快得多。

    展开全文
  • 名词解释 batch 指的是每一次迭代计算参数的时候都是对整个样本进行遍历 计算流程 对于样本数量为m个的训练集 首先初始化参数值(对于有多个局部极值local ...α是剃度速率 也就是控制每次收敛幅度的一个系数 ...

    名词解释

    batch 指的是每一次迭代计算参数的时候都是对整个样本进行遍历

    计算流程

    对于样本数量为m个的训练集

    首先初始化参数值(对于有多个局部极值local optimum的问题 不同的初始化值会得到不同的局部极值)

    即令每一个θ都为某一个值

    然后利用公式

    h是预测值

    y是样本输出值

    x是样本输入值

    j是样本数

    α是剃度速率 也就是控制每次收敛幅度的一个系数

     

    迭代计算更新θ值,直至变化量为0等。

    原理解释

    h与y的差值表示预测值与样本实际值之间的差距

    通过减小这个差距来拟合 也就是得到更接近样本的输入与输出关系

    然后通过拟合来的关系函数来计算需要的预测

     

    公式推导

    x表示样本的输入值 θ表示输入值前面的参数

    定义为差值

    求最值的情况利用偏导数

    最后得到结果

     

    矩阵计算

    以上为原创,未经许可,不可转载。

     

    转载于:https://www.cnblogs.com/baaingSheep/p/5183225.html

    展开全文
  • 在图中任意取一个θ值作为其初始值,然后不断迭代最终找到代价函数导数为0点(最小值)的过程,就是求解代价函数参数θ的过程(学习),也就是梯度下降法的物理含义。它的思想为,只要顺着梯度方向下降迭代,就能...

    有监督学习和无监督学习

    机器学习,分为有监督学习和无监督学习。
    有监督学习,就是有训练集,有label,我们是可以知道模型输出是什么样子的。而无监督学习,没有训练集,没有label,提前无法知道输出的样子。
    有监督学习分为两种:回归和分类。模型输出若为连续变量,就是回归;模型输出为离散值,就是分类。
    无监督学习常见的是聚类。给定一堆数据集,从中找出相似的类簇,这个过程没有label。

    神经网络,深度学习,SVM和决策树,都是有监督学习。下面介绍的方法也只适用于有监督学习。

    模型

    机器学习最一般的模型就是下面这个图。
    在这里插入图片描述
    给定m个训练集,每个训练集有n个特征。训练集作为X输入给模型,经过训练后模型就是h(x)。
    线性模型的求解,就是求解h(x)表达式的过程。

    线性模型的表示

    线性模型的表达式为

    hθ(x)=θ0+θ1x1+θ2x2+…+θnxn

    [1]
    其中
    x1~xn就是n个特征,作为模型的输入
    θ0~θn,就是线性模型的n+1个参数

    根据m个训练集,求解θ0θn的具体数值的过程,就是所谓的学习。求解线性模型,就是求其参数θ0θn的解。

    线性模型求解思路

    我们当然是希望求解出来的模型,预测值尽量逼近真实值。

    为了更为直观的说明线性模型,以最简单的线性模型hθ(x)=θ0+θ1x为例,用下图表示,红色点为训练集。
    在这里插入图片描述
    图中有4(m)个训练集,h(x)是最终求得的模型。

    我们希望模型的预测值与真实值之间的差别,尽量的小。用欧氏距离来表示:
    J=(h(x(1))−y(1))2+(h(x(2))−y(2))2+(h(x(3))−y(3))2+(h(x(4))−y(4))2

    [2]
    其中 x(1),和y(1)表示第一个训练集的特征,和真实值

    J 更一般的表达式为
    在这里插入图片描述

    [3]
    这里的预测值与真实值之间的欧氏距离之和J,就是所谓的代价函数。找到能使代价函数最小值点的参数θ,就是线性模型的解。

    代价函数

    代价函数的定义如下

    在这里插入图片描述

    [4 ]
    它的物理含义就是预测值与真实值之间的差别。差别越小,就说明我们的模型和真实模型越接近。代价函数J是其参数θ的二次函数。代价函数的表达式,就是均方差MSE(Mean Square Error)的定义。

    这里还是用简化的线性模型来说明问题,另式[3]中的θ1=0和y(i)=1,可得代价函数的曲线为
    在这里插入图片描述
    这里把代价函数看成曲线,是最简单的情况。代价函数更多情况下是以多维曲面的形态出现的(曲面也有最低点)。

    梯度下降法

    图3中,代价函数的最小值是其导数为零的点。
    在这里插入图片描述
    在图中任意取一个θ值作为其初始值,然后不断迭代最终找到代价函数导数为0点(最小值)的过程,就是求解代价函数参数θ的过程(学习),也就是梯度下降法的物理含义。它的思想为,只要顺着梯度方向下降迭代,就能找到代价函数的最小值。

    对于代价函数是多维曲面的情况,可以把曲面类比成山,想象梯度下降法就是从山上往下走,每一步顺着梯度方向,最终肯定就能走到山谷最低点。

    无论是曲线还是曲面,会不会有多个局部最低点呢?答案是会的,梯度下降法很可能找不到真正的最低点,它可能只能找到局部最低点。

    但好消息是,线性模型的代价函数,在数学上已经被证明为凸函数,即这种函数的局部最低点就是其最低点。所以我们在线性模型中用梯度下降思路求解最小值是没有问题的。

    最小均方算法

    最小均方算法``LMS(Least Mean Square)是梯度下降思想的具体实现,它是由Bernard Widrow和Marcian E. Hoff提出的,所以也叫Widrow-Hoff学习规则。

    为什么叫最小均方呢,这是因为代价函数的表达式,就是均方差``MSE(Mean Square Error)的定义。

    LMS算法是这样的

    Repeat until convergence (for every j){
    在这里插入图片描述
    [5]
    }(update θj simultaneously)

    其中

    			θj表示线性模型的某一个参数
    			:=是赋值符号
    			α表示学习速率
    			convergence是收敛
    

    它说明,为了求得任意一个参数θj的值,首先我们需要对θj取一个初值,然后顺着代价函数J的梯度方向( ∂/∂θj)不断迭代,直到θj的值收敛(即本次迭代和上次迭代的值为同一个),就找到了θj的值。

    对每一个参数都一起进行这个迭代过程,就能求得每一个参数的值。不过这里要注意的是,要结束一轮迭代后,才对各个参数的值做更新。

    这里要注意的是学习速率α,它会把梯度值放大。所以学习速率越大,寻找代价函数最小值过程中迭代的步长也就越大。

    1.学习速率太大,有可能导致参数不收敛,或收敛到最后震荡较大
    2.学习速率太小,则肯定会收敛,但收敛迭代次数会很大
    3.一般情况下,每一次迭代后,梯度都会变小。所以即便学习速率是固定值,学习步长也会随着迭代次数增加而减小
    

    代价函数的形状也与各个特征x的大小相关,为了让代价函数形状均衡,一般要对特征做归一化(比如-1)

    最小均方算法的一般化表达推导

    将代价函数的表达式[4]带入LMS算法式[5]中的α∂/∂θjJ(θ),用偏微分对表达式化简,可得
    在这里插入图片描述
    [6]
    将线性模型的表达式[1]带入[6]中的∂/∂θj(h(x(i))−y(i))
    在这里插入图片描述
    [7]
    所以,式[6]可简化为
    在这里插入图片描述
    [8]
    将式[8]带入LMS算法表达式[5]中,可得LMS算法的一般化表达式为

    Repeat until convergence (for every j){
    在这里插入图片描述
    [9]
    }(update θj simultaneously)

    参考

    【1】Andrew NG. machine learning class at coursera

    展开全文
  • 详解梯度下降算法

    千次阅读 2021-08-20 10:47:46
    一、 什么是梯度下降算法 梯度下降法(Gradient descent )是一个一阶最优化算法,通常也称为最陡下降法 ,要使用梯度下降法找到一个函数的局部极小值 ,必须向函数上当前点对应梯度(或者是近似梯度)的反方向的...
  • 利用梯度下降法求函数极小值,或稍作修改用梯度上升法求极大值,附带测试函数
  • 因此直接使用梯度下降法求极值,注意学习率需要衰减。 class Solution { public: double getMinDistSum(vector<vector<int>>& positions) { double eps = 1e-7; double alpha = 1.0; double ...
  • 梯度下降算法的正确步骤是什么?

    万次阅读 2018-08-27 09:09:42
    梯度下降算法的正确步骤是什么?   a.用随机值初始化权重和偏差 b.把输入传入网络,得到输出值 c.计算预测值和真实值之间的误差 d.对每一个产生误差的神经元,调整相应的(权重)值以减小误差 e.重复迭代...
  • 简述梯度下降法

    千次阅读 2019-11-13 20:08:42
    简述梯度下降法   在机器学习中,梯度下降法是一种常用的优化方法,是解决无约束优化问题最简单、最经典的方法之一。要了解梯度下降法是什么,首先就要了解什么是梯度。 1、梯度   在微积分里面,对多元函数的...
  • 梯度下降法

    2018-09-29 17:29:39
    那就是梯度下降法在机器学习领域中并不是一个类似KNN的机器学习算法,而时一个基于搜索的最优化方法。梯度下降法能够是一个损失函数最小化,而梯度上升法则是使一个效用函数最大化。 那什么是梯度呢?从数学方面来...
  • 梯度下降算法过程详细解读

    万次阅读 多人点赞 2018-11-05 11:53:00
    对于一开始想要了解“梯度下降”是个什么玩意儿时,这种类比是非常有助于理解的。但是,当我大概知道了梯度下降是什么东西之后,我就好奇了,梯度下降究竟是怎样寻找到模型的最优参数的?不能一想到梯度下降,脑海...
  • 神经网络中的梯度下降算法

    千次阅读 2018-01-03 10:16:44
    一、概述  梯度下降算法(Gradient Descent Optimization)是神经网络模型训练最常用的优化算法。对于深度学习模型,基本都是采用梯度下降算法来进行优化训练的。梯度下降算法背后的原理:目标函数关于参数的梯度...
  • 梯度下降算法在机器学习与神经网络中有广泛的应用,主要用来求最优参数,下面我们通过一个最简单的例子来演示梯度下降算法过程 示例: 举例:y = x ^ 2 ,通过梯度下降算法求y取最小值(极小值)时候的最优解x ...
  • 代码梯度下降法 machine-learning 最近打算实现一些经典的算法以加深自己对这些算法的理解,例如svm,xgboost,logistic regression等。当然写的代码类似于DEMO的性质,可能考虑的不是很全面,以学习为主。 Regression...
  • 在神经网络的训练中主要是寻找正对损失函数最小的参数值W的值。 【1】优化梯度下降:https://ruder.io/optimizing-gradient-descent/
  • python基于梯度下降法实现感知机算法感知机简介基于梯度下降法实现感知机随机梯度下降法批量梯度下降法下面是测试代码 感知机简介 感知机在线性函数上套了一个激活函数(阶跃函数),使之成为一个二分类判别模型。...
  • 在应用机器学习算法时,我们常采用梯度下降法来对才用的算法进行训练。梯度下降法有三种不同的形式:批量梯度下降(Batch Gradient Descent)、随机梯度下降(Stochastic Gradient Descent)以及小批量梯度下降...
  • 详解随机梯度下降法(Stochastic Gradient Descent,SGD)

    万次阅读 多人点赞 2021-02-28 22:18:28
    深度学习最常用的优化方法就是随机梯度下降法,但是随机梯度下降法在某些情况下会失效,这是为什么呢?带着这个问题我们接着往下看。 一个经典的例子就是假设你现在在山上,为了以最快的速度下山,且视线良好,你...
  • 梯度下降是一种非常通用的算法,能够为大范围的问题找到最优解 中心思想为:迭代地调整参数从而使成本函数最小化 首先使用一个随机的θ值(随机初始化),然后逐步改进,每次踏出一步,每一步都尝试降低一点成本函数...
  • 神经网络的组成单元——神经元,神经元也叫做感知机。 在机器学习算法中,有时候需要对原始的模型构建损失函数,...而在求解机器学习参数的优化算法中,使用较多的就是基于梯度下降的优化算法(Gradient Descent, GD)。
  • 批量梯度下降算法及简单Python实现

    千次阅读 2018-09-28 18:32:22
    算法理论 为了实现监督学习,假设对于因变量y有自变量x1x2,则有y=θ1x1+θ2x2+θ0 ...对θ先随机初始化然后不断更新,更新算法使用梯度下降算法: 该更新公式的大致推导如下: 那么需要计算的是...
  • 随机梯度下降法(SGD)

    2018-07-02 08:14:55
    随机梯度下降法(SGD):它的具体思路是在更新每一参数时都使用一个样本来进行更新,也就是方程中的m等于1。每一次跟新参数都用一个样本,更新很多次。如果样本量很大的情况(例如几十万),那么可能只用其中几万条...
  • (1) traingd:基本梯度下降法,收敛速度比较慢。 (2) traingda:自适应学习率的梯度下降法 (3) traingdm:带有动量项的梯度下降法, 通常要比traingd 速度快。 (4) traingdx: 带有动量项的自适应学习算法, ...
  • 梯度下降法的原理与实现

    万次阅读 2019-01-07 21:20:32
    梯度下降法目的是为了“下降”,下降的方法是按照“梯度”。比如你在一座山上,当前你只能迈出一步,如何走才能使你的高度下降的最多呢,根据梯度的理论,我们沿着当前梯度的反方向走,会让我们的下降幅度最大。 ...
  • 三种常见梯度下降优化算法总结

    千次阅读 2020-09-23 11:28:26
    由于学习率和训练数据集的不同,一般可以将梯度下降法分为三种:BGD,SGD,mini-BGD 1.批量梯度下降(Batch Gradient Descent) 实现梯度下降,需要计算的是改变每个 θj\theta_jθj​,成本函数(如MSE)会改变...
  • 梯度下降法的推导(非常详细、易懂的推导)

    万次阅读 多人点赞 2018-07-05 19:48:40
    梯度下降算法的公式非常简单,”沿着梯度的反方向(坡度最陡)“是我们日常经验得到的,其本质的原因到底是什么呢?为什么局部下降最快的方向就是梯度的负方向呢?也许很多朋友还不太清楚。没关系,接下来我将以通俗...
  • 梯度下降法 知识点: 偏导数、微积分、局部最优解 概念介绍 梯度下降法目的是为了“下降”,下降的方法是按照“梯度”。比如你在一座山上,当前你只能迈出一步,如何走才能使你的高度下降的最多呢,根据梯度...
  • 而大多数迭代下降算法都具有的共同点是在得到某次迭代点xkx^kxk后,需要按照一定规则来确定一个方向dkd^kdk,沿着该方向在直线上求函数的极小点得到下一个迭代点xxxk+1 。 这样不断在一维的目标函数上,求

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 399
精华内容 159
关键字:

剃度下降法