深度学习的反向传播手动推导
反向传播算法是深度学习求解最重要的方法。这里我们手动推导一下。
一般来说,我们讲神经网络的层数,是包含输出层,但是不包含输入层的。因此,神经网络第一层的输入是数据,最后一层的输出就是预测结果了。在这里我们主要讲反向传播的推导,因此为了简便,忽略了维度的表示。以下符号并没有考虑维度。
一、符号说明
假设我们的输入数据是$X$,真实的标签是$y$。
首先假设神经网络有$L$层,最后一层是输出层,只有一个神经元。每层的变量和函数都使用上标表示其所在的层。每一层的激活函数的输出为$A$,激活函数的输入是$Z$,它是由权重矩阵$W$和偏移$b$一起,作用于输入得到的。当这个层是第一层的时候,输入是数据$X$,当这个层不是第一层的时候,其输入是前一层的激活函数的输出。假设输出层的输出是$\hat{y}$,即预测结果。
二、前向传播表示
那么,假设我们考虑第$l$个隐层,其输入是$A^{[l-1]}$,那么,其前向传播(forward propagation)的表示为:
Z^{[l]} = W^{[l]} A^{[l-1]} + b^{[l]}
A^{[l]} = g^{[l]}(Z^{[l]})
当$l=1$的时候,$A^{[0]}=X$。当$l=L$的时候,$A^{[L]}=\hat{y}$。
