本帖最后由 ulu 于 2026-1-14 04:59 编辑
我学到的:
BS 调大多少,相应的学习率就调大多少
使得迭代时间不变同时可以处理更多的数据(步长不变),这样你的训练效率才会明显的提高。
如果你只调高 BS 不调学习率,你的步长还是不变的,根据公式,平均到每个样本的梯度还是一样的,并没有增加步长,所以单次迭代 loss 下降的幅度还是一样的。
Δw(每步的梯度)=lr(学习率)x (样本的平均梯度) 可以按照下面的经验公式调大学习率,来抵消 batch 越大带来的平均化缩小效应。 (来源:Goyal et al., 2017, ImageNet 训练) 线性缩放规则(Linear Scaling Rule):如果 batch size × k,学习率也 × k;
这意味着在理想情况下, 增大 batch size 后调大学习率能够保持梯度更新步长的实际效应,提高收敛速度。
但是 Google 没有提到大 BS 会拉平梯度导致皮肤纹理、睫毛这类的细节(图像的高频特征)被多个样本拉平导致学习不好的副作用,
可能是因为 Google 的手册针对的是大规模训练(可能百万或者千万以上级别的数据集), 和 DFL 这种,特定角度图可能只有几张的场景是不同的,没咱们炼丹精细。
结论是BS还是不宜 一上来就开太大,根据群内大佬的经验来说,BS 设为 4开始是比较稳妥的。 等人脸比较贴近 SRC 再调大BS( 如果要调大,建议开 LRD) 通过 LRD 可以抵消一部分 大 BS 的副作用,也就是平均脸学不好细节的问题。(作用有限,不能完全抵消) LRD属于正则化手段;正则化 = 通过限制模型某些能力或加入随机性,让模型不能只依赖少量特征。
|