反向传播是深度学习的根基.反向传播算法可以快速的计算出各个结构层中的梯度,从而优化各个层级中的参数.

矩阵运算

在此之前你需要知道矩阵运算. 矩阵运算可以参考这个网站,讲解的很详细。

正向传播 (forward propagation)

设每一层的 node 的值z = wx + b. 应用激活函数以后的值a. 模型的输出y^,真实值y. 正向传播(Forward Propagation)前向传播就是从input,经过一层层的layer,不断计算每一层的za,最后得到输出y^的过程,计算出了y^,就可以根据它和真实值y的差别来计算损失(loss)。

反向传播 (back propagation)

反向传播(Backward Propagation)反向传播就是根据损失函数L(y^,y)来反方向地计算每一层的z、a、w、b的偏导数(梯度),从而更新参数。 微积分中的链式法则(为了不与概率中的链式法则相混淆)用于计算复合函数 的导数。反向传播是一种计算链式法则的算法,使用高效的特定运算顺序。 反向传播说白了根据根据J的公式对wb求偏导,也就是求梯度。因为我们需要用梯度下降法来对参数进行更新,而更新就需要梯度。 但是,根据求偏导的链式法则我们知道,第l层的参数的梯度,需要通过l+1层的梯度来求得,因此我们求导的过程是“反向”的,这也就是为什么叫“反向传播”。

计算实例

使用代码来计算matrix.