首页 > 编程语言 >吴恩达深度学习笔记(4)---加速神经网络训练速度的优化算法

吴恩达深度学习笔记(4)---加速神经网络训练速度的优化算法

时间:2024-10-17 20:51:13浏览次数:12  
标签:学习 吴恩达 训练 梯度 样本 神经网络 下降 --- 算法

机器学习的应用是一个高度依赖经验,不断重复的过程,需要训练很多模型才能找到一个确实好用的。

小批量梯度下降算法:

矢量化可以有效计算m个算例而不需要for循环,因此我们需要将所有的训练样例放入巨型矩阵中。但是当数据量超大时,计算时间仍需很久,可以考虑将训练集分为微小的训练集,即小批量训练集。

对于一个小的训练集进行下图计算,也叫做训练集的一次遍历。

梯度下降过程中,代价函数是不断下降的,但是小批量的代价函数趋势是下降,过程中有噪声。

设置一个批量的参数,极端情况是一个小训练集的样本是所有样本,这种情况下,每次需要遍历全部的样本,另一个极端情况是一个样本一个集合(随机梯度下降),如下图,一个下降步长大,另一个随机噪声很大,虽然可以通过小的学习率改善,但是一般很难收敛到最低点,而是在最低点周围波动,同时失去了可以利用向量加速运算的机会

因此参数要取合适值

  • 可以利用向量加速运算
  • 不必每次遍历全部的样本再进行梯度下降

参数的选择

  • 当样本数小于2000时,不需要用
  • 其他情况下可以设置2的幂次,常见的为:64、128、256、512

指数加权(滑动)平均(基本理论):

指数加权平均的函数:

增大,曲线右移,更加平滑。

假设样本有100个,将指数加权平均的函数展开可得下式,所有系数之和等于或接近1。

在算法开始初始值设置为0时,将会导致前几个数字结果不能很好拟合

在算法估算初期用代替

动量(动量梯度下降)

他比标准梯度下降算法更快,算法主要计算梯度的指数加权平均,之后使用这个梯度过更新权重。

梯度下降算法产生的这种上下震荡会减慢梯度下降的速度,并且不能用较大的学习率,否则会超调。因此希望在纵轴上减慢学习速度,在横轴上加快学习速度

上述方法可以让梯度下降的每一步变得平滑,算法对于一些问题有效,但是对于碗型的函数

,由于加速度使速度变快,但是小于1相当于摩檫力,所以球不会无线加速。

RMSprop均方根传递:

我们希望在纵轴方向上学习速度减慢,在横轴方向上保持不变或者加快

适应性矩估计(adam)算法优化:

学习速率衰减:

缓慢的降低学习率,在初始阶段取较大值,步长大,随着学习率下降,步长变小,可以收敛于一点。

局部最优解问题:

如果我们建立一个神经网络,通常梯度为零的点,并不是如左图中的局部最优点,而是右图中的鞍点

标签:学习,吴恩达,训练,梯度,样本,神经网络,下降,---,算法
From: https://blog.csdn.net/weixin_43899239/article/details/142961891

相关文章

  • Winform控件基础与进阶----DataGridView
    Winform控件基础之封装一个通用的DataGridView操作类1、创建Winform项目2、创建公共控件操作文件夹3、主界面1、控件布局2、提取通用方法3、静态方法类实现4、其他工具类实现1、JsonHelper工具类实现2、TxtOperateHelper工具类实现5、数据模型实现1、创建表结构模型2......
  • 计算机网络基础(2)---网络传输基本流程与Socket编程预备
    个人主页:C++忠实粉丝欢迎点赞......
  • 大厂面试真题-说说jdk1.7和1.8的hashmap的区别以及各自的问题
    JDK1.7和JDK1.8中的HashMap存在显著的区别,并且各自存在一些问题。以下是对两者的详细对比及问题分析:一、区别底层数据结构:JDK1.7:HashMap的底层结构是由数组(也被称为“位桶”)和链表构成。当hash冲突时,不同的key映射到数组的同一位置,则形成链表。JDK1.8:HashMap的底层结构......
  • mac arm64架构编译错误-- 未定义符号问题
    1.未定义符号:_objc_msgSend$...Undefinedsymbolsforarchitecturearm64:"_objc_msgSend$detachNewThreadSelector:toTarget:withObject:"使用以下命令查看xcode版本xcodebuild-version当xcode14编译的库在xcode13中被链接时,会报这个错。报错位置会打印引用未定义符号......