Adam:一种随即优化方法

摘要:

我们介绍Adam,这是一种基于一阶梯度来优化随机目标函数的算法。随即目标函数的含义是,在训练过程的每一次迭代中,目标函数是不一样的。有时候因为内存不够大或者其他的原因,算法不会一下子读取全部记录来计算误差,而是选择选择对数据集进行分割,在每次迭代中只读取一部分记录进行训练,这一部分记录称为minibatch,这样每次迭代所使用的小批量数据集就是不同的,数据集不同,损失函数就不同,因此就有随机目标函数的说法。另外还有一个原因就是,采用小批量方式来进行训练,可以降低收敛到局部最优的风险(想象一个在凹凸不平的地面上运动的小球,小球很容易陷入一些小坑,这些小坑并不是最低点)。

简介:

Adam 这个名字来源于 adaptive moment estimation,自适应矩估计。概率论中矩的含义是:如果一个随机变量 X 服从某个分布,X 的一阶矩是 E(X),也就是样本平均值,X 的二阶矩就是 E(X^2),也就是样本平方的平均值。Adam 算法根据损失函数对每个参数的梯度的一阶矩估计和二阶矩估计动态调整针对于每个参数的学习速率。Adam 也是基于梯度下降的方法,但是每次迭代参数的学习步长都有一个确定的范围,不会因为很大的梯度导致很大的学习步长,参数的值比较稳定。it does not require stationary objective, works with sparse gradients, naturally performs a form of step size annealing. 按我的理解,它有利于降低模型收敛到局部最优的风险。

下面是在实验室作报告的ppt,关于ADAM。

附录:

Dropout:

看看一个实验结果:

没用Dropout时:

训练样本错误率(均方误差):0.032355, 测试样本错误率:15.500%

使用Dropout时:

训练样本错误率(均方误差):0.075819, 测试样本错误率:13.000%

可以看出使用Dropout后,虽然训练样本的错误率较高,但是训练样本的错误率降低了,说明Dropout的泛化能力不错,可以防止过拟合[1]。droput的优势一般体现在样本比较少的情况下。

dropout方法是指每次迭代随机删除一些隐藏节点。并非真的删除,而是让这些节点的输出为0,相当于删除的效果。在前向传播的时候, 隐含层节点的输出值以某个百分比的几率被随机清0,同时在反向传播的时候,计算节点误差那一项时,其误差项也应该清0。dropoutFraction 常常设为0.5,表示删除大约一半的隐藏节点。它为什么有助于防止过拟合呢?可以简单地这样解释,运用了dropout的训练过程,相当于训练了很多个只有一部分隐层单元的较小规模的神经网络,不同的网络可以共享权值,每个网络都是一个分类器,都可以给出一个分类结果,这些结果有的是正确的,有的是错误的。随着训练的进行,大部分网络都可以给出正确的分类结果,那么把这些分类器叠加起来,少数错误的分类器就不会造成太大的影响,就可以取得一个更加可信的分类器。

数据集:

[1]http://www.cnblogs.com/tornadomeet/p/3258122.html

时间: 2024-10-07 09:11:26

Adam:一种随即优化方法的相关文章

ASP.NET MVC 提高运行速度的几种性能优化方法

主要介绍ASP.NETMVC 应用提速的六种方法,因为没有人喜欢等待,所以介绍几种常用的优化方法. 大家可能会遇到排队等待,遇到红灯要等待,开个网页要等待,等等等. 理所当然,没有人喜欢等待网页慢吞吞地加载,尤其是在移动端访问网站时.其实,Web 开发者敏感的神经决定了我们等待与否. 现在,快速响应不仅是来自用户的要求,还是决定搜索引擎的速度. 考虑到大多数网站都存在速度方面的问题,在本文中将介绍六种为 ASP.NET MVC 应用提速的方法. 希望可以帮助到大家!!! 1. 应用程序缓存 缓存

