《Neural Networks and Deep Learning》学习笔记三-神经网络输出层神经元个数

手写数字识别

本篇博客拿手写数字识别作为例子进行讲解。对于手写数字识别数据集中共有10个数字(0-9),绝大多数的神经网络都采用输出层为10个神经元。但不知道读者们是否想到用二进制表示,这样只需要4个神经元就可以表示16个类别。那么问题来了:针对手写数字识别的神经网络,为什么网上的所有神经网络代码的输出层都是10个,而不是4个。下图表示输出层为10个神经元的神经网络。下面我就针对该神经网络进行讲解,为什么输出层采用10个神经元,而不采用二进制表示方法。

这里写图片描述

输出神经元为10个的原因

为了理解为什么输出神经元个数为10,理解神经网络工作原理是很有帮助的。假设我们考虑输出层为10个神经元的情况,输出层的第一个神经元代表输入样例为0。它通过权衡来自隐藏的神经层的证据来做到这一点,那么隐藏层的神经元的功能是什么呢?实质上,假设隐藏层的第一个神经元就是为了验证输入的手写图像是否含有如下图像内容:
这里写图片描述

找到该图的原理就是:若输入神经元含有该图像上的像素,则提高该输入神经元和隐含层第一个神经元之间的权重,否则降低它们之间的权重。同理,假设第二个、第三个、第四个隐含层神经元判断输入图像是否有如下三个图像内容:
这里写图片描述

如果四个隐含层神经元都被激活,则判定输入图像为0。

未选用4个二进制神经元作为输出层的原因

当我们采用4个二进制神经元作为输出层时,第一个输出神经元可能决定数字最重要比特是什么?无法将上述简单数字组成部分图像跟该情况的输出联系到一起。所以没有理由将输出层设置为4个神经元。

我自己理解的原因:第一种情况(10个神经元):隐藏层和输出层之间的权重,每个权重只决定一个类别的手写数字;而第二种情况(4个神经元):隐藏层和输出层之间的权重,每个权重决定多个类别的手写数字。所以最后的第一种实验结果要优于第二种实验结果。

猜你喜欢

转载自blog.csdn.net/feng_jiakai/article/details/78724410