根据模型的数学原理进行简单的代码自我复现以及使用测试,仅作自我学习用。模型原理此处不作过多赘述,仅罗列自己将要使用到的部分公式。
如文中或代码有错误或是不足之处,还望能不吝指正。
本文侧重于使用numpy重新写出一个使用BP算法反向传播的MLP模型,故而不像其他文章那样加入图片演示正向传播与反相传播的原理或是某个特定函数的求导过程以及结论。
深度学习的一个典型例子就是将多层感知机(由输入到输出映射的数学函数)叠加在一起,由多个简单的函数符合在一起去拟合真实的目标函数;每一层隐藏层用以提取数据中的抽象特征,并且加入激活函数以拟合非线性函数。
前向传播:
其中,为输入层/隐藏层/输出层的输入;
为这一层每个神经元的权重,
为神经元的偏置,
为激活函数,
为这一层的输出。
我们训练的目标,就是通过梯度下降的思想,求出和
的梯度方向,在那个方向上,进行参数更新。
BP算法:输出层到隐含层
根据链式法则,
其中,为损失值Loss的逆向梯度,可以根据损失函数进求导进行计算;
为从输出层到隐含层的梯度,可以根据最后一个隐含层的激活函数求得;
为隐含层输出到自身某个权重参数
的梯度,因为
(其中
为上一层隐含层的输出),所以
。
隐含层到隐含层:

本文介绍如何使用numpy从头实现一个多层感知机(MLP)的BP算法,通过数学原理和代码实例,探讨了前向传播、激活函数、损失函数及反向传播的过程。通过MNIST数据集测试了模型性能。
最低0.47元/天 解锁文章
2024

被折叠的 条评论
为什么被折叠?



