机器学习中多样本情况下的正向传播与反向传播推导(手写)

在网上看到很多关于机器学习中正向传播与反向传播的介绍,基本上都是基于单样本来进行概括性的讲解和公式的介绍,对于对数学不是很好的我在多样本的情况下容易混乱,因此手写了关于正向和反向传播的计算,在正向传播中比较容易理解,反向传播中要求误差和梯度这是重点要搞明白的。

神经网络模型

首先介绍一下模型,模型是一个三层的神经网络模型,分别是输入层(x),隐藏层(a(1)a^{(1)})和输出层(a(2)a^{(2)})。在这个模型中也没有添加偏置b和**函数,我觉得把下面内容理解了,其他添加内容都是比较容易理解的。模型结构如下:
机器学习中多样本情况下的正向传播与反向传播推导(手写)

正向传播

来看一下我们的输入数据(x(1)x^{(1)}),是一个4行m列的矩阵,4表示4个特征,m表示m个数据集。
机器学习中多样本情况下的正向传播与反向传播推导(手写)
这边是第一层的权重参数θ(1)\theta ^{(1)}三行四列,三行四列是根据(a(1)a^{(1)})的神经元个数和(x(1)x^{(1)})的特征个数组成的矩阵,如下:
机器学习中多样本情况下的正向传播与反向传播推导(手写)
接下来求解A(1)A^{(1)},是一个三行m列的矩阵:
机器学习中多样本情况下的正向传播与反向传播推导(手写)第二层的权重参数一行三列,一行四列是根据(a(2)a^{(2)})的神经元个数和(a(1)a^{(1)})的神经元个数组成的矩阵,如下:
机器学习中多样本情况下的正向传播与反向传播推导(手写)
最后求的A(2)A^{(2)}也就是最后的预测值,
机器学习中多样本情况下的正向传播与反向传播推导(手写)到这边已经完成了神经网络的正向传播过程。接下来是反向传播。

反向传播

在上面中已经求的最后神经元的值也就是预测值,接下来就是通过预测值和实际值求的最后一层的误差δ(2)\delta ^{(2)},如下:
机器学习中多样本情况下的正向传播与反向传播推导(手写)
接下来求解第二层的Δθ(2)\Delta \theta ^{(2)}更新权重参数梯度,应用的公式如下:
Δθ(2)=1mδ(2)(A(1))T\Delta \theta ^{(2)}=\frac{1}{m}\delta ^{(2)}(A^{(1)})^{T}
机器学习中多样本情况下的正向传播与反向传播推导(手写)上面的结果得到一个一行三列的值,分别是第二层权重的梯度值Δθ(2)\Delta \theta ^{(2)}
还需要求解A(1)A^{(1)}层的误差δ(1)\delta ^{(1)},反向传播计算中,因为第一层是输入变量x(1)x^{(1)},不存在误差。只计算到A(1)A^{(1)}层对应的误差,对应的公式如下:
δ(1)=(θ2)Tδ(2)a(1)(1a(1))\delta ^{(1)}=(\theta ^{2})^{T}\delta ^{(2)}*a^{(1)}(1-a^{(1)})

机器学习中多样本情况下的正向传播与反向传播推导(手写)最终求的第一层更新权重参数的梯度Δθ(1)\Delta \theta ^{(1)}机器学习中多样本情况下的正向传播与反向传播推导(手写)经过这一轮后,一共求的Δθ(1)\Delta \theta ^{(1)}Δθ(2)\Delta \theta ^{(2)}的更新梯度值,然后更新模型,即
θ(1):=θ(1)αΔθ(1)\theta ^{(1)}:=\theta ^{(1)}-\alpha\Delta \theta ^{(1)}
θ(2):=θ(2)αΔθ(2)\theta ^{(2)}:=\theta ^{(2)}-\alpha\Delta \theta ^{(2)}

整个流程计算如下:
机器学习中多样本情况下的正向传播与反向传播推导(手写)机器学习中多样本情况下的正向传播与反向传播推导(手写)在上述多样本正向传播和反向传播中,如果有地方存在错误麻烦提出来我改正,谢谢。