本期夏令营学习目标是——通过《深度学习详解》和李宏毅老师 21年的机器学习课程视频,入门机器学习,并尝试学习深度学习,展开代码实践。
《深度学习详解》主要内容源于《机器学习》(2021年春),选取了《机器学习》(2017年春) 的部分内容,在这些基础上进行了一定的原创,补充了不少除这门公开课之外的深度学习相关知识。
在理论严谨的基础上,本书保留了公开课中大量生动有趣的例子,帮助读者从生活化的角度理解深度学习的概念、建模过程和核心算法细节,包括——
卷积神经网络、Transformer、生成模型、自监督学习(包括 BERT 和 GPT)等深度学习常见算法,
对抗攻击、领域自适应、强化学习、元学习、终身学习、网络压缩等深度学习相关进阶算法。
《深度学习详解》正版购买链接:https://u.jd.com/muCV8tI
最新版PDF下载
https://github.com/datawhalechina/leedl-tutorial
Task3:机器学习框架&实践攻略
电子书:29-38页。
视频:https://www.bilibili.com/video/BV1JA411c7VT/?p=4
本节主要讲述了机器学习中如何训练和使用模型,并解决遇到的问题。首先,它解释了如何通过检查模型对训练数据的学习情况来提高模型的表现。其次,它讨论了如果模型太简单或太复杂可能导致的问题,以及如何解决这些问题。此外,它还提到了优化问题和过拟合问题,以及如何使用数据增强、正则化和其他方法来解决这些问题。最后,文档还介绍了交叉验证的概念,以及如何处理模型预测与实际数据不匹配的情况。
模型偏差:当一个模型由于其结构的限制,无法捕捉数据中的真实关系时,即使找到了最优的参数,模型的损失依然较高。可以通过增加输入特征、使用更复杂的模型结构或采用深度学习等方法来新设计模型,增加模型的灵活性。
优化问题:在机器学习模型训练过程中,即使模型的灵活性足够高,也可能由于优化算法的问题导致训练数据的损失不够低。为了判断是模型偏差还是优化问题,建议通过比较不同复杂度的模型来进行诊断。先尝试简单的模型或非深度学习方法,然后根据这些模型的性能来判断是否需要更复杂的模型或更强大的优化策略。
过拟合:过拟合部分讨论了机器学习模型在训练数据上表现良好,但在未见过的新数据或测试数据上表现较差的问题。这种情况通常发生在模型过度适应训练数据的独特特征,而未能学习到数据中真正的、更一般的模式。过拟合是模型泛化能力弱的表现,即模型不能很好地处理新的情况或数据。为了解决过拟合问题,文本提出了几种策略:增加训练数据、数据增强、给模型增加限制、选择合适的模型复杂度。
交叉验证:交叉验证部分讲述了使用交叉验证来评估和选择模型,以提高机器学习模型的泛化能力。交叉验证是一种评估统计模型性能的技术,它将数据集分成多个子集,轮流使用其中一个子集作为测试集,其余子集作为训练集,重复此过程多次,每次选择不同的子集作为测试集。这种方法可以更全面地估计模型在未知数据上的性能,因为每个数据点都有一次作为测试数据的机会。
不匹配问题:当机器学习模型的训练数据和测试数据的分布不一致时,可能导致模型性能下降的问题。这种不匹配可能由于多种原因发生,比如测试环境中的数据与训练数据来自不同的来源,或者在时间上有显著的差异。为了解决不匹配问题,需要对数据的来源和采集方式有深入的理解。可能需要通过数据预处理或选择与测试数据分布更为一致的训练数据来减少不匹配问题的影响。
竞答1:什么是交叉验证,为什么要使用交叉验证?
答案:交叉验证是一种评估模型性能的技术,通常用于改进模型选择过程。具体来说,交叉验证涉及将训练数据分为训练集和验证集两部分。例如,可以将90%的数据用作训练集,剩余10%的数据用作验证集。在训练阶段,模型是在训练集上训练的,然后使用验证集来评估模型的性能。依据验证集上的表现挑选最优模型,随后将该模型应用于整个训练集进行最终训练,并在测试集上进行验证。
使用交叉验证的主要原因是避免模型在公开测试集上过拟合。如果仅依赖公开测试集进行模型选择,可能会导致模型在公开测试集上表现良好,但在未公开的私人测试集上表现糟糕。这是因为某些模型可能偶然在公开测试集中取得较好成绩,而实际上泛化能力差。为了避免这种情况,通过使用独立的验证集来进行模型选择,可以更准确地估计模型的泛化能力,从而提高模型在未知数据上的表现。
为了进一步提高验证过程的稳健性,可以采用k折交叉验证。在k折交叉验证中,训练集被均匀分割成k个子集。然后执行k次训练和验证过程,每次都将其中一个子集作为验证集,其余子集作为训练集。最终,模型的表现由k次验证结果的平均值决定。这样做可以减少由于验证集随机划分带来的方差,使得模型评估更加可靠。