【图文解说】BP神经网络与深度学习CNN的关系

本文来自《老饼讲解-BP神经网络》https://www.bbbdata.com/

目录

BP神经网络是一个经典、有效的算法,即使时至今日,在传统的"小数据"领域仍有卓越的拟合效果。而BP神经网络的更大贡献是,它开启了后来的CNN\RNN等深度学习模型的大门。本文简单讲解BP神经网络是与深度学习CNN的关系。

一、BP神经网络网络是什么

BP神经网络模仿人的大脑,将输入层层前馈并激活,从而得到最终的输出,BP神经网络的拓扑结构如下:

BP更多用于数值拟合,这时最常用的是三层BP神经网络,三层的BP神经网络只要隐节点足够多就足以拟合任意曲线。

二、BP神经网络用于图象识别问题

1.1.BP神经网络解决图象识别问题

由于BP神经网络可以拟合任意曲线,因此搭配softmax函数,进一步解决模式识别问题,包括图像的识别,例如"手写数字识别"。

手写数字是28×28的黑白图片,将它展平后就是28×28=784的输入,再投入到三层BP神经网络中进行训练,最终用于预测图片属于0-9各个数字的概率。通过一个简单的训练,就可以得到97.6%的识别准确率:

详细代码与训练过程可参考:《BP神经网络识别手写数字》

1.2.BP神经网络解决图象识别问题的困难

在上述手写字识别的图象识别问题中,BP神经网络是毫无压力的,但如果企图用于更大的图片,会面临参数爆炸的问题。例如224×224=50176的图片,那么就有5W个输入,进一步地,网络的隐节点即使只有1W,也会有5亿个隐层权重,这将给求解带来极大的困难。

三、从BP到CNN深度学习模型

由于BP神经网络在图片识别上有参数维度灾难,那么最简单的就是减少输入的个数就可以了!是的,直接把224×224的图片,压缩成24×24的图片不就可以了吗?!

事实上,CNN就是这么做的,但它采用了更加智能的压缩方法--加入了卷积层与池化层来自动压缩图片。一个卷积层的示例如下,通过卷积核,可以将输入内容进行整合、压缩。

一个卷积神经网络CNN的基本结构如下:

CNN通过C(卷积层)与P(池化层),逐步将图片进行压缩,使得图片的Size缩小,小到一定程度时,再投入三层的BP神经网络中(F6,F7)中拟合输出就可以了。
备注:由于卷积层是稀疏连接,BP则是全连接,所以CNN中一般以F(Full Connect)层来指代BP。

使用pytorch实现一个卷积神经网络,用于数字识别,简简单单就能得到99.8%的准确率,可见CNN的效果要比BP要好得多。

从上可以看到,随着卷积与池化的加入,网络的层数就加深了,在后来,层数越来越深,也就有了深度学习一说。


相关链接:

《老饼讲解-机器学习》:老饼讲解-机器学习教程-通俗易懂

《老饼讲解-神经网络》:老饼讲解-matlab神经网络-通俗易懂

《老饼讲解-神经网络》:老饼讲解-深度学习-通俗易懂

相关推荐
Suyuoa20 分钟前
附录2-pytorch yolov5目标检测
python·深度学习·yolo
余生H1 小时前
transformer.js(三):底层架构及性能优化指南
javascript·深度学习·架构·transformer
代码不行的搬运工2 小时前
神经网络12-Time-Series Transformer (TST)模型
人工智能·神经网络·transformer
罗小罗同学2 小时前
医工交叉入门书籍分享:Transformer模型在机器学习领域的应用|个人观点·24-11-22
深度学习·机器学习·transformer
孤独且没人爱的纸鹤2 小时前
【深度学习】:从人工神经网络的基础原理到循环神经网络的先进技术,跨越智能算法的关键发展阶段及其未来趋势,探索技术进步与应用挑战
人工智能·python·深度学习·机器学习·ai
阿_旭2 小时前
TensorFlow构建CNN卷积神经网络模型的基本步骤:数据处理、模型构建、模型训练
人工智能·深度学习·cnn·tensorflow
羊小猪~~2 小时前
tensorflow案例7--数据增强与测试集, 训练集, 验证集的构建
人工智能·python·深度学习·机器学习·cnn·tensorflow·neo4j
极客代码2 小时前
【Python TensorFlow】进阶指南(续篇三)
开发语言·人工智能·python·深度学习·tensorflow
Seeklike2 小时前
11.22 深度学习-pytorch自动微分
人工智能·pytorch·深度学习
YRr YRr3 小时前
如何使用 PyTorch 实现图像分类数据集的加载和处理
pytorch·深度学习·分类