梯度下降算法分类总结

梯度下降算法分类总结

引言

 

 梯度下降法 (Gradient Descent Algorithm,GD) 是为目标函数J(θ),如代价函数(cost function), 求解全局最小值(Global Minimum)的一种迭代算法。

为什么使用梯度下降法

       我们使用梯度下降法最小化目标函数J(θ)。在使用梯度下降法时,首先初始化参数值,然后一直改变这些值,直到得到全局最小值。其中,我们计算在每次迭代时计算代价函数的导数,然后使用如下公式同时更新参数值:
a5b40dac8c48a93c6e0b9c0725bf8c81fe10ba8d

α表示学习速率(learning rate)。

梯度下降法的工作原理

下面的伪代码能够解释其详细原理:
1. 初始化参数值
2. 迭代更新这些参数使目标函数J(θ)不断变小。 

梯度下降法的类型

基于如何使用数据计算代价函数的导数,梯度下降法可以被定义为不同的形式(various variants)。确切地说,根据使用数据量的大小(the amount of data),时间复杂度(time complexity)和算法的准确率(accuracy of the algorithm),梯度下降法可分为:

1.       批量梯度下降法(Batch Gradient Descent, BGD);

2.       随机梯度下降法(Stochastic Gradient Descent, SGD);

3.       小批量梯度下降法(Mini-Batch Gradient Descent, MBGD)。

批量梯度下降法原理

       这是梯度下降法的基本类型,这种方法使用整个数据集( the complete dataset)去计算代价函数的梯度 。每次使用全部数据计算梯度去更新参数,批量梯度下降法会很慢 ,并且很难处理不能载入内存( don’t fit in memory )的数据集。在随机初始化参数后,按如下方式计算代价函数的梯度:

 

e73e9a24fa64e4fb81246d312e0a1e6af5742cb9

其中,m是训练样本(training examples)的数量。

Note:

     1. 如果训练集有3亿条数据,你需要从硬盘读取全部数据到内存中;

     2. 每次一次计算完求和后,就进行参数更新;

     3.  然后重复上面每一步;

     4. 这意味着需要较长的时间才能收敛;

     5. 特别是因为磁盘输入/输出(disk I/O)是系统典型瓶颈,所以这种方法会不可避免地需要大量的读取。

2cce4e74db8b0834f57cbaab8abe4ab7249305f3

上图是每次迭代后的等高线图,每个不同颜色的线表示代价函数不同的值。运用梯度下降会快速收敛到圆心,即唯一的一个全局最小值。批量梯度下降法不适合大数据集。

随机梯度下降法原理

    批量梯度下降法被证明是一个较慢的算法,所以,我们可以选择随机梯度下降法达到更快的计算。随机梯度下降法的第一步是随机化整个数据集。在每次迭代仅选择一个训练样本去计算代价函数的梯度,然后更新参数。即使是大规模数据集,随机梯度下降法也会很快收敛。随机梯度下降法得到结果的准确性可能不会是最好的,但是计算结果的速度很快。在随机化初始参数之后,使用如下方法计算代价函数的梯度:
bac171a0ee9ae8ea7e1241d0f5c49cae19f35704

这里m表示训练样本的数量。

如下为随机梯度下降法的伪码:

       1. 进入内循环(inner loop);

       2. 第一步:挑选第一个训练样本并更新参数,然后使用第二个实例;

       3. 第二步:选第二个训练样本,继续更新参数;

       4. 然后进行第三步…直到第n步;

       5. 直到达到全局最小值

如下图所示,随机梯度下降法不像批量梯度下降法那样收敛,而是游走到接近全局最小值的区域终止。

 

179a3f7ba6d43967171a3c042712f193a9375df5

小批量梯度下降法原理

 小批量梯度下降法是最广泛使用的一种算法,该算法每次使用m个训练样本(称之为一批)进行训练,能够更快得出准确的答案。小批量梯度下降法不是使用完整数据集,在每次迭代中仅使用m个训练样本去计算代价函数的梯度。一般小批量梯度下降法所选取的样本数量在50到256个之间,视具体应用而定。

1.这种方法减少了参数更新时的变化,能够更加稳定地收敛。

2.同时,也能利用高度优化的矩阵,进行高效的梯度计算。

随机初始化参数后,按如下伪码计算代价函数的梯度:
6ab4dc834ad914cd762f4c6b71ad84a6a2072681
这里b表示一批训练样本的个数,m是训练样本的总数。
 

Notes:

1. 实现该算法时,同时更新参数。

c944184d2a723235b3d10c20e2d47eb04cc18079

2. 学习速率α(也称之为步长)如果α过大,算法可能不会收敛;如果α比较小,就会很容易收敛。

993031773399242fc846b90fbe097ef0b68dd40e

3. 检查梯度下降法的工作过程。画出迭代次数与每次迭代后代价函数值的关系图,这能够帮助你了解梯度下降法是否取得了好的效果。每次迭代后J(θ)应该降低,多次迭代后应该趋于收敛。

8ea2d3d604748b11018d054efcfdbf455116b416

93a9bbaa880631a57a7b439941afc12fe70fa0b5

4. 不同的学习速率在梯度下降法中的效果

d8ec456ab02fb7c20059e1dff1346abc04030272

总结

本文详细介绍了不同类型的梯度下降法。这些算法已经被广泛应用于神经网络。下面的图详细展示了3种梯度下降法的比较。

b9270bdb89b892bae231e61ee2cb29634cfedc0a

 

 

本文转载自梯度下降算法分类总结

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
逻辑回归梯度下降算法是一种常用的优化算法,用于求解逻辑回归模型的参数。梯度下降法是一种阶优化方法,可以用于求解无约束优化问题。在逻辑回归中,我们通过最小化目标函数J(θ)来找到最佳的模型参数θ。梯度下降法的公式可以用于更新参数θ,从而逐步逼近最小值。 逻辑回归梯度下降法包括批量梯度下降法和随机梯度下降法。批量梯度下降法在每一次迭代中都使用训练集的所有样本来计算梯度,并更新参数θ。随机梯度下降法在每一次迭代中只使用训练集中的部分样本来计算梯度,并更新参数θ。相比之下,随机梯度下降法的计算效率更高,但可能会导致模型参数的不稳定。 逻辑回归梯度下降算法的目标是最小化目标函数J(θ),对于二分类逻辑回归,可以使用sigmoid函数将线性模型的输出转化为概率值。然后使用最大似然估计的方法,通过最小化负对数似然函数来求解最佳的模型参数θ。 这个过程中,我们需要计算目标函数J(θ)关于参数θ的梯度,然后使用梯度的反方向进行参数的更新。重复这个过程,直到达到收敛条件或达到最大迭代次数。 总结来说,逻辑回归梯度下降算法是一种常用的优化算法,用于求解逻辑回归模型的参数。它通过最小化目标函数J(θ),利用梯度的反方向逐步逼近最小值。批量梯度下降法和随机梯度下降法是两种常见的实现方式。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [逻辑回归及梯度下降法](https://blog.csdn.net/shuqing1996/article/details/88081786)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [[飞桨机器学习]逻辑回归(六种梯度下降方式)](https://blog.csdn.net/chenqianhe2/article/details/115009758)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [A simple BP Neural Network example 一个简单的运用了梯度下降算法的神经网络例子.zip](https://download.csdn.net/download/qq_35831906/88253004)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值