【CS224n】(assignment3)Adam和Dropout

简介: 各类深度学习的优化算法的演变过程:SGD -> SGDM -> NAG ->AdaGrad -> AdaDelta -> Adam -> Nadam 这样的历程。优化算法的框架:

零、各类优化算法

0.1 框架梳理优化算法

各类深度学习的优化算法的演变过程:SGD -> SGDM -> NAG ->AdaGrad -> AdaDelta -> Adam -> Nadam 这样的历程。

优化算法的框架:

首先定义:待优化的参数为w,目标函数为f(w),初始的学习速率为 α \alphaα,现在要开始迭代优化,在每个epoch t中:

image.png其中:β 1 \beta_{1}β

1

是0-1之间值的超参数(一般设置为0.9)。

问:简要解释(不需要数学证明,给出大概解释)如何使用动量m阻止更新的变化,为啥这种低方差有利于学习。

答:动量m实际上是真实梯度的指数移动平均(exponential moving average,这里简称EMA),可以平滑一系列噪声梯度,防止更新变化频繁。当噪声梯度较大时,学习过程会在其中来回跳跃,导致较迟收敛。因此,低方差更新能助于找到局部最小值(local minima)。

1.2 步骤2

adam用自适应学习速率扩展动量概念,通过跟踪 v vv (梯度大小的滚动平均值)来扩展自适应学习速率的概念。

image.png

其中:

⊙ \odot⊙ 和 / // 分别是按照元素进行相乘和相除。

β 2 \beta_{2}β

2

是0-1之间值的超参数(一般设置为0.99)。

问:adam加上v \sqrt{\mathbf{v}}

v

后,哪些参数会得到更大的更新?为啥有助于学习呢?

答:v vv 实际上是指数移动平均(EMA)的梯度的elementwise square。v \sqrt{\mathbf{v}}

v

可看作是EMA的绝对值或者是动量momentum m的magnitude。对m mm进行标准化(即m / v m/\sqrt{\mathbf{v}}m/

v

操作),使得大的数变小,小的数变大。这样能给模型参数,小梯度,更大的参数更新,从而能够更快的收敛。

二、Dropout

dropout是一种正则化技术,在训练过程中,dropout随机地将 h hh 隐藏层中的参数置为0(该动作的概率为 p drop  p_{\text {drop }}p

drop

),然后用h hh乘常数γ \gammaγ:


image.png

image.png

image.png

2.2 问题2

问题2:为啥在训练时加入dropout,而在测试阶段不用加入dropout?

答:dropout是一种正则化技术。在训练过程中,模型参数在不退出的情况下容易对某些特征进行过拟合,且相邻参数之间存在高度依赖性。在这种情况下,模型是脆弱和过度拟合的,不能处理分布外的未见数据。Dropout可以在训练过程中通过消零梯度来随机切断参数(权重)之间的连接。因此,dropout可以降低参数之间的依赖程度,使训练后的模型具有更好的鲁棒性和泛化能力。在评估过程中,我们需要参数和一致输出之间的所有连接,所以不需要使用dropout。

相关文章
|
7月前
|
机器学习/深度学习 资源调度 监控
PyTorch使用Tricks:Dropout,R-Dropout和Multi-Sample Dropout等 !!
PyTorch使用Tricks:Dropout,R-Dropout和Multi-Sample Dropout等 !!
118 0
|
4月前
|
TensorFlow API 算法框架/工具
【Tensorflow】解决Inputs to eager execution function cannot be Keras symbolic tensors, but found [<tf.Te
文章讨论了在使用Tensorflow 2.3时遇到的一个错误:"Inputs to eager execution function cannot be Keras symbolic tensors...",这个问题通常与Tensorflow的eager execution(急切执行)模式有关,提供了三种解决这个问题的方法。
55 1
|
6月前
|
机器学习/深度学习 算法 关系型数据库
Hierarchical Attention-Based Age Estimation and Bias Analysis
【6月更文挑战第8天】Hierarchical Attention-Based Age Estimation论文提出了一种深度学习方法,利用层次注意力和图像增强来估计面部年龄。通过Transformer和CNN,它学习局部特征并进行序数分类和回归,提高在CACD和MORPH II数据集上的准确性。论文还包括对种族和性别偏倚的分析。方法包括自我注意的图像嵌入和层次概率年龄回归,优化多损失函数。实验表明,该方法在RS和SE协议下表现优越,且在消融研究中验证了增强聚合和编码器设计的有效性。
51 2
|
机器学习/深度学习 PyTorch 算法框架/工具
# Pytorch 中可以直接调用的Loss Functions总结:(二)
# Pytorch 中可以直接调用的Loss Functions总结:(二)
169 0
# Pytorch 中可以直接调用的Loss Functions总结:(二)
|
PyTorch 算法框架/工具 图计算
Pytorch中autograd.Variable.backward的grad_varables参数个人理解浅见
Pytorch中autograd.Variable.backward的grad_varables参数个人理解浅见
138 0
Pytorch中autograd.Variable.backward的grad_varables参数个人理解浅见
|
机器学习/深度学习 PyTorch 算法框架/工具
Batch Normlization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》论文详细解读
Batch Normlization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》论文详细解读
130 0
Batch Normlization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》论文详细解读
|
PyTorch 算法框架/工具
Pytorch Loss Functions总结
Pytorch Loss Functions总结
174 0
|
PyTorch 算法框架/工具
# Pytorch 中可以直接调用的Loss Functions总结:(三)
# Pytorch 中可以直接调用的Loss Functions总结:(三)
634 0
|
PyTorch 算法框架/工具
# Pytorch 中可以直接调用的Loss Functions总结:(一)
# Pytorch 中可以直接调用的Loss Functions总结:(一)
159 0
|
机器学习/深度学习 算法 数据挖掘
【论文泛读】 Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
【论文泛读】 Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
【论文泛读】 Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift