深度学习:详解梯度下降、随机梯度下降、小批量随机梯度下降

一、梯度下降

在这里插入图片描述上图的w0是选择的随机参数,沿着反梯度方向更新参数,参数的更新量为损失函数对前一层权重w的偏导数与学习率的乘积。

二、梯度下降的缺陷

在这里插入图片描述
在这里插入图片描述f(x)是在所有样本上的损失的平均,当存在n个样本时,若训练50轮,则每一次迭代都是基于所有训练样本,计算损失函数梯度。
需要在n个样本上求一次导,计算太贵。
在这里插入图片描述

三、随机梯度下降

在这里插入图片描述
随机梯度下降,是指在时间t,随机选一个样本ti来近似f(x)——所有样本的损失平均(上图的x就是权重参数我)。
虽然是随机取的可能并不是f(x)——所有样本的损失平均,但只是权重矩阵参数w的变化方向是对的。
好处就是只需要算一个样本梯度,而不是算全部的,比较快速。但每次迭代中只使用一个样本计算梯度,因此每次迭代的梯度都是有噪声的,毕竟不是所有样本的均值,所以下降(下山)会走一点弯路,但总体因为总的迭代次数很多,所以随机梯度下降法最终会收敛到最优解 ,还是划得来的
在这里插入图片描述可以看到相对于梯度下降的曲线,它的曲线不是那么直。

四、随机梯度下降的缺点

在这里插入图片描述我们可以其看作一个下山的过程:对于梯度下降而已,是找到了最优的下山路径,所有它的曲线比较直,而对于随机梯度下降,它因为随机选一个样本ti来近似f(x)——所有样本的损失平均,所以找的并不是最优的下山路径,但方向是对的,只是要走弯路,因此它下山的曲线比较曲折。
它的震荡属性虽然更新方向不稳定,看你永远不能真正收敛,但它也正因为震荡,可以跳出局部最优(某些情况下)。
随机梯度下降是计算单样本的梯度的,这难以利用硬件资源(cpu/gpu,多核多线程)。而单样本是无法并行占满道整个运行资源的。所以我们一般使用多样本,例如:当有一千个核时,使用一千个样本,并行度就很高了。所以我们一般使用小批量随机梯度下降(GPU是专为多任务而生的,有成百上千各核,并发能力强,只使用一个样本时计算太小,难以利用资源)

五、小批量随机梯度下降(真正使用的)

对于梯度下降:是因为在整个训练集上算梯度太贵,我们计算梯度要对整个损失函数求导,这个损失函数是对我们所有样本的平均损失,求一次梯度就要把整个样本都算一遍,计算代价太大。所以采用b个样本的平均来近似于整个样本的损失平均,b大时,近似很精确,b小时,近似不精确,但计算梯度容易
在这里插入图片描述上图b为批量大小——batch_size。
batch_size最好在一个合适的区间(批量小,计算慢;批量大,计算快,计算代价大)
在这里插入图片描述

六、小批量随机梯度下降的优点

在这里插入图片描述小批量随机结合上述两个优点,也是曲折的,所以可能跳出局部最优

七、上述三者的迭代次数

梯度下降在这里插入图片描述随机梯度下降
在这里插入图片描述小批量梯度下降
在这里插入图片描述

八、闲谈

代码中梯度为什么要清0:梯度存储在.grad里面,pytorch不会自动将梯度设0,所以就要我们手动了
在这里插入图片描述选择批量大小
在这里插入图片描述选择学习率
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值