反向传播:详细解析
1. 传统方法计算梯度的低效性
在计算从输入到输出的导数 $\frac{\partial o}{\partial w}$ 时,路径聚合引理表明其值是沿着从输入到输出的所有路径上的局部导数(在特定情况下为互补输入值)的乘积。例如,对于一个相对简单的计算图,从输入到输出有 $2^5 = 32$ 条路径,$\frac{\partial o}{\partial w}$ 的计算如下:
$\frac{\partial o}{\partial w} = \sum_{j_1,j_2,j_3,j_4,j_5\in{1,2}^5} h(1, j_1) h(2, j_2) h(3, j_3) h(4, j_4) h(5, j_5) = \sum_{\text{All 32 paths}} w^{31} = 32w^{31}$
这个结果与直接对 $w^{32}$ 关于 $w$ 求导的结果一致。然而,这种方法存在明显的问题。对于一个相对简单的图,计算导数需要进行 $2^5$ 次聚合,并且在聚合过程中会反复对节点中计算的相同函数求导。对于一个每层有 100 个节点、共三层的网络,路径数量将达到一百万条。在传统机器学习中,当预测函数是复杂的复合函数时,就会面临这样的困境,这也解释了为什么大多数传统机器学习采用浅层神经模型。手动计算复杂复合函数的细节在一定复杂度之后变得繁琐且不切实际。
2. 动态规划拯救梯度计算
虽然上述求和的分量(路径)数量呈指数级增长,但可以使用动态规划高效地计算。在图论中,计算有向无环图上的所有类型的路径聚合值都可以使用动态规划。
考虑一个有向无环图,其中边 $(i, j)$ 关联着值 $z(i, j)$(解释为节
超级会员免费看
订阅专栏 解锁全文
1044

被折叠的 条评论
为什么被折叠?



