专栏/Datawhale X 李宏毅苹果书 AI夏令营 深度学习(进阶笔记2)

Datawhale X 李宏毅苹果书 AI夏令营 深度学习(进阶笔记2)

2024年08月31日 15:11--浏览 · --点赞 · --评论
粉丝:2文章:9
Datawhale

本期夏令营学习目标是——通过《深度学习详解》和李宏毅老师 21年的机器学习课程视频,入门机器学习,并尝试学习深度学习,展开代码实践。

《深度学习详解》主要内容源于《机器学习》(2021年春),选取了《机器学习》(2017年春) 的部分内容,在这些基础上进行了一定的原创,补充了不少除这门公开课之外的深度学习相关知识。

在理论严谨的基础上,本书保留了公开课中大量生动有趣的例子,帮助读者从生活化的角度理解深度学习的概念、建模过程和核心算法细节,包括——

  • 卷积神经网络、Transformer、生成模型、自监督学习(包括 BERT 和 GPT)等深度学习常见算法,
  • 对抗攻击、领域自适应、强化学习、元学习、终身学习、网络压缩等深度学习相关进阶算法。


《深度学习详解》正版购买链接:https://u.jd.com/muCV8tI

最新版PDF下载

https://github.com/datawhalechina/leedl-tutorial

Task2.1:自适应学习率

电子书:51-59页。

视频:https://www.bilibili.com/video/BV1JA411c7VT/?p=7


本节主要介绍了深度学习中的一些优化技术,包括动量法、均方根法以及自适应学习率方法。首先,解释了动量法和均方根法的基本概念及其在优化过程中的作用。动量法通过考虑过去所有的梯度方向来更新参数,而均方根法则只考虑梯度的大小。接着,详细阐述了几种自适应学习率方法,如AdaGrad、RMSProp和Adam。这些方法能够根据参数的具体情况动态调整学习率,从而更有效地优化模型。最后,介绍了学习率调度的方法,特别是学习率衰减策略,以解决训练过程中遇到的各种问题。

1. 动量法和均方根法

  • 动量法:动量法通过将所有过去的梯度方向进行加权平均,从而更新参数。这种方法不仅考虑了当前梯度的方向,还考虑了之前梯度的影响,有助于越过局部最小值。动量法的一个关键特点是它能够记住前一步的更新方向,即使当前梯度指向相反方向,也能继续向前移动。
  • 均方根法:均方根法计算参数更新时的平方根,仅考虑梯度的大小而不关心方向。这种方法通过取梯度的平方然后求均方根来实现参数更新。由于不考虑方向,均方根法在某些情况下可能导致结果不如动量法。

2. 自适应学习率方法

  • AdaGrad:AdaGrad根据每个参数的历史梯度大小自动调整学习率。其核心思想是让学习率与历史梯度的平方成反比。这种方法在处理稀疏数据时表现良好,但在处理非稀疏数据时容易导致学习率下降过快。
  • RMSProp:RMSProp是对AdaGrad的一种改进,引入了一个称为“衰减因子”的超参数α,用于调节新旧梯度的重要性。当新梯度较大时,衰减因子较小;反之则较大。这种方法可以更好地适应不同的误差表面变化。
  • Adam:Adam结合了RMSProp的优点并加入了动量项,使得其在训练深层网络时更加稳定且高效。Adam通过动量项和自适应学习率的结合,能够有效应对误差表面的复杂性。

3. 学习率调度

  • 学习率衰减:为了应对训练过程中学习率过大或过小的问题,文档介绍了学习率衰减策略。这种策略通过逐渐减小学习率,使训练过程变得更加平稳和可控。
  • 预热策略:预热策略是在训练初期设置一个较高的初始学习率,随后逐步降低至最终值。这种方法有助于在初期快速探索误差表面,然后在后期精细调整参数。

Task2.2:分类

电子书:59-62页。

视频:https://www.bilibili.com/video/BV1JA411c7VT?p=8

本节主要内容包括优化器介绍分类问题详解、以及批量归一化的应用

  1. 优化器介绍:讨论了深度学习中优化器的使用,特别是Adam优化器及其变体。强调了动量(mit)和均方根(σit)在计算方式上的差异:动量累加所有梯度值,考虑梯度的方向;而均方根则关注梯度的大小,忽略方向。
  2. 分类问题详解:详细解释了分类与回归的关系,指出分类问题可以视作回归问题的一种扩展。介绍了如何使用独热向量来表示类别,并阐述了softmax函数在多类分类中的应用,即将输出值转换为概率分布,以便与独热编码的标签进行比较。
  3. 批量归一化的应用:最后部分提及批量归一化技术,该技术通过调整输入数据的分布,改善模型的训练性能,尤其是在处理复杂的网络结构时。

Task2.3:代码实践 HW3(CNN)卷积神经网络-图像分类

本示例使用阿里云的交互式建模 PAI-DSW:https://www.aliyun.com/activity/bigdata/pai/dsw

计费:10.49元/小时,学生可以领取300元代金券:https://university.aliyun.com/

在阿里云控制台选择:PAI --> DSW --> 新建实例 --> 启动--> JupyterLab

点击“Terminal”打开命令行窗口,输入以下代码并按下回车键。稍等片刻,数据集和代码文件(notebook)将会自动下载,大约需要一分钟。

git lfs install

git clone https://www.modelscope.cn/datasets/Datawhale/LeeDL-HW3-CNN.git

进入LeeDL-HW3-CNN文件夹,打开HW3-ImageClassification.ipynb点击双箭头一键运行。

等待约12分钟后即可获得结果。通过单元格(cell)查看模型的训练准确率。生成的`submission.csv`文件包含分类结果,代码将打印出当前模型的结构,并绘制两个数据集的图像分析和分类结果分布图,以帮助更好地理解模型的表现。

一定要记得运行完成后【停止实例】,否则会一直扣费!!!!


竞答1:批量归一化(Batch Normalization)的主要作用是什么?

A. 减少模型训练过程中的过拟合

B. 使模型训练过程中的误差表面更加平滑

C. 增加模型的复杂度以提高准确率

D. 自动调整学习率。

答案:B

解析:文档中提到批量归一化可以“把山铲平”,即改变误差表面的地貌,使其变得更加平滑,从而让模型训练过程更加顺利。

竞答2:为什么在深度学习中使用学习率调度(learning rate scheduling)?

A. 为了在训练初期加快收敛速度。

B. 为了在训练后期避免模型参数更新过大。

C. 为了减少模型训练的总时间。

D. 为了自动选择最优的学习率。

答案:B 解析:文档中提到学习率调度,特别是学习率衰减,可以随着训练的进行逐渐减小学习率,这有助于在训练后期避免模型参数更新过大,从而更平稳地收敛到最优解。

竞答3:描述批量归一化(Batch Normalization)的主要目的和它如何帮助改善深度学习模型的训练。

答案:

批量归一化的主要目的是通过规范化层的输入来加速模型的收敛,同时减少梯度消失或爆炸的问题。它通过对每个小批量数据的输入进行归一化处理,使得模型的每一层输入数据的分布更加稳定,从而有助于提高模型的训练效率和性能。 解析:文档中提到批量归一化可以改变误差表面的地貌,使其变得更加平滑,从而让模型训练过程更加顺利,有助于改善训练过程并提高模型性能。

投诉或建议