深度学习之反向传播算法
直观理解反向传播
反向传播算法是用来求非常复杂的梯度的。梯度向量每一项的大小,是在说代价函数对每一个参数有多敏感。
我们来考虑一个还没有被训练好的网络。我们并不能直接改动这些激活值,只能改变权重和偏置值。但记住,我们想要输出层出现怎样的变动,还是很有用的。
如果我们要增加这个激活值,我们有三条路可走,一增加偏置,二增加权重,或者三改变上一层的激活值。
先来看如何调整权重,各个权重它们的影响力各不相同,连接前一层最亮的神经元的权重,影响力也最大,因为这些权重会与大的激活值相乘。增大了这几个权重值,对最终代价函数造成的影响,就比增大连接黯淡神经元的权重所造成的影响要大上好多倍。
请记住,当我们说到梯度下降的时候,我们并不只看每个参数是该增大还是减小,我们还看哪个参数的性价比最高。
不过别忘了,从全局上看,这只不过是这一层某个神经元所期待的变化。
所以我们会把这个神经元的期待,和别的输出神经元的期待全部加起来,作为对如何改变倒数第二层神经元的指示。这些期待变化不仅是对应的权重的倍数,也是每个神经元激活值改变量的倍数。
我们对其他的训练样本,同样的过一遍反向传播,记录下每个样本想怎样修改权重与偏置,最后再取一个平均值。这里一系列的权重偏置的平均微调大小,不严格地说,就是代价函数的负梯度,至少是其标量的倍数。
实际操作中,我们经常使用随机梯度下降法。
首先把训练样本打乱,然后分成很多组minibatch,每个minibatch就当包含了100个训练样本好了。然后你算出这个minibatch下降的一步,这不是代价函数真正的梯度,然而每个minibatch会给你一个不错的近似,计算量会减轻不少。
就像是一个醉汉找下山的路,每一步不是最好的,但是是近似好的,并且速度很快,而使用常规方法计算就想一个谨慎的人,每一步都非常好,但是速度很慢。
反向传播的微积分原理
你看你看,归根到底都是一些数学问题,加油。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能