![机器学习实战:模型构建与应用](https://wfqqreader-1252317822.image.myqcloud.com/cover/359/44389359/b_44389359.jpg)
3.9 dropout正则化
前面我们讨论过过拟合,即一个神经网络在一个特定类型的输入数据上的表现很好,但是在其他的数据上表现很差。可以克服这个问题的技巧是使用dropout正则化。
当一个神经网络正在训练时,每一个单独的神经元都会影响随后层的神经元。随着时间的推移,特别是在大型网络中,一些神经元会变得太过专业,在向下传播的过程中,可能会导致整个网络变得过于专业并导致过拟合。此外,相邻的神经元可能最终会有相似的权重和偏差,并且可以导致整个模型变得专门识别这些神经元所激活的特征。
考虑图3-21中的神经网络,各层分别有2、6、6和2个神经元。中间层的神经元可能最终会有非常相似的权重和偏差。
![](https://epubservercos.yuewen.com/A03276/23627497809544006/epubprivate/OEBPS/Images/079-1.jpg?sign=1739597226-YNEClR4hTjjyMEa7elEAecHW4YsHCAc4-0-a96e68d3eef785febea217a54376fd06)
图3-21:一个简单的神经网络
在训练时,如果你想随机移除一些神经元并忽略它们,它们对下一层神经元的贡献就会被临时阻塞(见图3-22)。
![](https://epubservercos.yuewen.com/A03276/23627497809544006/epubprivate/OEBPS/Images/079-2.jpg?sign=1739597226-SL0RWeiBSYxwGIEPGSAGqenk13GkfQKh-0-38742cb63ceeeeb0d399142f5cb4bd44)
图3-22:使用dropout的神经网络
这降低了神经元变得过于专业的概率。这个网络仍然会学习同样数量的参数,但是它可能更善于泛化,即它更能适应不同的输入。
dropout的概念是由Nitish Srivastava等人在2014年的论文“Dropout: A Simple Way to Prevent Neural Net works from Overfitting”(https://oreil.ly/673CJ)中提出的。
为了在TensorFlow中实现dropout,你可以使用一个简单的Keras层:
![](https://epubservercos.yuewen.com/A03276/23627497809544006/epubprivate/OEBPS/Images/080-1.jpg?sign=1739597226-DaiilXcaYWUILY7LSNyD9CxZldcvls3C-0-21a1791338003363190706a32be440e8)
这会在指定的层随机丢掉指定百分比的神经元(这里是20%)。值得注意的是,可能需要一定实验才能找到适合你网络的正确百分比。
有一个简单的例子来证明这一点,考虑第2章中的Fashion MNIST分类器。我们更改网络定义来添加更多层:
![](https://epubservercos.yuewen.com/A03276/23627497809544006/epubprivate/OEBPS/Images/080-2.jpg?sign=1739597226-eJm7VxaMsgUV7SzJhNAWtLkCaPDCDCvC-0-3d5470969795e4732b437fa9f1ee9601)
训练了20个回合之后,会在训练集上达到94%的准确率,以及在验证集上达到88.5%的准确率。这是一个潜在的过拟合的指示。
在每一个密集层之后引入dropout:
![](https://epubservercos.yuewen.com/A03276/23627497809544006/epubprivate/OEBPS/Images/080-3.jpg?sign=1739597226-I5kiQWR94atZOHBKY0Th53xNOWVgJ35S-0-7bc9f2ae75aec857561ab532bfbd3318)
当这个网络在同样的数据上训练了同样的时间后,在训练集上的准确率降低至89.5%。在验证集上的准确率几乎一样(88.3%)。这些值非常接近,因此dropout的引入不仅证明了过拟合是存在的,也证明了使用dropout可以帮助移除这样的歧义,来确保网络不会在训练数据上过于专业。
注意,在设计神经网络时,在训练数据上的好结果不一定是一件好事,这可能是过拟合的表现。引入dropout可以帮助你避免这个问题,这样你就可以在其他方面优化你的网络,而没有错误的安全感。