日萌社

人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新)


BATCH_SIZE大小设置对训练耗时的影响:1.如果当设置BATCH_SIZE等于训练样本时,比如训练样本有512个,设置BATCH_SIZE=512,那么一次BATCH_SIZE=512的批量数据进行训练时,会计算BATCH_SIZE=512个样本的反向传播,求出512个样本的梯度累计和,然后使用该梯度累计和进行一次权重参数更新。2.如果当设置BATCH_SIZE等于1时,,比如训练样本有512个,设置BATCH_SIZE=1,那么一次BATCH_SIZE=1的批量数据进行训练时,会计算BATCH_SIZE=1个样本的反向传播,求出1个样本的梯度,然后使用该梯度进行一次权重参数更新,那么当所有512个样本都完成训练时,一共进行了512次反向传播(梯度计算),512次参数更新。3.结论:1.显然BATCH_SIZE设置越大,那么所有训练样本数据完成一次训练(完成一个epoch)要进行的参数更新次数会更少,那么训练耗时更短,BATCH_SIZE设置越小,一个epoch训练完所有样本数据要进行的参数更新次数会更多,因此训练耗时更长。2.当然训练耗时也和你所选取的优化算法是全批量梯度下降BGD、随机梯度下降SGD、小批量梯度下降Mini-batch GD(MBGD)有关。4.每个批量数据训练都要执行的代码流程# 设置优化器初始梯度为0optimizer.zero_grad()# 模型输入一个批次数据, 获得输出output = model(text)# 根据真实标签与模型输出计算损失loss = criterion(output, label)# 将该批次的损失加到总损失中train_loss += loss.item()# 误差反向传播loss.backward()# 参数进行更新optimizer.step()

3.1 深度学习优化算法

深度学习难以在大数据领域发挥最大效果的一个原因是,在巨大的数据集基础上进行训练速度很慢。而优化算法能够帮助我们快速训练模型,提高计算效率。接下来我么就去看有哪些方法能够解决我们刚才遇到的问题或者类似的问题。

3.1.1 优化算法

  • 优化的目标在于降低训练损失,只关注最小化目标函数上的表现

深度学习问题中,我们通常会预先定义一个损失函数。有了损失函数以后,我们就可以使用优化算法试图将其最小化。在优化中,这样的损失函数通常被称作优化问题的目标函数(objective function)。依据惯例,优化算法通常只考虑最小化目标函数。

3.1.1.1优化遇到的挑战

  • 局部最优
  • 梯度消失

3.1.1.2 局部最优

  • 定义:对于目标函数f(x),如果f(x)在x上的值比在x邻近的其他点的值更小,那么f(x)可能是一个局部最小值(local minimum)。如果f(x)在x上的值是目标函数在整个定义域上的最小值,那么f(x)是全局最小值(global minimum)。

当一个优化问题的数值解在局部最优解附近时,由于目标函数有关解的梯度接近或变成零,最终迭代求得的数值解可能只令目标函数局部最小化而非全局最小化。

3.1.1.3 鞍点与海森矩阵(Hessian Matric)

刚刚我们提到,梯度接近或变成零可能是由于当前解在局部最优解附近造成的。事实上,另一种可能性是当前解在鞍点(saddle point)附近。

  • 鞍点(saddle)是函数上的导数为零,但不是轴上局部极值的点。通常梯度为零的点是上图所示的鞍点,而非局部最小值。减少损失的难度也来自误差曲面中的鞍点,而不是局部最低点。

上图中,目标函数在CD方向是一个局部最大值,但是在AB方向是一个局部最小值。所有当某个函数在梯度为0的位置上可能是局部最小之、局部最大值或者鞍点。

  • 条件:

    • 当函数的海森矩阵在梯度为零的位置上的特征值全为正时,该函数得到局部最小值。
    • 当函数的海森矩阵在梯度为零的位置上的特征值全为负时,该函数得到局部最大值。
    • 当函数的海森矩阵在梯度为零的位置上的特征值有正有负时,该函数得到鞍点。

为什么海森矩阵判断?

回想一下我们是如何处理一元函数求极值问题的。例如,f(x)=x^2,我们会先求一阶导数,即f′(x)=2x,某点处的一阶导数一定等于 0。但这仅是一个必要条件,而非充分条件。对于f(x)=x^2来说,函数的确在一阶导数为零的点取得了极值,但是对于f(x)=x^3来说,显然只检查一阶导数是不足以下定论的。

海森矩阵:

  • 海森矩阵最早于19世纪由德国数学家Ludwig Otto Hesse提出,并以其名字命名。利用黑塞矩阵可判定多元函数的极值问题。
  • 一个多元函数的二阶偏导数构成的方阵

3.1.1.4 梯度消失

为什么会造成我们的损失函数难优化,其实有个原因就是因为激活函数存在使得函数计算梯度时候遇到梯度消失问题。在梯度函数上出现的以指数级递增或者递减的情况分别称为梯度爆炸或者梯度消失

在计算梯度时,根据不同情况梯度函数也会以指数级递增或递减,导致训练导数难度上升,梯度下降算法的步长会变得非常小,需要训练的时间将会非常长。

解决办法有多种形式

通常会结合一些形式一起进行

  • Mini梯度下降法
  • 梯度下降算法的优化
  • 初始化参数策略
  • 学习率衰减

3.1.2 批梯度下降算法(Batch Gradient Descent)

  • 定义:批梯度下降法(btach),即同时处理整个训练集。

其在更新参数时使用所有的样本来进行更新。对整个训练集进行梯度下降法的时候,我们必须处理整个训练数据集,然后才能进行一步梯度下降,即每一步梯度下降法需要对整个训练集进行一次处理,如果训练数据集很大的时候,处理速度就会比较慢。

所以换一种方式,每次处理训练数据的一部分进行梯度下降法,则我们的算法速度会执行的更快。

3.1.2.1 Mini-Batch Gradient Descent

  • 定义:Mini-Batch 梯度下降法(小批量梯度下降法)每次同时处理固定大小的数据集。

不同

  • 种类:

    • mini-batch 的大小为 1,即是随机梯度下降法(stochastic gradient descent)

使用 Mini-Batch 梯度下降法,对整个训练集的一次遍历(epoch)只做 mini-batch个样本的梯度下降,一直循环整个训练集。

3.1.2.2 批梯度下降与Mini-Batch梯度下降的区别

batch梯度下降法和Mini-batch 梯度下降法代价函数的变化趋势如下:

那么对于梯度下降优化带来的影响

3.1.2.3 梯度下降优化影响

  • batch 梯度下降法:

    • 对所有 m 个训练样本执行一次梯度下降,每一次迭代时间较长,训练过程慢
    • 相对噪声低一些,成本函数总是向减小的方向下降。
  • 随机梯度下降法(Mini-Batch=1):
    • 对每一个训练样本执行一次梯度下降,训练速度快,但丢失了向量化带来的计算加速
    • 有很多噪声,需要适当减小学习率,成本函数总体趋势向全局最小值靠近,但永远不会收敛,而是一直在最小值附近波动。

因此,选择一个合适的大小进行 Mini-batch 梯度下降,可以实现快速学习,也应用了向量化带来的好处,且成本函数的下降处于前两者之间。

3.1.2.4 大小选择

局部最优、梯度消失、鞍点、海森矩阵(Hessian Matric)、批梯度下降算法(btach批梯度下降法BGD、小批量梯度下降法Mini-Batch GD、随机梯度下降法SGD)相关推荐

  1. 多元函数严格凹 海塞矩阵正定_海森矩阵的应用:多元函数极值的判定

    海森矩阵(Hessian Matrix),又译作黑塞矩阵.海瑟矩阵. 海塞矩阵等,是一个多元函数的二阶偏导数构成的方阵,描述 了函数的局部曲率.黑塞矩阵最早于19世纪由德国数学家 Ludwig Ott ...

  2. 雅克比矩阵和海森矩阵 Jacobian and Hessian Matrix

    转:http://jacoxu.com/jacobian%E7%9F%A9%E9%98%B5%E5%92%8Chessian%E7%9F%A9%E9%98%B5/ 1. Jacobian 在向量分析中 ...

  3. 梯度、雅克比矩阵、海森矩阵、多元泰勒公式

      梯度向量的表达式为: [∂f∂x1∂f∂x2...∂f∂xn]=[∂f∂x1∂f∂x2..∂f∂xn]T\left[ \begin{array} { c c } {\frac {\partial{ ...

  4. 特征提取 - 海森矩阵(Hessian Matrix)及一个用例(图像增强)

    转自:https://blog.csdn.net/u013921430/article/details/79770458 这个例子效果并没有给出的结果那么好,但是Hessian矩阵的生成可以参考 前言 ...

  5. 雅可比矩阵 和 海森矩阵

    雅可比矩阵 假设F:Rn→Rm 是一个从欧式n维空间转换到欧式m维空间的函数.这个函数由m个实函数组成: y1(x1,...,xn), ..., ym(x1,...,xn). 这些函数的偏导数(如果存 ...

  6. 海森矩阵和雅克比矩阵的区别

    海森矩阵是梯度矩阵的雅克比矩阵 雅可比矩阵可以理解为: 若在n维欧式空间中的一个向量映射成m维欧式空间中的另一个向量的对应法则为F,F由m个实函数组成,即: 那么雅可比矩阵是一个m×n矩阵: 与海森矩 ...

  7. matlab生成海森矩阵

    在 Matlab 中,可以使用如下代码生成海森矩阵: n = 3; % 矩阵的大小 H = eye(n) - circshift(eye(n),1,2); 这里,n 表示生成的海森矩阵的大小,而 ey ...

  8. 牛顿法、雅克比矩阵、海森矩阵

    转自:https://blog.csdn.net/Yan456jie/article/details/52332043 一般来说, 牛顿法主要应用在两个方面, 1, 求方程的根; 2, 最优化. 1, ...

  9. 海森矩阵与多元多项式的结合与极值判定【浅显易懂版:欢迎补充】

    1.海森矩阵 2.二元泰勒展开式 3.利用海森矩阵判定多元函数的极值

最新文章

  1. 独家 | 指南:不平衡分类的成本敏感决策树(附代码链接)
  2. jQuery event的复制粘贴的坑
  3. lwIP ARP协议分析
  4. docker 启动mysql root用户_Docker-Compose搭建Wordpress博客系统
  5. 图像处理 --- 二、数字图像处理基础
  6. linux下C语言简单实现线程池
  7. 看完就懂webpack打包原理
  8. 【网络文摘】编程的智慧
  9. activity直接销毁_Android 关于Activity的销毁和重建
  10. python dlib opencv人脸识别准确度_Dlib+OpenCV深度学习人脸识别
  11. 5G信令7——Service Request
  12. 简单的遗传算法实例(MATLAB版)
  13. 什么是 UCOS操作系统及特点
  14. ubuntu的初始密码
  15. 软考十大管理流程图知识点整理
  16. 共享办公室,月赚2万-5万的阳光创业项目
  17. java求方程的根运行图_Java程序设计(十四)----一个求一元二次方程根
  18. 怎么去禁止QQ的安全组件,来解决QQ和360的冲突问题
  19. 何金昌内增高鞋 专业打造专属时尚范儿网厄瓜多尔1季度皮革生产价格指数涨幅明显
  20. dubbo源码解析之框架粗谈

热门文章

  1. Excel 多个单元格合并到一个单元格中的函数
  2. 企业生产如何智能化?数据构建智能车间
  3. 【JavaScript基础教程】
  4. 有助于解决普遍困扰程序员发展问题的一种见解——性能量守恒,精力越衰弱,欲望越旺盛
  5. 小白安装win10、Centos7双系统的经历
  6. windows下火狐浏览器中配置kerberos客户端
  7. 服务器冲洗泵的作用是什么,反冲洗泵作用,过滤池反冲洗泵有什么用?-长沙中联泵业...
  8. c语言程序设计足球,使用C语言计算与模拟足球射门.doc
  9. STM32F103Mini移植RT-ThreadNano
  10. 水质中的PH值、TDS值、KH值、GH值分别是什么意思