当前位置: 首页 > article >正文

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

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

小批量梯度下降算法:

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

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

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

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

因此参数要取合适值

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

参数的选择

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

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

指数加权平均的函数:

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

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

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

在算法估算初期用代替

动量(动量梯度下降)

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

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

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

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

RMSprop均方根传递:

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

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

学习速率衰减:

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

局部最优解问题:

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


http://www.kler.cn/a/354091.html

相关文章:

  • Vue.js组件开发-实现访问页面自动获取数据
  • 探秘仓颉编程语言:使用体验与功能剖析
  • 理解神经网络
  • JAVA学习笔记_MySQL进阶
  • NLP 中文拼写检测纠正论文 C-LLM Learn to CSC Errors Character by Character
  • Spring基础分析14-用户认证与授权
  • 【Python爬虫实战】正则:从基础字符匹配到复杂文本处理的全面指南
  • 2023-06 GESP C++三级试卷
  • Spring MVC的运行流程
  • Flume面试整理-Flume的故障排除与监控
  • 阿里云国际站DDoS高防增值服务怎么样?
  • 个人 Mac 常用配置记录
  • 特征提取:传统算法 vs 深度学习
  • 科学家们设计了一种新型胰岛素,能够根据血液中的葡萄糖水平自动开启或关闭
  • php常用设计模式之工厂模式
  • Spring Boot助力:图书进销存管理效率提升
  • A-【项目开发知识管理】Android AIDL跨进程通信
  • git add操作,文件数量太多卡咋办呢,
  • Java项目:158 springboot球队训练信息管理系统(含论文)
  • 04 设计模式-创造型模式-建造者模式
  • VS Code对齐NoteBook和Terminal的Python环境
  • Axure基本元件库——基本元件、表单和菜单表格
  • 串口(UART)的FPGA设计(接收与发送模块)
  • CSS之一
  • Whisper 音视频转写
  • C++ | Leetcode C++题解之第491题非递减子序列