如何离线计算反向传播
Posted
技术标签:
【中文标题】如何离线计算反向传播【英文标题】:How to calculate backpropagation offline 【发布时间】:2021-12-10 07:18:19 【问题描述】:我想学习如何离线反向传播神经网络,所以我想出了以下示例:
并且 1 保留偏见。最后一层的激活函数是线性的。
在哪里
我的直觉问题
我想离线计算反向传播,但我不确定应该如何完成。我理解在线反向传播背后的直觉,我们通过观察计算梯度观察。但我不知道它应该如何离线工作,即一次计算所有观察结果。你能告诉我我应该往哪个方向走吗?
【问题讨论】:
【参考方案1】:所以你说你知道如何对单个样本进行反向传播,但不能同时对多个样本进行反向传播,对吧?然后让我们假设你有一些损失函数,例如均方误差。然后,对于单个样本 (x, label),您的损失将是 (y - label)^2。既然你说你知道如何对单个样本进行反向传播,那么你应该知道我们现在取损失相对于最后一个节点 y 的梯度。这个梯度应该是 2 * (y - label)。从那时起,我将梯度传播到整个网络。
如果我们现在有一批样本,我们只需对整个批次使用损失函数。可以说批次有两个样本。那么我们的均方误差就是单个损失的总和除以样本数。因此,损失将是 1/2 * ((y_1 - label_1)^2 + ((y_2 - label_2)^2)。现在我们可以像以前一样做:我们取损失函数的梯度到我们的最后一个节点 y。重要的是要意识到,我们损失中的 y_1 和 y_2 实际上都是我们最终节点 y 的输出,只是针对不同的样本。这意味着梯度是 1/2 * (2 *(y_1 - label_1) + 2*(y_2 - label_2)). 从这里你有整个批次的单个梯度值(如果你插入 y_1、y_2、label_1 和 label_2)并且可以通过网络传播梯度和以前一样。
作为总结:我们现在使用包含整个批次的损失函数(例如,仅对所有样本求和),而不是计算单个样本的损失。这会产生一个渐变,我们可以像以前一样继续。
【讨论】:
以上是关于如何离线计算反向传播的主要内容,如果未能解决你的问题,请参考以下文章