随笔- 54  文章- 0  评论- 1  阅读- 16796 

 Batch gradient descent,批梯度下降

第一种,遍历全部数据集算一次损失函数,然后算函数对各个参数的梯度,更新梯度。

这种方法每更新一次参数都要把数据集里的所有样本都看一遍,计算量开销大,计算速度慢,不支持在线学习.

随机梯度下降,stochastic gradient descent

另一种,每看一个数据就算一下损失函数,然后求梯度更新参数。

这个方法速度比较快,但是收敛性能不太好,可能在最优点附近晃来晃去,hit不到最优点。两次参数的更新也有可能互相抵消掉,造成目标函数震荡的比较剧烈

举个例子,训练集有1000个样本,batchsize=10,那么:
训练完整个样本集需要:
100次iteration,1次epoch。

iterations

iterations(迭代):每一次迭代都是一次权重更新,每一次权重更新需要batch_size个数据进行Forward运算得到损失函数,

再BP算法更新参数。1个iteration等于使用batch_size个样本训练一次。 (SGD 中 batch_size=1)

 

Batch(批 / 一批样本):

将整个训练样本分成若干个Batch。

Batch_Size(批大小):

每批样本的大小。

Iteration(一次迭代):

训练一个Batch就是一次Iteration(这个概念跟程序语言中的迭代器相似)

Epoch

一个Epoch就是将所有训练样本训练一次的过程。

 

Batch Size从小到大的变化对网络影响

1、没有Batch Size,梯度准确,只适用于小样本数据库

2、Batch Size=1,梯度变来变去,非常不准确,网络很难收敛。

3、Batch Size增大,梯度变准确,

4、Batch Size增大,梯度已经非常准确,再增加Batch Size也没有用

注意:Batch Size增大了,要到达相同的准确度,必须要增大epoch。

 

Batch Size合适的优点:

1、通过并行化提高内存的利用率。就是尽量让你的GPU满载运行,提高训练速度。

2、单个epoch的迭代次数减少了,参数的调整也慢了,假如要达到相同的识别精度,需要更多的epoch。

3、适当Batch Size使得梯度下降方向更加准确。

 posted on   Real_Yuan  阅读(279)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示