反向传播的新理解和手算
前言
最近机器学习考试, 让计算方向传播的过程, 虽然知道使用链式规则计算, 但是实际上手还是不熟悉,
正文
问题
反向传播计算一个权重的梯度, 用链式规则是相对好算的, 但如果网络复杂 (到一个权重的路径有多条) 并且要求计算很多个权重, 使用链式规则不仅计算复杂, 而且容易遗漏.
解决方案
对矩阵求导: 缺点是要熟悉矩阵求导公式
另一种方案是另一种理解反向传播的视角: 反向传播和正向传播其实有很多相似之处, 正向传播的是神经元的输出, 反向传播的是损失函数对神经元的梯度. 首先计算输出层的梯度, 根据输出层梯度的加权再乘以激活函数导数就可以计算出上一层神经元的梯度, 就这样, 计算出所有神经元的梯度. 再利用链式法则计算出权重的地图
如下图所示:

小结
很久没有写博客了, 感觉还是要保持更新节奏, 尽量一周写一篇, 一方面对于当下而言, 巩固知识, 另一方面对于未来而言, 如果忘记了可以方便地捡起来. 之前断更的一个原因是太花时间了, 之后的博客会偏向记录, 并不会事无巨细地讲解, 假设读者是小白.
下一篇准备写transformer

浙公网安备 33010602011771号