adadelta算法_ADADELTA: AN ADAPTIVE LEARNING RATE METHOD(2012)
文末给出算法的具体实现,心急的话可以直接跳到最后看
写完了才发现有大神写过了,理论也更完备一些
优势
该方法不需要手动调整学习速率
对超参数不敏感
将对每个维度的学习率单独分离出来
最小化梯度下降时的计算量
对大梯度,噪声,不同架构具有很好的健壮性
对本地或分布式环境都可很好的应用
以下介绍一下该算法的一些背景知识
学习率退火
在验证准确率趋于平稳的时候降低学习率
或者依据迭代了多少周期来控制学习率
然而依然需要添加额外的参数控制学习率衰减的速度
Per-Dimension First Order Methods(将对每个维度的学习率单独分离出来?)
由于参数矢量的每个维度都可以以完全不同的方式与全局cost相关,所以可以补偿这些差异的每维度学习速率通常是很有用的。
动量法
当梯度指向同一个方向时,加速
当梯度的符号一直在改变时(震荡),减速
迭代公式
ρ用于减速之前的学习率
对于长峡谷状的cost表面而言有了不错的改进(相对于SGD)
动量法可以将全局学习率依据维度区分出来
ADAGRAD
2012年之前的一个新的方法
仅仅使用一阶信息但是有一些二阶的性质和思路在里面(??)
ADAGRAD
η:所有维度共享的学习率
分母是对之前学习率在每个维度的平方的累和(每个维度的梯度是最前所有的梯度在这个维度上的累和,所以是一直增加的)
由于这种动态速率随着梯度幅度的倒数而增长,所以较大的梯度具有较小的学习率,而小梯度具有较大的学习率。
因为神经网络中不同层之间的梯度的差距通常达到几个数量级,所以这种方法可以被考虑在内
分母中梯度的积累与退火有这类似的效果,降低了学习的速率。由于梯度在分母中的积累,学习率将逐渐下降最终至0(这个不好)
因为无视了梯度的大小,这种方法对于参数的初始条件和对应的梯度大小可能是敏感的,初始梯度大的话,之后的学习速率会下降。但是可以通过增加全局学习率来缓解这种情况。
使用Second Order Information
上述方法仅利用梯度和函数评估来优化目标,二阶方法(如牛顿法或准牛顿法)可以使用黑塞矩阵或近似值。当然计算可能会因此变得更加昂贵。
计算黑塞矩阵(多元函数二阶导数打那个矩阵)的逆矩阵开销太大,可以通过对它做对角矩阵的倒数近似(?diagonal approximation)黑塞矩阵的逆矩阵来减少计算量(仅需再多一次额外的forward and back-propagation)
update
μ是改善小曲率区域的黑塞矩阵调节的小常数。
引入黑塞矩阵和类ADAGRAD项可以减轻对指定学习率的需要( Schaul发现)
ADADELTA METHOD
对ADAGRAD以下缺点的改进:
学习率的持续退火(或shrink)
需要人工选择学习率
改进方法1:Accumulate Over Window
在一个window w 内对梯度累和,而不是所有的梯度。
因为存放 w 之前的梯度是低效的,所以可以用对先前所有梯度均值(使用RMS即均方根值实现)的一个指数衰减作为代替的实现方法。
改进方法2:Correct Units with Hessian Approximation
改进希望∆x和x之间的units一致(?量纲一致,不是很清楚),而SGD,Momentum,ADAGRAD中的units并不一致,所以他们的参数更新都是unitsless的
SGD/Momentum/ADAGRAD:unitsless
但是使用黑塞矩阵的话可以保证units一致(因为二阶)
Hessian Approximation: correct units
基于[Becker&LeCun 1988]的近似方法
进而
最后得出近似黑塞矩阵的逆矩阵的表达式
其中假设x附近的曲率是平滑的,而Xt-1可以近似xt
最后的x更新表达式
由于RMS始终大于0,确保了X更新的方向始终与负梯度同向。
分子作为一个加速项,作为动量在时间窗口w上积累先前的梯度。
分母与ADAGRAD相关,因为每维度的平方梯度信息有助于平衡每个维度的进度,而是在一个窗口w上计算,以确保后期的训练。
最终算法的具体实现
具体实现
adadelta算法_ADADELTA: AN ADAPTIVE LEARNING RATE METHOD(2012)相关推荐
- ADADELTA AN ADAPTIVE LEARNING RATE METHOD
ADADELTA: AN ADAPTIVE LEARNING RATE METHOD 参考:[自适应学习率调整AdaDelta](https://www.cnblogs.com/neopenx/p/4 ...
- 机器学习笔记之学习率(learning rate)与过拟合(overfitting)
这次的笔记,之所以把学习率和过拟合放在一起讲,是因为,Msc阶段的几个挂掉的入职面试(投的实习,有的直接变成了校招的比如hw和zx,还有ali),问了相关的问题,结果回答地不好,所以在这里把这两个东西 ...
- Paper:论文解读《Adaptive Gradient Methods With Dynamic Bound Of Learning Rate》中国本科生提出AdaBound的神经网络优化算法
Paper:论文解读-<Adaptive Gradient Methods With Dynamic Bound Of Learning Rate>中国本科生(学霸)提出AdaBound的 ...
- loss乘以100等价于learning rate乘以100?
导读 看到这个问题的时候,可能你会很直观的认为是等价的,其实等不等价这个应该取决于在更新参数时所选择的优化算法. 因为无论是缩放loss还是learning rate最终的影响都是对更新参数时偏移量( ...
- 如何理解深度学习分布式训练中的large batch size与learning rate的关系?
问题详情: 在深度学习进行分布式训练时,常常采用同步数据并行的方式,也就是采用大的batch size进行训练,但large batch一般较于小的baseline的batch size性能更差,请问 ...
- 学习速率 learning rate
学习速率的选取策略 运用梯度下降算法进行优化时,权重的更新规则中,在梯度项前会乘以一个系数,这个系数就叫学习速率 ααα : 如果学习速率太小,则会使收敛过慢. 如果学习速率太大,则会导致代价函数振荡 ...
- 关于Increased rates of convergence through learning rate adaptation一文的理解
原文地址:http://www.researchgate.net/profile/Robert_Jacobs9/publication/223108796_Increased_rates_of_con ...
- 深度学习:权重衰减(weight decay)与学习率衰减(learning rate decay)
正则化方法:防止过拟合,提高泛化能力 避免过拟合的方法有很多:early stopping.数据集扩增(Data augmentation).正则化(Regularization)包括L1.L2(L2 ...
- Adam和学习率衰减(learning rate decay)
1.梯度下降法更新参数 梯度下降法参数更新公式: 其中,η 是学习率,θt是第 t 轮的参数,J(θt) 是损失函数,∇J(θt) 是梯度. 在最简单的梯度下降法中,学习率 ηη 是常数,是一个需要实 ...
- tensorflow learning rate的设置
一.分段常数衰减 tf.train.piecewise_constan() 二.指数衰减 tf.train.exponential_decay() 三.自然指数衰减 tf.train.natural_ ...
最新文章
- git 给每个branch设置权限_自定义git命令阅读开源项目
- 在Linux下和Windows下遍历目录的方法及如何达成一致性操作
- C/C++ 实现的websocket客户端
- 即插即用!视频超分中的涨点神器:iSeeBetter
- Airflow 中文文档:常见问题
- 强连通图 Tarjan算法
- redis应用之——获取若干最新注册用户
- Linux-LNMP(pool,php-fpm慢执行日志,进程管理,open_basedir)
- mysql高并发频繁地写_Mysql写入频繁,怎么破?
- 算法笔记_面试题_14. strStr 长字符串中查找短字符串
- VMware公司中文命名挑战赛
- 人脸识别之一图像采集及人脸库的建立
- visio画图小技巧记录
- Autojs4脚本大合集(薅羊毛专业版的脚本)
- win10记得pin码 重置密码登录
- 【论文解读 AAAI 2020】Graph-Based Reasoning over Heterogeneous External Knowledge for 常识问答
- 《计算机组成与设计(ARM版)》读书笔记-第二章指令1
- Apple not immune from viruses(苹果也不能免除病毒的侵害)
- Android Path之Direction.CW、Direction.CCW
- C++:日志库log4cplus 2.0的使用说明
热门文章
- 【技能】快递管家无需开发集成金蝶云星辰示例
- 【xsong说算法】剑指offer一个月打卡完毕
- Linux从入门到指令详解
- c++有关iostream和iostream.h
- 实战:VM Player导入虚机到ESXi
- oracle内连接和外连接
- 华为云devops认证考试课堂笔记4
- 计算机ip 地址异常,电脑显示IP地址错误怎么办|电脑无法上网提示IP地址错误的解决方法...
- 进销存excel_用Excel制作简单的进销存系统
- Python教程(麻瓜编程实用主义学)