深度学习入门第五章总结
误差反向传播法还是很重要的。这一章节的内容比较细碎。因此我准备梳理一下。
在这本书的上一章中,我们介绍了利用数值微分来计算神经网络中的参数问题。本章节要使用误差反向传播。这两者的区别就是前者比较耗费时间。
数值微分:就是直接对函数式进行求偏导,一步到位。
反向传播的过程是对函数式进行拆分,倒着来。
grad是梯度的意思,我们使用数值微分(其实就是偏导数)求得结果后,将梯度*学习率就得到了变化量。让原来的值减去变化量就得到了新值。
network.params[key]-=learning*grad[key]
书上是以计算图的模式来写的。所谓的计算图,本人理解就是把数学公式拆成一步一步的。例如2+(53)就可以拆成 5 * 3,和2 15。反向传播是链式求偏导。
加法和乘法的反向传播#
加法求偏导就是1,也就是从上游传下来的导数不用发生任何变化。
乘法求偏导就是交换两个乘数。例如a*b,那么对a求偏导就是 b *导数。(乘数的翻转)
激活层函数的实现#
激活层位于神经元内部,也就是在神经元内部运行的函数。本章中使用了两种。分别是 Relu 函数以及Sigmoid函数。
Relu函数#
sigmoid函数#
x*(-1)再exp()一下,随后加上一,最后再取倒数。
Affine层#
这个层其实就是矩阵乘法。反向传播的话,就是乘上另一个的乘数的转置。到底是左乘还是右乘,取决于怎么方便乘。
softmax函数#
一般在分类的时候使用,公式很简单,分子是对数,分母是对数之和。
这个的反向传播需要和正确的数据相减。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?