吴恩达《深度学习》第二门课(2)优化算法

简介: 2.1Mini-batch梯度下降(1)例如有500万个训练样本,这时可以每1000个组成一个Mini-batch,共用5000个Mini-batch。主要是为了加快训练。(2)循环完所有的训练样本称为(1 epoch)。

2.1Mini-batch梯度下降

(1)例如有500万个训练样本,这时可以每1000个组成一个Mini-batch,共用5000个Mini-batch。主要是为了加快训练。

(2)循环完所有的训练样本称为(1 epoch)。

(3)使用大括号X{t},Y{t}表示一个Mini-batch。(小括号(i)表示第i个样本,中括号[l]表示神经网络第l层)。

2.2理解mini-batch梯度下降法

(1)batch梯度下降时,每一次迭代代价函数都会降低(如果某一次不是,说明出问题了,可能要改变学习率),而mini-batch梯度下降时,不一定每次都降低,但是总的趋势是下降的。如下图所示:

(2)Mini-batch的大小设为m(总样本数)时,变成了batch梯度下降(训练慢当样本总数大时),当设为1,变成了随机梯度下降(这时没能很好利用多样本的向量化的优势,也会导致变慢)。所示实际中选择不大不小的mini-batch尺寸,下降速度达到最快。

(3)不管是随机梯度下降还是mini-batch梯度下降都不会达到收敛,如下图所示紫色线条,所以后期需要减小学习率来使其趋向收敛。

(4)当样本数小于2000时可直接使用batch梯度下降,当样本数很大时,一般把mini-batch的大小设为2的n次方,比如64,126,512等,这样是考虑到电脑内存设置和使用方法。

(5)同第四点,所以在调参mini-batch的大小时常常设置2的不同次方。

 2.3指数加权平均数

(1)下图中蓝色为每天的的温度,红色是温度的指数加权平均数,使用如下公式计算而来:

(2)将上式更一般的表示如下:

β越大,反应越快,波动性却强,如下图中黄色线;β越小,延迟多大,越平缓,如下图中绿色线。

(3)在计算时,可以认为vt天的平均温度,如β等于0.5时,看成是两天的平均温度,β=0.98,则是50天的平均温度。

2.4理解指数加权平均数

(1)根据下面式子:

进行展开:

所以V100其实是下面两个图对应点乘积的求和(右图是从0.1开始往左指数下降):

(2)当β为0.9时,下降到第十天(0.9)10约等于0.35,大约是1/e,认为降到这个数之后可以忽略不计了。

(3)指数加权平均数公式的好处之一就在于,他占用极少内存,电脑内存中占用一行数字而已,然后把最新的数据代入公式,不断覆盖就可以了。

2.5指数加权平均数的偏差修正

 (1)按照前面提到的公式计算,比如β为0.9,得不到下图中绿色的线,而是得到紫色的线,因为一开始已经没有之前的数据可以加了,导致小了很多。

(2)解决方法是引入偏差修正,即按照之前的公式算出vt之后,再除以(1-βt),如下所示:

当t=2时:

 

这样将能能到绿色的线,当t很大时,分母也趋向于1,那时将不起作用(也不需要起作用)。

2.6动量梯度下降法(Momentum)

(1)下图中蓝色是梯度下降的过程:

(2)我们希望沿着垂直方向的振幅能变小,因为是无效的,同时因为振幅的存在使得学习率不能太大,太大振幅会更大,甚至训练的越来越差;同时横轴方向希望学习率能增大,更加快速的到达最优点,以上矛盾的两者,可以通过上一节讲到的指数加权平均来解决(因为垂直方向的均值为0,通过加权平均之后将会减小或者消除振幅,横轴方向因为始终吵着一个方向,所以进行指数加权平均没多大影响),公式如下:

(3)是否进行偏差修正影响不大,β取0.9是一个比较好的参数,学习率α会随之β的修改做一定的修改。

2.7RMSprop

(1)下图中,沿着b振幅大,说明db比较大:

