机器学习实战(基于scikit-learn和TensorFlow)学习心得(17)--梯度下降法

本文探讨了机器学习中的梯度下降法,包括批量梯度下降、随机梯度下降和小批量梯度下降。批量梯度下降使用整个训练集计算梯度,适合小数据集;随机梯度下降每次迭代选取训练集的一个随机样本,适用于大数据集但可能不精确;小批量梯度下降取两者的中间路线,平衡效率和精度。学习率的调整对于梯度下降的收敛至关重要。
摘要由CSDN通过智能技术生成

当我们需要寻找多元线性函数回归方程的时候,除了直接计算法,通过多次梯度的迭代求得最优的theta值.

  1. batch Gradient Descent
    批次梯度下降法,这个下降法就是按部就班的来计算梯度,找切线位置通过几次迭代找到最优解.
    在这里插入图片描述注意,上面的函数中包含theta,所以说我们要随机设一个初始值以便开始迭代.

计算出cost function的梯度之后就可以向最小梯度的方向迭代了.但要注意的是设计合理的步长,如果步长太高就会跳过最优解,如果步长太小就会增加迭代的次数
在这里插入图片描述
在这里插入图片描述
上图是对于同一个training set使用不同的步长的前10次迭代的结果.

  1. Stochastic Gradient Descent(随机梯度)
    Batch Gradient Descent的主要问题在于,它使用整个训练集来计算每一步的梯度,这在训练集很大时非常慢。相反,随机梯度下降在每一步中从训练集中选择一个随机实例,并仅基于该单个实例来计算梯度。
    在这里插入图片描述
    从上面的code可以看出来,公式与批次梯度的公式是一样的,但是用随机的点代替矩阵.
    另一方面,由于它的随机性,该算法比批次梯度下降的规律性要差得多:与缓慢降低直到达到最小值的彼此梯度相比,随机梯度的cost function没法精确到最小值.随着时间的流逝,它最终会非常接近最小值,但是一旦到达最小值,它就会继续反弹,从不沉降。因此,一旦算法停止,最终的参数值将是良好的,但不是最佳的。
    在这里插入图片描述
    解决这一难题的一种方法是逐渐降低学习率。步骤从大开始(这有助于快速进行并避免局部最小值),然后变得越来越小,从而使算法能够稳定在全局最小值。此过程类似于模拟退火,这是一种从退火冶金过程中启发出来的算法.
    确定每次迭代的学习率的函数称为learning schedule。如果学习速度降低得太快,可能会陷入局部最小值,甚至在中途就不再降低了。如果学习速度降低得太慢,可能会长时间徘徊在最小值附近.

  2. Mini-batch Gradient Descent
    就是不用一个算梯度也不用所有算梯度,用一小部分算梯度.
    在这里插入图片描述
    上图是三种方式对于其中一个参数的迭代过程.
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值