在前面的章节中,我们已经了解了神经网络的基本模型,以及如何使用梯度下降法来学习优化神经网络的参数。在前面的数字识别的例子中,我们可以设计不同的神经网络结构,当然得到的识别率也是有区别的,比如除了输入层(784个神经元)和输出层(10个神经元),如果我们只添加一个隐含层(30个神经元),运行30个epoch,mini-batch为10, η=0.1 ,正则项 λ=5.0 ,可以得到的识别准确率为96.53%(实验三次取的最高值);如果我们再添加一层隐藏层(两个隐藏层,分别包含30个神经元),可以得到的识别准确率可达97.14%(实验三次取的最高值),对比于只有一个隐藏层的神经网络来说,准确率有所提高,由此很容易让人联想到是否是越多的隐藏层,那么得到的准确率就越高呢。那么,我们设置三个隐藏层后继续进行实验,得到的识别准确率却为96.72%;设置四个隐藏层,得到的最高准确率为96.65%。这看起来网络层越深,并不见得会对提高准确率有帮助。
那这种现象是否是有理论依据的呢?我们来查看在不同神经网络结构中,在网络学习过程中,网络参数的变化情况,我们知道,error项 δlj=∂C∂blj ,它衡量了惩罚方程 C 相对于网络中第