机器学习中多样本情况下的正向传播与反向传播推导(手写)
在网上看到很多关于机器学习中正向传播与反向传播的介绍,基本上都是基于单样本来进行概括性的讲解和公式的介绍,对于对数学不是很好的我在多样本的情况下容易混乱,因此手写了关于正向和反向传播的计算,在正向传播中比较容易理解,反向传播中要求误差和梯度这是重点要搞明白的。
神经网络模型
首先介绍一下模型,模型是一个三层的神经网络模型,分别是输入层(x),隐藏层()和输出层()。在这个模型中也没有添加偏置b和**函数,我觉得把下面内容理解了,其他添加内容都是比较容易理解的。模型结构如下:
正向传播
来看一下我们的输入数据(),是一个4行m列的矩阵,4表示4个特征,m表示m个数据集。
这边是第一层的权重参数三行四列,三行四列是根据()的神经元个数和()的特征个数组成的矩阵,如下:
接下来求解,是一个三行m列的矩阵:第二层的权重参数一行三列,一行四列是根据()的神经元个数和()的神经元个数组成的矩阵,如下:
最后求的也就是最后的预测值,到这边已经完成了神经网络的正向传播过程。接下来是反向传播。
反向传播
在上面中已经求的最后神经元的值也就是预测值,接下来就是通过预测值和实际值求的最后一层的误差,如下:
接下来求解第二层的更新权重参数梯度,应用的公式如下:上面的结果得到一个一行三列的值,分别是第二层权重的梯度值。
还需要求解层的误差,反向传播计算中,因为第一层是输入变量,不存在误差。只计算到层对应的误差,对应的公式如下:
最终求的第一层更新权重参数的梯度:
经过这一轮后,一共求的和的更新梯度值,然后更新模型,即
整个流程计算如下:在上述多样本正向传播和反向传播中,如果有地方存在错误麻烦提出来我改正,谢谢。