1.自适应学习率

临界点其实不一定是在训练一个网络的时候会遇到的最大的障碍。很多时候训练网络,损失不再下降,不是因为到了临界点,而是可能在山谷之间不停震荡。

以下为不同学习率对训练的影响,下图中左右平缓,上下陡峭。学习率大时无法进入山谷,太小时左右又无法移动

1.1 AdaGrad

AdaGrad(Adaptive Gradient)是典型的自适应学习率方法,其能够根据梯度大小自动调整学习率。AdaGrad 可以做到梯度比较大的时候,学习率就减小,梯度比较小的时候,学习率就放大。

以下为公式

1.2 RMSProp

同一个参数需要的学习率,也会随着时间而改变。

其中 0 < α < 1,其是一个可以调整的超参数,用来设置权重

1.3 Adam

最常用的优化的策略或者优化器(optimizer)是Adam(Adaptive moment estimation)。Adam 可以看作 RMSprop 加上动量,其使用动量作为参数更新方向,并且能够自适应调整学习率。

1.4 学习率调度

由于bc段纵轴梯度太小,导致步伐变大,出现红圈中显现。不过步伐变大后,其会走到梯度比较大的地方。走到梯度比较大的地方后,σ会慢慢变大,更新的步伐大小会慢慢变小,从而回到原来的路线。

通过学习率调度(learning rate scheduling)可以解决这个问题。之前的学习率调整方法中 η 是一个固定的值,而在学习率调度中 η 跟时间有关。

学习率调度中最常见的策略是学习率衰减(learning rate decay),也称为学习率退火(learning rateannealing)。随着参数的不断更新,让 η 越来越小。

除了学习率下降以外,还有另外一个经典的学习率调度的方式———预热。预热的方法是让学习率先变大后变小,至于变到多大、变大的速度、变小的速度是超参数。残差网络里面是有预热的,在残差网络里面,学习率先设置成 0.01,再设置成 0.1,并且其论文还特别说明,一开始用 0.1 反而训练不好。除了残差网络,BERT 和 Transformer 的训练也都使用了预热。

2.分类

2.1分类的概念

回归是输入一个向量 x,输出 yˆ,我们希望 yˆ 跟某一个标签 y 越接近越好,y 是要学习的目标。而分类可当作回归来看,输入 x 后,输出仍然是一个标量 yˆ,要让它跟正确答案的那个类越接近越好。yˆ 是一个数字,我们可以把类也变成数字。

实际上,在做分类的问题的时候,比较常见的做法也是用独热向量表示类。

2.2 softmax

实际做分类的时候,往往会把 yˆ 通过 softmax 函数得到 y′,才去计算 y′ 跟 yˆ 之间的距离。

为什么分类过程中要加上 softmax 函数?一个比较简单的解释是,y 是独热向量,所以其里面的值只有 0 跟 1,但是 yˆ 里面有任何值。既然目标只有 0 跟 1,但 yˆ 有任何值,可以先把它归一化到 0 到 1 之间,这样才能跟标签的计算相似度。

公式如下

示例:



2.3分类损失

交叉熵更常用,当 yˆ 跟 y′ 相同时,可以最小化交叉熵的值,此时均方误差也是最小的。最小化交叉熵其实就是最大化似然(maximize likelihood)。

以下为使用最小化交叉熵的好处,交叉熵在左上角有梯度,可以移动。均方误差在左上角十分平缓,会卡住。

3.HW3(CNN)卷积神经网络-图像分类

下载代码和数据集,一键运行

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

卷积神经网络是深度学习中的一个非常重要的分支,本作业提供了进行图像分类任务的基本范式。

  • 准备数据

  • 训练模型

  • 应用模型

要完成一个深度神经网络训练模型的代码,大概需要完成下面的内容:

  1. 导入所需要的库/工具包

  2. 数据准备与预处理

  3. 定义模型

  4. 定义损失函数和优化器等其他配置

  5. 训练模型

  6. 评估模型

  7. 进行预测

此范式不仅适用于图像分类任务,对于广泛的深度学习任务也是适用的。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部