免费拍卖网站模板,塘沽网红书店,仙桃有哪些做网站的公司,网站推广途径和方案目录
前向传播
前向传播计算图
反向传播
训练神经网络
小结 我们已经学习了如何用小批量随机梯度下降训练模型。 然而当实现该算法时#xff0c;我们只考虑了通过前向传播#xff08;forward propagation#xff09;所涉及的计算。 在计算梯度时#xff0c;我们只调用…目录
前向传播
前向传播计算图
反向传播
训练神经网络
小结 我们已经学习了如何用小批量随机梯度下降训练模型。 然而当实现该算法时我们只考虑了通过前向传播forward propagation所涉及的计算。 在计算梯度时我们只调用了深度学习框架提供的反向传播函数而不知其所以然。
梯度的自动计算自动微分大大简化了深度学习算法的实现。 在自动微分之前即使是对复杂模型的微小调整也需要手工重新计算复杂的导数 学术论文也不得不分配大量页面来推导更新规则。 本节将通过一些基本的数学和计算图 深入探讨反向传播的细节。 首先我们将重点放在带权重衰减L2正则化的单隐藏层多层感知机上。
前向传播
前向传播forward propagation或forward pass 指的是按顺序从输入层到输出层计算和存储神经网络中每层的结果。
我们将一步步研究单隐藏层神经网络的机制 为了简单起见我们假设输入样本是 x∈Rd 并且我们的隐藏层不包括偏置项。 这里的中间变量是 其中W(1)∈Rh×d 是隐藏层的权重参数。 将中间变量z∈Rh通过激活函数ϕ后 我们得到长度为h的隐藏激活向量 隐藏变量h也是一个中间变量。 假设输出层的参数只有权重W(2)∈Rq×h 我们可以得到输出层变量它是一个长度为q的向量 假设损失函数为l样本标签为y我们可以计算单个数据样本的损失项 根据L2正则化的定义给定超参数λ正则化项为 其中矩阵的Frobenius范数是将矩阵展平为向量后应用的L2范数。 最后模型在给定数据样本上的正则化损失为JLs.
在下面的讨论中我们将J称为目标函数objective function。
前向传播计算图
绘制计算图有助于我们可视化计算中操作符和变量的依赖关系。下图是与上述简单网络相对应的计算图 其中正方形表示变量圆圈表示操作符。 左下角表示输入右上角表示输出。 注意显示数据流的箭头方向主要是向右和向上的。 反向传播
反向传播backward propagation或backpropagation指的是计算神经网络参数梯度的方法。 简言之该方法根据微积分中的链式规则按相反的顺序从输出层到输入层遍历网络。 该算法存储了计算某些参数梯度时所需的任何中间变量偏导数。 假设我们有函数Yf(X)和Zg(Y) 其中输入和输出X,Y,Z是任意形状的张量。 利用链式法则我们可以计算Z关于X的导数 在这里我们使用prod运算符在执行必要的操作如换位和交换输入位置后将其参数相乘。 对于向量这很简单它只是矩阵-矩阵乘法。 对于高维张量我们使用适当的对应项。 运算符prod指代了所有的这些符号。
回想一下在计算上图中的单隐藏层简单网络的参数是 W(1)和W(2)。 反向传播的目的是计算梯度∂J/∂W(1)和 ∂J/∂W(2)。 为此我们应用链式法则依次计算每个中间变量和参数的梯度。 计算的顺序与前向传播中执行的顺序相反因为我们需要从计算图的结果开始并朝着参数的方向努力。第一步是计算目标函数JLs相对于损失项L和正则项s的梯度。 接下来我们根据链式法则计算目标函数关于输出层变量o的梯度 接下来我们计算正则化项相对于两个参数的梯度 现在我们可以计算最接近输出层的模型参数的梯度 ∂J/∂W(2)∈Rq×h。 使用链式法则得出 为了获得关于W(1)的梯度我们需要继续沿着输出层到隐藏层反向传播。 关于隐藏层输出的梯度∂J/∂h∈Rh由下式给出 由于激活函数ϕ是按元素计算的 计算中间变量z的梯度∂J/∂z∈Rh 需要使用按元素乘法运算符我们用⊙表示 最后我们可以得到最接近输入层的模型参数的梯度 ∂J/∂W(1)∈Rh×d。 根据链式法则我们得到 训练神经网络
在训练神经网络时前向传播和反向传播相互依赖。 对于前向传播我们沿着依赖的方向遍历计算图并计算其路径上的所有变量。 然后将这些用于反向传播其中计算顺序与计算图的相反。
以上述简单网络为例一方面在前向传播期间计算正则项 取决于模型参数W(1)和 W(2)的当前值。 它们是由优化算法根据最近迭代的反向传播给出的。 另一方面反向传播期间参数的梯度计算 取决于由前向传播给出的隐藏变量h的当前值。
因此在训练神经网络时在初始化模型参数后 我们交替使用前向传播和反向传播利用反向传播给出的梯度来更新模型参数。 注意反向传播重复利用前向传播中存储的中间值以避免重复计算。 带来的影响之一是我们需要保留中间值直到反向传播完成。 这也是训练比单纯的预测需要更多的内存显存的原因之一。 此外这些中间值的大小与网络层的数量和批量的大小大致成正比。 因此使用更大的批量来训练更深层次的网络更容易导致内存不足out of memory错误。 小结 前向传播在神经网络定义的计算图中按顺序计算和存储中间变量它的顺序是从输入层到输出层。 反向传播按相反的顺序从输出层到输入层计算和存储神经网络的中间变量和参数的梯度。 在训练深度学习模型时前向传播和反向传播是相互依赖的。 训练比预测需要更多的内存。