在task03中开始实践方法论,
1.模型优化
一般用梯度下降进行优化,不过这又会牵扯到task01中提到的局部极小值和总体最小值的问题。这样就可能会无法找到最适合(损失最小)的参数
如图(b)可以看到,找不到一个损失低的函数,到底是因为模型的灵活性不够,海里面没有针。还是模型的灵活性已经够了,只是优化梯度下降不给力,它没办法把针捞出来,找不到那个最优的参数
建议是先用一些简单的、浅层次的模型。深的模型跟浅的模型比起来,灵活性比较大,但损失却没有办法比浅的模型压得更低代表说优化有问题,梯度下降不给力,因此要有一些其它的方法来更好地进行优化。“如果训练损失大,可以先判断是模型偏差还是优化。如果是模型偏差,就把模型变大。假设经过努力可以让训练数据的损失变小,接下来可以来看测试数据损失;如果测试数据损失也小,比这个较强的基线模型还要小,就结束了。”
2.过拟合
简单来讲就是训练数据上表现得非常好,但是测试数据放上去就很差。
过拟合通常发生在模型过于复杂、参数过多
模型复杂度过高:模型的参数太多,导致模型能够记住训练数据的每一个细节,包括噪声。
训练数据不足:训练数据量过少,模型无法学到数据的普遍规律,只能依赖于有限的数据。
训练时间过长:模型在训练数据上训练的时间过长,导致模型开始学习数据中的噪声而不是有用的特征。
解决过拟合的三种方法:
1.增加数据量,加强训练集,用更多的数据来限制住模型的灵活性。数据增强就是根据问题的理解创造出新的数据
2.交叉验证(5折、10折)
3.给模型加上限制,由于模型的灵活性过高,出现了过拟合,那么我们可以给模型人为对参数进行限制。
3.1:给模型比较少的参数。如果是深度学习的话,就给它比较少的神经元的数量,本来每层一千个神经元,改成一百个神经元之类的,或者让模型共用参数,可以让一些参数有一样的数值。
3.2:用比较少的特征
3.3:正则化、早停......
4.交叉验证:
交叉验证个人感觉是很好理解的,同时简单又好用。是一种评估模型性能的方法,它通过将数据集分成多个子集,依次使用每个子集作为验证集,其余子集作为训练集,循环进行训练和验证,最终得到模型的平均性能。这种方法有助于防止过拟合并更准确地评估模型的泛化能力。
5.不匹配
直接来讲,“不匹配”可以理解为预测与实际的差距过大,产生了错误的形式。
夏令营链接:Datawhale (linklearner.com)
(引用文本和图片来自于夏令营中)