• vcjmhg
    2021-11-09
    不是 1. batch_size越大显存占用会越多,可能会造成内存溢出问题,此外由于一次读取太多的样本,可能会造成迭代速度慢的问题。 2. batch_size较大容易使模型收敛在局部最优点 3. 此外过大的batch_size的可能会导致模型泛化能力较差的问题

    作者回复: 👍🏻👍🏻👍🏻^^,厉害。

    共 2 条评论
    18
  • clee
    2021-11-08
    你好,最近3节课是理论偏多,实际动手部分偏少,那这部分内容应该怎么实际动手练习才能和理论想结合的更好,这方面有什么建议呢?

    作者回复: 你好,clee,感谢你的留言。 先恭喜你坚持到这了^^。在14节课里会把前面的知识串起来,讲讲如何自己构建一个模型,然后训练它。 在后续的实战篇里,会讲解在工业中一些CV与NLP的应用,在实战篇里都能看到这些理论知识的影子。

    
    5
  • 和你一起搬砖的胡大爷
    2021-11-17
    老师,吴恩达老师的ml课上说不管什么gd都没法确定打到全局最优,在高维数据下几乎必然只能到局部最优,所以初始化的技巧就比较重要。 老师您说的就无法得到全局最优我不大理解

    作者回复: hello, 其实这跟Andrew Ng大神的说法不冲突的,咱们在这里讨论的是一种相对简单(特征没有那么多)的情况,形象化的比喻的话,还是下山的问题,高维数据相当于不是一座山,而是一片片山脉,模型在寻找最优的过程中因为步长的原因,极大概率就会进入到局部最优。这也就是为什么有时候会加入一个momentum的原因,让模型再冲出去到别的山谷试试。

    
    3
  • 马克图布
    2021-11-12
    文章里说: > 越小的 batch size 对应的更新速度就越快,反之则越慢,但是更新速度慢就不容易陷入局部最优。 「更新速度慢就不容易陷入局部最优」这不是说「越大的 batch size 越不容易陷入局部最优」么?看了其他人和老师的留言被整晕了……😂

    作者回复: hello。 batch size太小的话,那么每个batch之间的差异就会很大,迭代的时候梯度震荡就会严重,不利于收敛。 batch size越大,那么batch之间的差异越小,梯度震荡小,利于模型收敛。 但是凡事有个限度,如果batch size太大了,训练过程就会一直沿着一个方向走,从而陷入局部最优。 这也就是为什么我们要不断的尝试一个相对合理的mini batch

    
    3
  • 官
    2021-11-08
    并不是,batchsize越大更新越慢,而且对显存要求变高,在配置较低的机器会出现显存不足的问题

    作者回复: ^^,👍🏻👍🏻。是的,除此之外,较大的batch_size容易使模型收敛在局部最优点,特别小则容易受噪声影响。

    
    3
  • tom
    2021-11-08
    batch size过大,有可能会爆显存。。。😂

    作者回复: 你好,tom,谢谢你的留言。 是的,batch size太大显存会爆掉。 除此之外,较大的batch_size容易使模型收敛在局部最优点,特别小则容易受噪声影响。^^

    
    1
  • 人间失格
    2021-11-22
    老师,请问"迭代速度慢"这个问题 1、随机梯度下降和批量梯度下降都是对每个样本求损失,理论上是不是计算次数一样呢,这个慢是指的参数更新慢吗,总体上是不是批量下降更快一点。 2、小批量梯度下降和随机梯度下降的epoch理论上次数差别大吗,随机梯度下降每个样本更新一次,epoch会不会少一点也能达到相同的收敛效果。

    作者回复: hello,你好。谢谢你的留言。 1. 随机梯度下降是每个样本计算之后都要更新模型参数,批量梯度则是一个batch之后再更新模型参数。2. 有区别的,建议采用批量梯度

    
    
  • IUniverse
    2021-11-08
    batchsize越大,更新模型的也会越慢。同时太大了也会爆显存

    作者回复: 你好,IUniverse,谢谢你的留言。 是的, 除此之外,较大的batch_size容易使模型收敛在局部最优点,特别小则容易受噪声影响。^^

    
    
  • 白色纯度
    2021-11-30
    batch_size理解: 1) Batch_size 设为 2 的幂,是为了符合 CPU、GPU 的内存要求,利于并行化处理 2) Batch_size 设置的大(视数据集而定,一般上千就算比较大了),意味着守旧派系 a) 优点是:梯度震荡小,训练结果更稳定,训练时间相对更短。 b) 缺点:泛化能力差,因为相同epoch的情况下,参数更新的次数减少了,增大迭代次数可以适当提高模型表现;内存可能会溢出,训练速度变慢;容易陷入局部最优(毕竟全局最优只有一个,局部最优有很多,收敛太过平稳,一旦陷入某个极小值便很难逃离) 3)batch_size设置的小,意味着创新派 a) 更新频繁,会受到噪声数据的影响,容易逃离局部最优 b) 泛化能力往往更强,在数据标注没有大范围出错的情况下,参数更新次数频繁,更新方向整体都是对的,方向错的次数占比更低,容易被纠正 按照极限法的思路,batch_size为1,代表着参数更新极不稳定;batch_size为全体数据样本量,更新非常稳定。但参数更新本就是个追逐最优的过程,遇到极值前需要稳定更新,遇到极值后需要不稳定的更新逃离马鞍面。所以衍生出 mini-batch_size的办法。权衡之下的取舍吧。
    展开
    
    13
  • Daniel
    2022-09-29 来自海南
    发现一个 神经网络的可视化 playground, 可以调节batch_size 等一系列参数,感兴趣的同学可以试试,挺助于前几节课的理解。 http://playground.tensorflow.org/#activation=relu&regularization=L1&batchSize=24&dataset=circle&regDataset=reg-plane&learningRate=0.03&regularizationRate=0&noise=10&networkShape=2&seed=0.88254&showTestData=false&discretize=true&percTrainData=20&x=false&y=false&xTimesY=false&xSquared=false&ySquared=false&cosX=false&sinX=false&cosY=false&sinY=false&collectStats=false&problem=classification&initZero=false&hideText=false
    
    1