李宏毅苹果书学习:
1. 模型偏差与优化问题
模型偏差:如果模型过于简单,无法包含能让损失最小化的函数集合,即使找到了最优参数,损失也无法降低。这时需要增加模型的灵活性,方法包括增加输入特征或使用更复杂的模型(如深度学习)。
优化问题:使用梯度下降法进行优化时,可能会陷入局部最小值,无法找到最优解。优化不充分时,即使模型足够复杂,也难以找到低损失的解。
图解:图2.1:模型太简单的问题:展示了由于模型太简单导致的高偏差问题。图中示例表示,即使找到最优参数θ*,由于函数集合太小,仍然无法将损失降到较低的水平。
图解:图2.2:增加模型的灵活性:通过增加输入特征或采用更复杂的模型(如深度学习),模型可以变得更灵活,从而降低偏差。
2. 残差网络的例子
在残差网络的测试中,深层网络(56层)在训练集和测试集上的表现都不如浅层网络(20层)。这不是由于模型偏差或过拟合,而是因为优化不充分。深层网络虽然更灵活,但优化问题导致其无法充分发挥优势。
图2.3(a):优化过程中会卡在局部最小值:说明了梯度下降法可能卡在局部最小值,导致优化结果不理想。
图2.3(b):模型的灵活性足够大:尽管模型有足够的灵活性,但由于优化方法不给力,无法找到低损失的参数组合。
图2.4(a) + (b):残差网络的例子:展示了在测试数据和训练数据上的表现,强调了深层网络在优化不充分时反而表现不如浅层网络的现象。
3. 过拟合问题
过拟合的表现:
模型在训练集上表现良好,但在测试集上表现不佳,通常是因为模型过于复杂,过度拟合了训练数据的噪声。
解决过拟合的策略:
限制模型的灵活性:减少模型参数数量或使用带有限制性的模型架构(如卷积神经网络,CNN),以避免模型过于复杂。
增加训练数据:通过数据增强等方法生成更多训练样本,以减少模型过度拟合的可能性。
图解:图2.5:层数越深,损失反而变大:展示了在增加网络深度时,训练损失降低但测试损失增大的现象,表明可能存在过拟合。
图2.6:模型灵活导致的问题:展示了由于模型过于灵活,在训练集上表现良好但在测试集上表现差的情况。
图2.7:增加数据:通过增加训练集中的数据点,可以限制模型的灵活性,进而改善测试集上的表现。
图2.8:对模型增加限制:限制模型的灵活性,如减少参数或使用卷积神经网络(CNN)等,可以减少过拟合。
图2.9:限制太大会导致模型偏差:展示了限制过多会导致模型偏差的问题。
4. 模型选择与交叉验证
交叉验证:使用k折交叉验证可以更合理地选择模型,通过在多个验证集上测试模型性能,减少因验证集划分不当导致的偏差。
模型复杂度与损失的关系:随着模型复杂度的增加,训练损失会不断减少,但测试损失在复杂度超过某一阈值后会迅速增加,出现过拟合。因此,选择一个适中的模型复杂度是关键。
图2.10:模型的复杂程度与损失的关系:展示了随着模型复杂度增加,训练损失和测试损失的变化趋势,说明了复杂度与过拟合之间的关系。
图2.11:k折交叉验证:介绍了k折交叉验证的流程,有助于评估模型的泛化性能。
5. 数据集不匹配问题
不匹配问题:当训练集和测试集的分布不一致时,模型即使在训练集上表现良好,也无法在测试集上取得理想结果。此时,增加训练数据并不能解决问题,需要深入理解数据的分布特点并调整模型。
图解:
图2.12:3层网络的结果最好:展示了不同层数网络在预测观看人数上的表现,说明了层数与模型效果之间的关系。
图2.13:另一种错误形式:不匹配:展示了训练集与测试集分布不同导致的不匹配问题,特别是在时间序列预测中的表现。
图2.14:图像分类中的不匹配问题:说明了图像分类中由于训练数据和测试数据分布不同而导致的问题,增加数据也无法解决此类问题。
6. 总结
在实际应用中,首先应检查训练数据的损失,并确保模型在训练集上能够学好。接着再分析测试数据的结果,判断是模型偏差、优化问题还是过拟合。如果是过拟合问题,可以尝试数据增强或限制模型的复杂度。如果是数据集不匹配问题,则需要重新考虑训练集和测试集的选择或数据预处理方法。