Datawhale X 李宏毅苹果书 AI夏令营
实践方法论
问题1:训练数据损失大
对于这个问题,存在两种可能:1、模型的灵活性不够 (大海里没有针) 2、梯度下降不给力 (针找不到)
可能1:模型偏差
现象
模型偏差 ——> 所以的损失都过大。
对于算出来的损失,均是较大的值,若不进行优化,则是矮子里面挑高个,所得到的模型 灵活性不够
解决方法
- 增加特征数量
- 设计一个更大的模型
- 使用深度学习
可能2:优化问题
这个是 梯度下降 这一算法本身存在的问题。
梯度下降 是一个 解优化 的过程,即 在给定的范围内寻找损失最小的解,找到便停止。
因此便会出现:局部最小 、 找不到最小 等问题
判断方法
先做一个 浅一点 简单一点 的模型,看看它们的损失是什么样的,然后再训练 深度的模型 ,并将二者的损失进行对比。
- 如果 深模型 损失比 简单模型 要大,那就是 优化不好
- 因为深模型的灵活性已经够了,不可能是灵活性上的问题
问题2:测试数据损失大
过拟合
训练数据 的损失较小,但是 测试数据 的损失大 的情况
原因:
训练集的数据太小了,给模型的限制性不够。在其他没有训练集的地方,模型的灵活性很大,可以是任何函数,产生各种各样的结果
解决方法
(1)增加数据集/做数据增强
给定更多的数据,以此来达到限制模型的效果
数据增强就是根据问题的理解创造出新的数据。但要根据对数据的特性以及要处理的问题的理解,来选择合适的数据增强的方式。
(2)给模型限制
- 给模型 比较少的参数 或者 让模型共用参数 ,如 卷积神经网络
- 给定较少的特征
- 比如 早停 、 正则化 、 丢弃法
交叉验证
比较合理选择模型的方法是把训练的数据分成两半,一部分称为 训练集 ,一部分是验证集 。比如 90% 的数据作为训练集,有 10% 的数据作为验证集。
不匹配
不匹配是指训练集跟测试集的分布不同,训练集再增加其实也没有帮助了。如下图的2/26
我们对训练集跟测试集的产生方式有一些理解,才能判断是不是出现了不匹配的问题。