详解minibatch梯度下降:如何用每个输入数据更新权重?
创作时间:
作者:
@小白创作中心
详解minibatch梯度下降:如何用每个输入数据更新权重?
引用
CSDN
1.
https://blog.csdn.net/qq_20289205/article/details/79911540
在深度学习中,minibatch梯度下降是一种常用的优化算法,它介于批量梯度下降和随机梯度下降之间,通过小批量数据来更新模型权重。本文将通过一个具体例子,详细解释在minibatch中如何计算梯度并更新权重。
1. 提出问题
已知有一个size为k的minibatch,把它扔进神经网络之后,经过一系列变化,网络中的权重weights就会更新。但是,具体是怎么样更新的呢?
2. 解答
假设有5个权重,然后我们的mini batch 大小是2(里面有两个数据x1,x2),扔到神经网络之后,会先对每一个数据求出loss (l1, l2),然后,针对每一个数据对应的loss,各自求五个权重的梯度:
- 数据1(x1): Loss = l1, gradients1=(1.5,−2.0,1.1,0.4,−0.9)
- 数据2(x2): Loss = l2, gradients2=(1.2,2.3,−1.1,−0.8,−0.7)
如果要求五个权重的梯度,实际上是求上面两个数据所求出来的梯度(gradients1, gradients2) 的平均值:
gradients_result = ( gradients1, gradients2)/2 = (1.35, 0.15, 0, -0.2, -0.8)
具体到公式:
其中,L是loss,w是权重,w的下标j是指第几个权重(有五个权重的话,j就等于1,2,3,4,5),k是mini batch的大小, i就是指mini batch里第几个数据啦(这里有两个数据,那么i等于1,2)。
值得一提的是,我们可以推出:
因此,就有:
相对于之前的“先对每个例子的loss(l1, l2)求导得到梯度(gradients1, gradients2),然后求这些梯度的平均值”,上面的公式首先求所有loss的平均值,再对这个平均值求相对于权重(weights)的梯度。计算上简单了一些。
TensorFlow就是这样做的。
热门推荐
DeepSeek安装要求详解
基于MATLAB的Bode图判断系统稳定性、稳定程度、系统性能
我国规定哪36种病可以请长假?
卧室门最好选哪种材质?
认知竞争、冲突与战争:一种本体论方法
“两条杠”后懵圈?早孕关爱门诊一站式解决你的“十万个怎么办”
洗衣机甩干与脱水功能详解:工作原理与使用场景全解析
高考美术培训构图的基础知识
酒后不适怎么办?宿醉原因及预防方法全解析
灯光照明和色温有什么关系?一文详解色温在不同场景的应用
污水处理厂常用药剂详解
米麻薯草莓奶绿
连锁遗传专题练习
男人梦见一只大老鼠怎么回事?男人梦见一只大老鼠梦境解析!
警惕,肾衰来临并非“静悄悄”
生气致心脏疼如何止痛
企事业单位突发环境事件应急预案编制指南
揭秘猫科遗传学:为什么大多数橙色猫是公猫?三花猫几乎都是母猫?
怎样用事实说话
企业社会责任战略
3500点能否一鼓作气?关键信号即将揭晓!
怎么改善肠胃吸收能力?饮食是影响肠胃健康的关键因素
AI+中医,输出经络精准调养解决方案
蝴蝶兰浇水指南:从浇水原则到季节性差异
毛利率多少比较合理(正常范围)
N+1赔偿符合哪些条件
骨骼肌纤维收缩会引起哪些肌节变化
黑河的美食有哪些?
亚麻籽粉的功效与作用 亚麻籽粉营养价值有哪些
BMI 27是什么水平?医生的专业解读