适应性学习率

news/2025/2/7 7:16:31/

目录

  • 适应性学习率 Adaptive learning rate
    • 为什么不是临界点仍会导致训练停止
      • 示例一
      • 示例二
    • RMS
    • RMSProp
    • Adam
    • 学习率还和时间有关
      • Learin Rate Decay
      • Warm up

2021 - 类神经网络训练不起来怎么办(三) 自动调整学习率 (Learning Rate)

适应性学习率 Adaptive learning rate

一般训练过程中训练不起来,很少是critical point的问题。大部分都是gradient优化器的问题。

在这里插入图片描述

上图中loss不再变化,但gradient向量值并不会很小,并不在临界点上。 这种现象的出现在gradient($
w_{i+1}=w_i-\eta \times \frac{\partial loss}{\partial w}|_{w=w^0}
$)中主要是因为η太大导致在临界点周围反复横跳,如下图

在这里插入图片描述

为什么不是临界点仍会导致训练停止

在这里插入图片描述

示例一

在这里插入图片描述

起初,gradient比较大,若此时学习率η也比较大,会导致参数在error surface两边震荡更新如上图。

示例二

在这里插入图片描述

起初,gradient比较大,若此时学习率η比较小,则参数更新的程度也会比较小,从而能够到达临界点附近,但因为临界点附近gradient比较小,而此时学习率η也比较小,故参数的更新程度就会比较小,从而无法到达local
minima的位置

📌因此,对于参数的不同位置我们需要设置不同的学习率。当gradient梯度较大时,将学习率设置较小。当gradint梯度较小时,将学习率设置较大

此时gradient优化器公式为:

wi+1=wi−ησitgitw_{i+1}=w_i-\frac{\eta}{\sigma^t_i}g^t_i wi+1=wiσitηgit

RMS

RMS即root mean square 此时的sigma规律如下:

在这里插入图片描述

当error surface某点附件的gradient梯度偏大时,sigma值偏大导致
eta/sigma偏小从而实现小程度的参数更新;当error surface某点附件的gradient梯度偏小时,sigma值偏小导致
eta/sigma偏大从而实现大程度的参数更新、

但RMS仍存在一些问题:它是等可能的参照过去现在所有的gradient,但是在实现的过程中我们需要对目前的gradient置以更高或更低的参与可能,从而有了RMSProp

RMSProp

RMSProp在RMS的基础上将sigma定义如下:(引入了新的超参数alpha)

在这里插入图片描述

Adam

目前最常用的优化器,是结合RMSProp和Momentum动量的gradient。其内部实现如下:

在这里插入图片描述

学习率还和时间有关

Learin Rate Decay

在这里插入图片描述

随时间的进行,训练的越来越接近local minima,故让学习率eta逐渐减小,不要出现下图的在local minima处的震荡:

在这里插入图片描述

Warm up

在这里插入图片描述

随时间的进行,学习率eta先增大至最高再逐渐减小,此时超参数还包括何时升至最高值及最高值多少和下降到哪个最低值
(大概解释:一般刚开始时我们过去的gradient较少,因此此时最后的学习率/sigma不是很精准,所以我们设置较小的学习率eta,不要让参数偏太多。随着时间慢慢进行,过去的gradient比较丰富,此时可以设置较大的eta之后再按照Learing
Rate Decay进行


http://www.ppmy.cn/news/11902.html

相关文章

ASP.NET Core 3.1系列(26)——Autofac中的实例生命周期

1、前言 前面的博客主要介绍了Autofac中的一些注册方法,下面就来介绍一下Autofac中实例的生命周期。之前在介绍ASP.NET Core内置IoC容器的时候说过,实例的生命周期有:瞬时生命周期、域生命周期、全局单例生命周期,而Autofac在这三…

【5】K8S_Deployment

目录 1、Deployment作用 2、deployment的冗余能力 3、deployment的多副本部署 4、deployment的扩缩容 5、deployment的自愈能力 6、滚动更新 7、版本回退 1、Deployment作用 控制Pod,使Pod拥有多副本,自愈,扩缩容等能力 2、deployme…

【算法数据结构初阶篇】:位运算

算法中很多情况下需要用到各种位运算的转换&#xff0c;比如>>右移、<<左移、&与等等&#xff0c;下面我们利用这些位运算来进行一个进制转换&#xff0c;将一个int整形&#xff08;32位&#xff09;十进制转二进制&#xff0c;以及其他的一些转换技巧。 一、十…

【SpringCloud10】OpenFeign服务接口调用

1.概述 1.1OpenFeign是什么 官网 Feign是一个声明式WebService客户端&#xff0c;使用Feign能让编写Web Service客户端更加简单。 它的使用方法是定义一个服务接口然后在上面添加注解&#xff0c;Feign也支持可拔插式的编码器和解码器&#xff0c;Spring Cloud对Feign进行了…

用详细实例说明和典型案例实现对分治法进行全面分析 | C++

第一篇 分治法 目录 第一篇 分治法 ●前言 ●一、分治法是什么&#xff1f; 1.简要介绍 2.生活实例 ●二、分治法的典型案例——硬币问题 1.具体问题 2.代码展示&#xff08;C&#xff09; 3.程序代码结果展示 ●总结 前言 简单的来说&#xff0c;算法就是用计算机程序代…

Docker学习笔记

容器本质上是一个线程&#xff0c;相当于从物理机中开辟了一个空间&#xff0c;专门给到某个程序使用 镜像的本质是一个软件源&#xff0c;这个软件源往往还带有它的环境变量、配置信息 docker是一个管理容器的平台工具 当运行容器时&#xff0c;使用的镜像如果在本地中不存…

PostgreSQL数据库FDW——Parquet S3 DefaultParquetReader类

S3RandomAccessFile S3RandomAccessFile类定义在parquet_s3_fdw.hpp&#xff0c;用于访问s3对象存储的类。其成员函数定义在parquet_s3_fdw.cpp文件中&#xff0c;S3RandomAccessFile构造函数用于初始化private成员(offset设置为0&#xff0c;isclosed设置为false)。 class S…

yolov5+车道线检测

目标检测与车道线检测在自动驾驶以及车辆定位中起着重要的辅助作用&#xff0c;是环境感知中不可缺少的一个部分。基于深度学习的车道线检测方法近年来也在不断的提升&#xff0c;比如论文&#xff1a;Ultra Fast Deep Lane Detection with HybridAnchor Driven Ordinal Classi…