全连接神经网络的本质

全连接神经网络的本质

自从接触神经网络以来,为什么神经网络可以预测,可以做图像分类成为了我一直懵逼的一个点,我很想知道神经网络到底是如何学习的,如果作出预测结果的,网络学习的原理一直令我费解。偶然,我脑海里出现一个猜测:全连接神经网络学习的其实是各种“模式”,并没有学习到事物的本质特征。比如说:让全连接神经网络在做手写数字识别任务时,让网络去分类“1”这个数字,网络其实并不知道“1”长什么样,它只知道如果“1”这个形状位置处有很强的像素值,就去激活某个神经元。换句话说,图片中“1”这个位置的像素权重对于分类为数值1比较大。下面的一个小实验也很好的证明了这一点。

实验:

使用的网络为具有两个隐藏层全连接神经网络,每个隐藏层的神经元个数为32
其它超参数设置为:

优化器学习率batch_sizeEpoch
Adam0.001645

MNIST数据集上训练,在测试集上准确率可以达到96%
在这里插入图片描述
然后自己画了一些图片进行测试:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以发现网络对手写数字识别情况挺好。接下来,我把数字都画在了右下角,然后网络就认不出这个数字了!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以发现当数字在右下角的时候,网络都会识别错误!也就是网络并没有学到数字的本质特征,换个马甲它就不认识了。以上也可以简单说明为什么全连接网络不适合处理图像,所以后来才引入卷积网络。然后,既然网络既然是只学习到了特定位置就激活的“模式”,那么去掉隐藏层,输入经过线性处理直接得到10个类别输出是否也有很高的准确率呢?因为输入有28*28个像素,只要让每个数字的位置所对应的像素权重大一点同样可以激活正确的结果,比如对于数字“0”,只要让“0”位置处的像素输入和负责预测“0”的神经元所连的边上的权重大一点就行,其它不相干位置权重小一点,应该也可以得到不错的效果!废话不多说,上实验结果:
在这里插入图片描述
在没有隐藏层仅仅通过线性处理的情况下可以达到92%的准确率!证明了我们的猜想是正确的。
那么,问题来了,隐藏层的作用究竟是什么?我的猜想是:如果有隐藏层,网络会把复杂问题分解。对于手写数字识别任务来说,隐藏层不会直接把输入图像激活为预测结果,而是先激活手写数字的某些部分,比如对于数字“9”,可能有个神经元负责激活数字“9”的上半部分“0”,还有个神经元负责激活下半部分“1”,然后输出神经元再根据这些部分激活的神经元进行组合,最终得到预测数字“9”。如果猜测正确,当隐藏层神经元数量很少时,效果应该很差,因为只能识别出一个“模式”,话不多说上实验,我们采用一个隐藏层的全连接神经网络:

隐藏层神经元数量准确率
132%
264%
380%
590%
993%
1093%
51298%

可以发现隐藏层神经元数量在1-3时效率增加比较显著,在5个以上时增加缓慢。因为手写数字还是比较简单的,就一些圆圈,横线,竖线之类,只需要几个神经元就可以把数字所包含的“模式”囊括。这个猜测在卷积神经网络也同样适用,并且有论文也说明了这一点,卷积网络就是先学习低级特征,然后不断变成高级抽象的特征。

以上就是我对全连接神经网络的粗浅理解,如果你对全连接网络、卷积神经网络等有更好的理解欢迎私信与我讨论!

  • 14
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值