最近正在学习王晓华著的《TensorFlow深度学习应用实践》这本书。总结一下第17章的内容备忘,也希望能对大家有所帮助,欢迎大家留言推荐深度学习的资料,大家相互学习,谢谢。有新的积累将会持续更新
欢迎访问我的github原文链接:
https://github.com/huhaodong/notes/blob/master/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C%E9%9D%A2%E8%AF%95.md
1) 什么是过拟合:过拟合是对训练样本过度描述,使得模型的繁华能力很弱,对于训练样本能获得很好的效果,但是在测试样本上的表现很差。
2) 如何解决过拟合问题:解决过拟合问题的主要方式是增加模型的普适性,在训练中的体现就是需要包含各种样本情况,使得模型训练的结果更加具有普适性。具体有:
增加样本的数量(或是增加噪声,样本本就不是无限多的,所以可以对原始样本集做旋转平移变化以及添加噪声数据。这使得模型可以适应各类环境下的目标,增加其泛化性能);
通过dropout的操作每次随机忽略某些层的not,目的在于随机改变模型的结构,从而使得模型的计算结果在一定范围内波动,但是平均值是不变的;
选择合适的模型,模型越深效果越好,但是越容易发生过拟合的情况;
对权重进行正则化,将权重大小加到loss函数中 Loss=Loss+reg(wi) L o s s = L o s s + r e g ( w i ) 其中 reg(wi) r e g ( w i ) 分为 L1 L 1 正则和 L2 L 2 正则:
3)全连接层的作用:将提取的数据特征从一个特征空间映射到另一个特征空间,多数时候全连接层都被作为分类器。由于全连接成的参数很多,所以目前的趋势是使用卷积层代替全连接层。
4)激活函数的作用和原因:激活函数通常使用非线性函数,以增加模型的非线性,以此来提高拟合结果的泛化性。
5)卷积操作后输出的矩阵形状:
6)pooling 池化操作的作用:
- 对数据进行降维,减少参数的数量。
- 加强图像特征的不变性,使得模型的泛化能力提高。
7)为什么使用softmax而不是传统svm作为最后的分类器:对于数据的变动softmax比svm敏感,并且softmax是软分类svm是硬分类。
1)数据集的注意事项:
- 需要对数据进行扩展,可以通过增加噪点、增白、减少像素、旋转平移变换、模糊等操作。
- 数据进入模型时先进行shuffle处理,每个epoch都进行shuffle效果会更好。
- 使用大数据训练模型前,先使用小数据集对模型进行训练,保证模型在小数据集上可以过拟合,再用大数据集进行训练。
- 小图片最好不要设置过大的步长,否则下采样过度导致信息丢失严重。
- 每个batch_size应该时128或256,如果内存不够可以适当减小。学习率应该是0.005或0.01左右,建议采用线性衰减。
2)卷积模型训练注意事项:
- 模型层数过高时,应该使用dropout降低模型过拟合的概率。
- 尽量使用relu或prelu激活函数,以避免传统激活函数带来的梯度消失和梯度爆炸等问题。
1)NIN(Network in network),使用1*1的卷积核链接再传统的卷积网络上形成mlponv(感知机卷积层)或cccp层。以使得网络再初级阶段就具有较高的特征提取能力,以此提升整体模型的模型表达能力。
2)mlp的作用是通过将提取的低级特征组合成复杂的组,以此增加卷积的特征有效性。