**本博客致力于记录心得体会,用简单通俗的语言分享经验和代码!
记录我们学习的点滴,记录我们成长的过程。**
Keras包
Keras是深度学习中非常好用的一个工具包,我在刚开始接触深度学习的时候,尝试过用pytorch、TensorFlow,但最后我还是选择了Keras,最大的原因就是两个字:简单!真的是太好理解、太过于友好了,对于初学者,又想在短时间内利用深度学习去解决问题,搞搞研究的同学,我推荐Keras。
废话就不说了,直接说本文重点吧!
过拟合
在深度学习的过程中,我们经常会遇到一个问题,就是过拟合和欠拟合!欠拟合的方法有增大数据集,优化模型等等。而过拟合是最容易出现,也是困扰大多数人的。什么是过拟合呢?通俗一点地来说过拟合就是模型把数据学习的太彻底,以至于把噪声数据的特征也学习到了,这样就会导致在后期测试的时候不能够很好地识别数据,即不能正确的分类,模型泛化能力太差。
既然遇到了问题,那么聪明的科研人员们开始想各种方法去解决这个问题,到底有哪些方法呢?解决过拟合问题有两个方向:降低参数空间的维度或者降低每个维度上的有效规模(effective size)。降低参数数量的方法包括剪枝和权重共享等。降低每个参数维度的有效规模的方法主要是正则化,如权重衰变(weight decay)和早停法(early stopping)等。
简单说主要有以下几种:重新进行数据的清洗、增加数据量、采用正则化技术、采用dropout方法、Early Stopping等。下面我们详细看下防止过拟合的每种方式吧!
防止过拟合的策略
1 重新进行数据的清洗
这个就不多说了吧。数据在训练之前一般要随机打乱,防止某一类的过度聚集,让数据的类别在训练集和验证集中基本平均分布等等。
2 增加数据量
这个也好理解。既然过拟合了,就说明模型已经把这些训练集中的数据规律完完全全给拟合到了,那么增加数据量,丰富数据的类型等是一个直接的解决方案。
3 正则化技术
正则化是一个比较有效的方式。正则项在优化过程中层的参数或层的激活值添加惩罚项,这些惩罚项将与损失函数一起作为网络的最终优化目标。
正则化有L1和L2正则化。一般来说,L2更常使用,L2正则化比L1更适合解决过拟合问题(L2正则化最后可以得到一个参数都比较小的模型,抗扰动能力强),L1正则化则有利于产生稀疏矩阵、特征选择。
首先要导入regularizer
from keras import regularizers
Dense层添加正则化
Dense(256, kernel_regularizer=keras.regularizers