持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第18天,点击查看活动详情
大连海事大学机器学习附加实验:实现基本的bp神经网络。这里的实现是通过基本numpy实现,但是通过pytoch和tensorflow实现更为简单。这个基本实现的实验对于神经网络入门还是比较有参考意义的。
一. 算法描述
神经网络是一种分层结构,一般由输入层,隐藏层,输出层组成。所以神经网络至少有3层,隐藏层多于1,总层数大于3的就是我们所说的深度学习了。
输入层:就是接收原始数据,然后往隐层送。
隐藏层:该层可以说是神经网络的关键,相当于对数据做一次特征提取。隐藏层的意义,是把前一层的向量变成新的向量。就是坐标变换,将数据做平移,旋转,伸缩,扭曲,让数据变得线性可分。
输出层:神经网络的决策输出。
二. 数据描述
简单生成二维输入层,一维输出层
三. 实验流程
1. 构建神经网络类,并初始化随机权值矩阵与偏移
2. 构建激活函数:
3. 信号正向传播,计算隐藏层及输出层
4. 计算误差值:
5. 误差反向传播:
四. 实验结果
五. 讨论
本次实验第一次手动构建自己的神经网络过程走了很多岔路,一开始设想单独为神经元创建一个类,这种设计是可行的,但难在层与层之间的交互:上一层的信号传导到下一层的信号要考虑同步,更新等问题,难度过大,因此参考很多网上的资源最终为神经网络创建了一个类,将所有方法封装到一个类中,实现较为简单。
-
实验数据为随机生成,可能对于实际的指导意义不大。
-
神经网络仅为单层,对于实际大批量数据可能效果不是很好。
-
模型仅为公式的套用,对于其他格式的数据还需要规范化处理。