- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
06不同优化器对比
1
我们本节来学习不同优化器对比。
神经网络的学习目的是找到使损失函数的值尽可能小的参数,这是寻找最优参数的问题,解决这个问题的过程称为最优化。
优化器就是用来更新和计算模型参数以最小化损失函数的工具。有许多不同的优化器,包括最基本的梯度下降(SGD)、带动量的梯度下降、RMSProp、Adam等。
2
下面我们来看一个故事。
有一个性情古怪的探险家。他在广袤的干旱地带旅行,坚持寻找幽深的山谷。他的目标是要到达最深的谷底(他称之为“至深之地”)。这也是他旅行的目的。并且,他给自己制定了两个严格的“规定”:一个是不看地图;另一个是把眼睛蒙上。
因此,他并不知道最深的谷底在这个广袤的大地的何处,而且什么也看不见。在这么严苛的条件下,这位探险家如何前往“至深之地”呢?他要如何迈步,才能迅速找到“至深之地”呢?
3
探险家虽然看不到周围的情况,但是能够知道当前所在位置的坡度(通过脚底感受地面的倾斜情况)。于是,朝着当前所在位置的坡度最大的方向前进,就是SGD的策略。勇敢的探险家心里可能想着只要重复这一策略,总有一天可以到达“至深之地”。
4
SGD是最基本的梯度下降方法,每次更新都使用一部分样本来计算梯度。
5
但是SGD的缺点比较明显。
每一轮迭代使用的训练数据一般是小批量的,没有使用全部的训练数据,因此更新方向会发生锯齿状甚至随机震荡状;
某些梯度分量的值比另外一些分量的值要大的多,导致个别分量主导了梯度的更新方向,而期望的梯度更新方向却行进的非常缓慢。
那么,我们来看一下其他的优化器呢。
6
Momentum是一种带动量的梯度下降方法,它在更新参数时不仅考虑当前的梯度,还考虑上一次的梯度方向,这样可以加速收敛,并有可能跳过局部最小值。
它将一段时间内的梯度向量进行了加权平均,在一定程度上消除了更新过程中的不确定性因素,比如摆动现象,使得梯度更新朝着一个越来越明确的方向前进。
7
接下来是RMSProp,这一种自适应学习率的方法,它通过调整每个参数的学习率来加速训练。
8
最后,Adam。Adam结合了Momentum和RMSProp的思想,既考虑了过去的梯度的指数衰减平均值,也考虑了过去的平方梯度的指数衰减平均值。
这么多优化器,那我们在具体实操的时候如何选择呢?
目前没有哪种算法在解决所有的问题中都表现良好,每种算法都有自己的擅长解决的问题。
所以大家都可以尝试一下。
9
接下来,我们来看个简单的使用SGD的代码示例。
10
首先导入了torch.optim模块,这个模块提供了各种优化器的实现。
11
依次创建了一个模型对象、一个SGD优化器对象,SGD优化器对象的学习率为0.01。
12
在训练循环中,首先调用optimizer.zero_grad()方法,将梯度缓存清零。
然后,通过将输入数据input传递给模型,得到模型的输出output。
接着使用损失函数criterion计算输出和目标target之间的损失值loss。
调用loss.backward()方法,计算损失相对于模型参数的梯度。
然后调用optimizer.step()方法,使用梯度更新模型的参数,完成一次参数更新。
13
最后这一行创建了一个新的Adam优化器对象,使用了相同的模型参数和学习率0.01作为参数。
本节不同优化器对比就先了解到这里。
您可能关注的文档
- 深度学习案例教程 教案全套 钱月钟 第1--9章 深度学习简介--语音识别.docx
- 深度学习案例教程 教案1.3 深度学习的发展.docx
- 深度学习案例教程 教案1.1 人工智能与机器学习.docx
- 深度学习案例教程 教案1.6 深度学习的应用领域-自然语言的处理.docx
- 深度学习案例教程 教案1.2 深度学习定义及分类.docx
- 深度学习案例教程 教案1.5 深度学习的应用领域-计算机视觉.docx
- 深度学习案例教程 教案1.4 深度学习的应用领域-语音识别.docx
- 深度学习案例教程 教案1.8 深度学习框架介绍.docx
- 深度学习案例教程 教案1.7 深度学习的特点.docx
- 深度学习案例教程 教案2.2PyTorch安装和Pycharm安装.docx
文档评论(0)