大模型面试题:当Batch Size增大时,学习率该如何随之变化?

我整理了1000道算法面试题

获取

该问题大答案的理论分析请参考苏剑林的科学空间,地址位于 https://kexue.fm/archives/10542

说下结论:从方差的角度来分析,有两个角度来说明学习率应该和Batch size的关系,一个是呈现根号的关系,也即Batch size增大x倍,学习率增大根号x倍,另一个角度是呈现线性的关系,也即Batch size增大x倍,学习率增大x倍。从损失的角度来分析,学习率随着Batch Size的增加而单调递增但有上界。

  • 方差角度
  1. 作者明确了自2014年的《One weird trick for parallelizing convolutional neural networks》,该论文的推导原理是让SGD增量的方差保持不变。若干个推导明确了通过调整学习率η 让增量的噪声强度即协方差矩阵保持不变,得到了一个是呈现根号的关系,也即Batch size增大x倍,学习率增大根号x倍。

  2. 作者明确了在实践中,Batch size增大x倍且学习率增大根号x倍的表现最好,中间涉及了一些推导,主要是基于梯度的噪声是正态分布的假设开始。

  • 损失角度
  1. 作者说了经典工作是OpenAI的《An Empirical Model of Large-Batch Training》,它通过损失函数的二阶近似来分析SGD的最优学习率,得出"学习率随着Batch Size的增加而单调递增但有上界"的结论。整个推导过程值将学习率也作为待优化的参数写进到损失函数L里面去,然后通过二阶泰勒展开得到n_max,也就是学习率最大的表达式,,可以看到B越大的话,学习率也可以越大,但是最后会饱和。
  • 其它
  1. 实际在训练过程中,先通过海塞矩阵和梯度得到,然后通过小批量的数据得到,然后结合B得到。

  2. 表明数据量越小,那么应该缩小Batch Size,让训练步数更多,才能更有机会达到更优的解。

  • 大模型

    简单说,openai发现,用大batch size配合大的learning rate,和用小batch size和小learning rate最终到达的效果是一样的。当然,后面他们也一直都是这样实践的。

参考

1 https://kexue.fm/archives/10542

相关推荐
长友cy1 小时前
Qt官方示例BluetoothLowEnergyGame源码阅读
开发语言·qt
是隼人1 小时前
buuctf-pwn PWN1题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
HugoStudio_SWAN1 小时前
洛谷 P1321 单词覆盖还原——从蜡板上的密信到数字水印
c++·学习·程序人生·算法
草青工作室1 小时前
java-不携带Token也能“打“自己的接口:一个绕开网关鉴权、用 URL 直接调度 SpringMVC 方法的轻量级定时任务方案
java·开发语言
shmily麻瓜小菜鸡1 小时前
JavaScript / TypeScript 易踩坑知识点完全指南 -假值(Falsy Values)完全指南
开发语言·javascript·typescript
春风解人意1 小时前
从零开始学习嵌入式P33----网络基础之HTTP
网络·学习·http
Coodor1 小时前
信创系统基于QT5操作NFC读写器
开发语言·qt·智能卡·nfc读写器·yw-607hc
励志不掉头发的内向程序员1 小时前
【LibreCAD 2D架构】从鼠标点击到屏幕像素:LibreCAD绘图架构全链路解析之Action与命令系统
linux·开发语言·c++·qt·学习·系统架构
小道士写程序2 小时前
自然语言处理NLP - 第8章 词向量与神经网络:从手工特征到学习表示
神经网络·学习·自然语言处理
民乐团扒谱机2 小时前
【超详细】PyQt6 实现 AU 风格波形图编辑器:多级缩放与采样点逐级渲染,附全过程代码
开发语言·python·编辑器·pyqt·audition·时域·频谱图