概述
改进模型拟合
在模型拟合的过程中我们常常会遇到一些情况:
训练不开始:训练损失不随着训练时间推移改变
训练开始得很好,但模型没有真正泛化:模型无法超越基于常识的基准
训练损失和验证损失都随着时间的推移而减小,模型可以超越基准,但似乎无法过拟合:表示模型仍然处于欠拟合状态
解决策略
1 一般情况下,我们只需要反复地调整学习率和批量大小就够了
2 我们通过增加模型的批量大小,使得其包含更多样本,且整体的噪声更少更利于处理
提高模型容量(让模型能够先达到过拟合,随后我们再去调整!!!)
在一些时候,如果我们无法实现过拟合,可能是因为模型的表示能力存在问题,此时我们就会需要一个容量更大的模型:
“添加更多的层”,"使用更大的层(拥有更多的参数)",“或者确定更适合当前问题的层类型”
提高泛化能力
此时由于出现了过拟合现象,表明我们的模型具有一定的泛化能力,我们接下来就应该专注于使得模型的泛化能力最大化
在提高数据泛化潜力的过程中,一个重要的方法就是特征工程!
特征工程指在数据输入模型前,对数据进行硬编码的转换,以改善算法的效果
此处本书举了一个很好的例子:
利用图像识别判断时钟当前的时间,我们可以不直接用时钟的完整图像去进行训练,而是将每一个时钟图像中,时针和分针尖端像素点的位置坐标,由此作为数据送入模型U型拿脸
提前终止
在验证指标停止改善时,立即停止训练
模型正则化
正则化方法是一组最佳实践,通过主动降低模型完美拟合训练数据的能力,提高模型的验证性能。
正则化使得模型更简单,更“规则”,曲线也更加平滑更通用。
方法:
1 缩减模型容量
减少模型中可学习训练参数的个数(由层数和每层单元个数确定)
可以从较小容量的模型逐渐扩大模型规模,以便观察他们在过程中的变化
2 添加权重正则化
L1正则化和L2正则化(L2也叫权重衰减)的本质,就是强制使得模型权重只能取较小的值,从而限制模型的复杂度,由此来使得权重值的分布更加规则
总结,为促使神经网络的泛化能力最大化,最常用的方法如下所示:
1 获取更多更好的训练数据
2 特征工程筛选更好的特征
3 缩减模型容量
4 添加正则化(适合较小模型)
5 添加dropout
完整且严谨的机器学习任务工作流程细节学习
1 定义任务
① 确定输入数据;确定预测对象
② 确定机器学习任务类型,例:分类或是回归等
③ 现有解决方案
2 理解数据
诸如绘图等等的方式,我们需要利用这些方法在实际地使用数据前查看数据之间的相互关系
3 开发模型
准备数据:
1 向量化
2 规范化(将数据取值范围缩小)
3 缺失值处理:①对于分类特征,可以创建一个新特征对应空缺
②数值特征则应当避免直接添加0
4 评估方法
如何对数据集划分训练集数据集并将其用于训练及验证
5 超越基准
使得模型能够超越一些简单的基准(达到一些基础的准确率)
此过程中,我们需要牢记,要在常见的问题类型中选择合适恰当的激活函数和损失函数
6 扩大模型规模,开发一个过拟合模型
(1)增加层数(2)扩大每一层(3)训练更多轮数
7 模型正则化,调节超参数
如果模型已经确定具有统计功效,并且能够过拟合,那么我们就可以确定我们走在了正确的路上,接下来我们的目标就是将泛化性能最大化!!!!
有以下方向可供探索:
(1)改变模型架构,增加或减少层数
(2)添加dropout正则化
(3)如果模型很小,添加L1或L2正则化
(4)尝试不同的超参数,找到最佳配置
(5)反复进行数据收集或特征工程
超参数工具kerastuner可以将以上工作的大部分自动化,节约时间成本
保持学习,加油!飞飞飞!
最后
以上就是细心大树为你收集整理的梅飞飞飞的假期学习日记DAY7的全部内容,希望文章能够帮你解决梅飞飞飞的假期学习日记DAY7所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复