(2)使用如下式子进行参数更新,理解:前两个式子平方之后将不会出现Momentum中权值平均后变为0的情况,哪边振幅大对应计算结果大,所以Sdw较小,Sdb较大;然后dw除以一个较小的数也就相当于取了较大的学习率,db除了一个较大的数,也就相当于取了一个较小的学习率,这就是RMSprop:

(3)最终会按照绿色的线优化:

2.8Adam 优化算法

(1)按照下列式子顺序即可得到Adam,他完美的讲上面提到的两种算法结合在了一起,需要注意一点是,Adam需要参数修正:

(2)参数涉及学习率α,β1(Momentum),β2(RMSprop),ε(RMSprop),其中学习率需要调整,其他三个参数使用下面图中的默认值就很好。

2.9学习率衰减(Learning rate decay)

(1)以下公式是一个学习率衰减的式子,其中包含了初始学习率a0好衰减率(decay-rate)两个参数需要调整:

(2)其他降低学习率的式子:

(3)还有离散的学习率,过一会变成原来的一半,还有不少人直接手动调整。

2.10局部最优的问题

(1)在低维(如二维)可能陷入局部最优,如下图:

(2)但是在高维中,比如20000维,陷入局部最优的概率是2-20000(即每一维度都梯度为零,几乎不可能),所以更多的时候是出现处在鞍点上:如下图:

(3)存在的问题是:在平稳端学习缓慢,上面提到的算法如Adam,能够更快的走出平稳区。

相关文章
|
10天前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品加工优化的深度学习模型
使用Python实现智能食品加工优化的深度学习模型
105 59
|
12天前
|
算法 调度
基于遗传模拟退火混合优化算法的车间作业最优调度matlab仿真,输出甘特图
车间作业调度问题(JSSP)通过遗传算法(GA)和模拟退火算法(SA)优化多个作业在并行工作中心上的加工顺序和时间,以最小化总完成时间和机器闲置时间。MATLAB2022a版本运行测试,展示了有效性和可行性。核心程序采用作业列表表示法,结合遗传操作和模拟退火过程,提高算法性能。
|
7天前
|
机器学习/深度学习 算法 数据可视化
使用Python实现深度学习模型:智能食品配送优化
使用Python实现深度学习模型:智能食品配送优化
24 2
|
6天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
29 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
6天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
22 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
6天前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
26 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
|
10天前
|
机器学习/深度学习 算法
深度学习中的模型优化策略
【10月更文挑战第35天】在深度学习的海洋中,模型优化是那把能够引领我们抵达知识彼岸的桨。本文将从梯度下降法出发,逐步深入到动量、自适应学习率等高级技巧,最后通过一个实际代码案例,展示如何应用这些策略以提升模型性能。
|
13天前
|
人工智能 算法 大数据
Linux内核中的调度算法演变:从O(1)到CFS的优化之旅###
本文深入探讨了Linux操作系统内核中进程调度算法的发展历程,聚焦于O(1)调度器向完全公平调度器(CFS)的转变。不同于传统摘要对研究背景、方法、结果和结论的概述,本文创新性地采用“技术演进时间线”的形式,简明扼要地勾勒出这一转变背后的关键技术里程碑,旨在为读者提供一个清晰的历史脉络,引领其深入了解Linux调度机制的革新之路。 ###
|
23天前
|
人工智能 算法 数据安全/隐私保护
基于遗传优化的SVD水印嵌入提取算法matlab仿真
该算法基于遗传优化的SVD水印嵌入与提取技术,通过遗传算法优化水印嵌入参数,提高水印的鲁棒性和隐蔽性。在MATLAB2022a环境下测试,展示了优化前后的性能对比及不同干扰下的水印提取效果。核心程序实现了SVD分解、遗传算法流程及其参数优化,有效提升了水印技术的应用价值。
|
22天前
|
存储 缓存 算法
优化轮询算法以提高资源分配的效率
【10月更文挑战第13天】通过以上这些优化措施,可以在一定程度上提高轮询算法的资源分配效率,使其更好地适应不同的应用场景和需求。但需要注意的是,优化策略的选择和实施需要根据具体情况进行详细的分析和评估,以确保优化效果的最大化。