IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> <<深度学习>>优化算法详细笔记 -> 正文阅读

[人工智能]<<深度学习>>优化算法详细笔记

目录

为什么需要优化算法

梯度下降法

1、SGD、BGD、MBGD

2、Momentum-SGD

?3、NAG(Nesterov Accelerated Gradient,NAG)

4、Adagrad


为什么需要优化算法

????????对于几乎所有的机器学习算法,最后一般都可以归结为最优化问题,也就是归结为求一个目标函数的极值问题,因此对于一个确定的损失函数L(y,\hat{y}),就需要寻找一个最佳的映射函数f(w:x),使得f(w:x)对输入x映射出的输出y值与真实值\hat{y}的损失最小,而使得损失最小的那一组参数w就是我们需要的模型参数。

? ? ? ? 不管是机器学习还是深度学习的模型,通常映射函数f(w:x)会非常复杂,甚至包含上千亿参数量,因此,在高维空间中,f(w:x)局部极值肯定不止一个,但是全局最小值一定是存在的,局部极值我们称之为局部最优点,全局最小值我们称之为全局最优点,因此我们就希望有一个算法能够帮助我们最大可能的搜索到f(w:x)的全局最优点(通常这是不可能的),这样的一个算法就称之为优化算法。

梯度下降法

????????梯度下降法沿着梯度的反方向进行搜索,利用了函数的一阶导数信息。梯度下降法的迭代公式为:

? ? ? ? 梯度的方向为当前函数值上升最快的方向,因此在负梯度方向就是函数值下降最快的方向,把学习率\gamma设置为比较小的正数,那么每一次对参数\textbf{x}的更新迭代都会使得函数值变小,在有限次的迭代下,就可以搜寻到局部最优或全局最优。

1、SGD、BGD、MBGD

????????随机梯度下降(Stochastic Gradient Descent, SGD)每次从训练样本随机抽取一个样本计算loss和梯度并对参数进行更新,由于每次只是对某一个样本计算loss,所以每次迭代速度快。但是这种优化算法比较弱,因为每次随机选择的样本并不能代表所有的样本,往往容易走偏,反而会增加很多次的迭代。随机梯度下降法有时可以用于在线学习(Online Learning)系统,可使系统快速学习到新的变化。

????????批量梯度下降(Batch Gradient Descent,BGD),每次使用整个训练集合所有样本计算loss和梯度,这样计算的梯度比较稳定,因为所有样本当然能代表所有样本,相比随机梯度下降法不那么容易振荡,但是因为每次都需要更新整个数据集,所以批量梯度下降法非常慢,而且无法放在内存中计算,更无法应用于在线学习系统,(注意BGD和SGD虽然每次迭代选取的样本数量不同,但是在反向传播梯度时都是传播一次,慢的只是计算loss的时间不同)

????????小批量随机梯度下降法(Mini-Batch Gradient Descent)是对批量梯度下降以及随机梯度下降的一个折中办法,其思想是:每次迭代随机抽取batch_size个样本来计算loss和梯度,这里折中的也就是计算loss的时间

? ? ? ? 随机梯度下降法伪代码为下,可以看到SGD、BGD、MBGD的区别就是m的数量的区别。

2、Momentum-SGD

????????Momentum-SGD就是在随机梯度下降的基础上,加上了上一步的梯度,可以加快梯度下降法的收敛速度,减少震荡。

其中m_{t}就是动量项,它累积了之前迭代时的梯度值,\gamma是动量参数,位于0到1之间。相比于随机梯度下降,如果当前时刻求得的梯度方向和上一时刻的梯度方向相同,那么动量就会使相同方向的梯度不断累加,如果当前时刻求得的梯度方向和上一时刻的梯度方向不相同,那么不同方向的梯度则相互抵消,因而可以一定程度上克服“Z”字形的振荡迭代,更快到达最优点,Momentum-SGD伪代码为下:? ? ? ?

?3、NAG(Nesterov Accelerated Gradient,NAG)

????????NAG是在SGD、Momentum-SGD的基础上的进一步改进。我们知道在时刻t的主要下降方向是由累积动量决定的,因为动量系数通常为0.9以上,自己的梯度方向说了也不算,那与其看当前梯度方向,不如先看看如果先跟着累积动量走了一步,那个时候再怎么走。因此,NAG先不计算当前位置的梯度方向,而是计算如果按照累积动量走了一步,那个时候的下降方向。然后用下一个点的梯度方向,与历史累积动量相结合,再计算当前时刻的累积动量。

其中\theta _{t}-\eta \gamma m_{t-1}就是先跟着上一步累积的动量走一步,再去计算当前时刻的累积动量,然后再走一步。

4、Adagrad

?????????Adagrad是一种自适应的梯度下降法,它能够针对参数更新的频率调整它们的更新幅度——对于更新频繁且更新量大的参数,适当减小他们的步长;对于更新不频繁的参数,适当增大它们的步长。这种方法的思想很适合一些数据分布不均匀的任务。

未完待续。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-07-04 22:54:12  更:2022-07-04 22:58:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:03:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码