ASP.NET中26种性能优化方法

系统类  Type类,Object类,String类, Arrary类,Console类, Exception类,GC类, MarshalByRefObject类, Math类. DateTime结构,Guid 结构, ICloneable接口,IComparable接口,IConvertible接口, IDisposable类, 集合类      ICollection接口,IComparer接口,IDictionary接口.IDictionaryEnumerator接口 ,IEnumerab

R语言确定聚类的最佳簇数:3种聚类优化方法

原文链接:http://tecdat.cn/?p=7275 确定数据集中最佳的簇数是分区聚类(例如k均值聚类)中的一个基本问题,它要求用户指定要生成的簇数k. 一个简单且流行的解决方案包括检查使用分层聚类生成的树状图,以查看其是否暗示特定数量的聚类.不幸的是,这种方法也是主观的. 我们将介绍用于确定k均值,k medoids(PAM)和层次聚类的最佳聚类数的不同方法. 这些方法包括直接方法和统计测试方法: 直接方法:包括优化准则,例如簇内平方和或平均轮廓之和.相应的方法分别称为弯头方法和轮廓方法

26种提高ASP.NET网站访问性能的优化方法 .

1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源. ASP.NET中提供了连接池(Connection Pool)改善打开和关闭数据库对性能的影响.系统将用户的数据库连接放在连接池中,需要时取出,关闭时收回连接,等待下一次的连接请求. 连接池的大小是有限的,如果在连接池达到最大限度后仍要求创建连接,必然大大影响性能.因此,在建立数据库连接后只有在真正需要操作时才打开连接,使用完

hdu3572--Task Schedule(最大流+两种优化方法,dinic)

Task Schedule Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 3651    Accepted Submission(s): 1271 Problem Description Our geometry princess XMM has stoped her study in computational geometry t

Android中ListView的几种常见的优化方法

Android中的ListView应该算是布局中几种最常用的组件之一了,使用也十分方便,下面将介绍ListView几种比较常见的优化方法: 首先我们给出一个没有任何优化的Listview的Adapter类,我们这里都继承自BaseAdapter,这里我们使用一个包含100个字符串的List集合来作为ListView的项目所要显示的内容,每一个条目都是一个自定义的组件,这个组件中只包含一个textview: Activity: package com.alexchen.listviewoptimi

Caffe学习系列(8):solver优化方法

上文提到,到目前为止,caffe总共提供了六种优化方法: Stochastic Gradient Descent (type: "SGD"), AdaDelta (type: "AdaDelta"), Adaptive Gradient (type: "AdaGrad"), Adam (type: "Adam"), Nesterov’s Accelerated Gradient (type: "Nesterov&qu

NN优化方法对比:梯度下降、随机梯度下降和批量梯度下降

1.前言 这几种方法呢都是在求最优解中经常出现的方法,主要是应用迭代的思想来逼近.在梯度下降算法中,都是围绕以下这个式子展开: 其中在上面的式子中hθ(x)代表,输入为x的时候的其当时θ参数下的输出值,与y相减则是一个相对误差,之后再平方乘以1/2,并且其中 注意到x可以一维变量,也可以是多维变量,实际上最常用的还是多维变量.我们知道曲面上方向导数的最大值的方向就代表了梯度的方向,因此我们在做梯度下降的时候,应该是沿着梯度的反方向进行权重的更新,可以有效的找到全局的最优解.这个θ的更新过程可以描

深度学习最全优化方法---来源于知乎

写在前面:本宝宝好想只了解sgd,monument,adagrad,adam深度学习最全优化方法总结比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam) ycszen 1 年前 前言 (标题不能再中二了)本文仅对一些常见的优化方法进行直观介绍和简单的比较,各种优化方法的详细内容及公式只好去认真啃论文了,在此我就不赘述了. SGD 此处的SGD指mini-batch gradient descent,关于batch gradient descent, stochas