深度学习并没有在大数据中表现很好,但是我们可以利用一个巨大的数据集来训练神经网络,而在巨大的数据集基础上进行训练速度很慢,因此进行优化算法能够很大程度地增加训练速度,提升效率。

本节,我们将谈谈Mini batch梯度下降法。
之前的学习中,我们已经了解到向量化能够实现对m个样本有效计算,不用明确的公式就能够处理整个训练集,所以,我们要把数据集放在一个巨大的矩阵X中,
X=[x(1) x(2) x(3) … x(m) ],因此X的维度是(n,m).

向量化能让你相对较快地处理所有m个样本,但如果m很大,处理速度仍然很慢。比如,m=500万,在对整个训练集执行梯度下降时,必须对整个m处理。mini batch就是你可以把训练集分割为小一点的子训练集,这些子集被取名为mini-batch,假设每一个子集中只有1000个样本,那么其中的X{1}=x(1) x(2) … x(1000)称为第一个子集,也叫做mini-batch,然后再取接下来的1000个样本X{2}=x(1001) x(1002) … x(2000),以此类推,就得到了5000个mini-batch,即
X=[X{1} X{2} X{3} … X{5000}]。

# mini-batch 梯度下降法
for t = 1,...,5000:
forward prop on X^{t}Z^[1] = W^(1)X^{t} + b^(1)A^[1] = g^(1)Z^[1]...A^[l] = g^(l)Z^[1]
compute cost J^{t}=1/1000*sum L(y^(i),y^^(i))+lamda/2000*sum |w^(l)|^2
back prop to compute gradient cost J
w^[l]=w^[l]-alpha*dw^[l]
b^[l]=b^[l]-alpha*db^[l]

这里的代码只是遍历了1次训练集,也成为epoch=1,利用mini-batch可以一次进行5000次梯度下降,如果需要多次进行遍历,需要再假如循环语句。

如果画出batch梯度下降的成本函数随迭代次数的图像,会发现对着迭代次数增多,成本会下降,但是对应mini-batch,因为每次迭代时处理的是X{t},Y{t}对应于J{t}的图像,因此每次迭代都在训练不同的样本集,画出来的图像虽然是向下的但是包含更多的噪声。
你需要决定的变量之一是mini-batch的大小,m就是训练集的样本数,极端情况下,如果mini-batch的大小等于m,其实就是batch梯度下降法;如果mini-batch的大小等于1,就有了新的算法,叫作随机梯度下降法SGD,这里每个样本都是新的mini-batch。

看一下在两个极端情况下成本函数的优化情况:

蓝色的线是mini-batch的成本函数的优化路径,它的噪声相对低一些,幅度也更大一些,可以较快地找到最小值;相反,对于SGD算法,由于每次迭代,你只对一个样本进行梯度下降,因此大部分时候向着最小值靠近,有时候向着相反的方向前进,因为那个样本恰好给你指的方向不对,因此SGD是有很多噪声的,平均来看,它会最终指向最小值,不过有时候也会方向错误。因此SGD永远不会收敛,而是会一直在最小值附近波动,但它并不会在达到最小值并停留在此。不过可以通过减小学习率,噪声会被改善或有所减少,但是最大的问题是这样做会失去所有向量化带给你的加速,因为一次迭代只处理一个样本,效率过于低下。

mini-batch的大小应该介于1到m之间,从而学习率也会增大,这样做的好处是:得到了大量向量化;不需要等待整个训练集被训练完就可以得到进行下一次工作。

原则:
如果训练集太小(小于2000个样本),直接用batch梯度下降;
如果训练集很大,因为计算机是二进制的,因此如果mini-batch是2的幂次方,代码运行速度会更快一些,但一般选择大小在64(2的6次方)——512,可以在实践中选择不同的数值,看成本函数下降快慢。

Mini batch梯度下降法(吴恩达深度学习视频笔记)相关推荐

  1. B站吴恩达深度学习视频笔记(1-14)——实战3:识别猫图

    前言 还记得在前几节课中吴恩达老师讲述如何识别一张图片,以及电脑识别图片的原理吗?这篇笔记中就会用到之前笔记1-14除了机器学习框架以外几乎所有的知识,来完成入门阶段终极实战--识别猫图. 我们即将使 ...

  2. 吴恩达深度学习视频笔记(持续更新)

    深度学习符号字典:http://www.ai-start.com/dl2017/html/notation.html 文章目录 第一章节:最简单的神经网络 逻辑回归Logistic Regressio ...

  3. 吴恩达深度学习视频笔记

    1.结构化数据与非结构化数据 从上图可以看出,对于小规模的数据集,深度学习和机器学习它们的性能不一定谁好谁坏,只有在大规模上的数据集上时,深度学习才能体现出它更好的性能 损失函数是针对于单个样本的,而 ...

  4. 深度学习入门首推资料--吴恩达深度学习全程笔记分享

    本文首发于微信公众号"StrongerTang",可打开微信搜一搜,或扫描文末二维码,关注查看更多文章. 原文链接:(https://mp.weixin.qq.com/s?__bi ...

  5. 吴恩达深度学习课程笔记(初步认识神经网络)

    吴恩达深度学习课程笔记1 课程主要内容 1.神经网络与深度学习介绍 2.Improving Deep Neural Networks:超参数调整,正则化,优化方法 3.结构化机器学习工程:比如如何分割 ...

  6. 吴恩达深度学习课程笔记(四):卷积神经网络2 实例探究

    吴恩达深度学习课程笔记(四):卷积神经网络2 实例探究 吴恩达深度学习课程笔记(四):卷积神经网络2 实例探究 2.1 为什么要进行实例探究 2.2 经典网络 LeNet-5 AlexNet VGG- ...

  7. 737 页《吴恩达深度学习核心笔记》发布,黄海广博士整理!

    点击上方"AI有道",选择"置顶"公众号 重磅干货,第一时间送达 深度学习入门首推课程就是吴恩达的深度学习专项课程系列的 5 门课.该专项课程最大的特色就是内容 ...

  8. 免费分享全套吴恩达深度学习课程笔记以及编程作业集合

    分享吴恩达深度学习全套 笔记 笔记来源于吴恩达老师课程中口述翻译,并包含板书.可以取代看视频,做到更快速学习. (部分目录) (部分目录) (板书) 编程作业 扫描二维码后台回复"0&quo ...

  9. 吴恩达深度学习课程笔记-3

    吴恩达深度学习课程笔记-3 src="http://nbviewer.jupyter.org/github/HuaGuo1992/Blog/blob/master/%E5%90%B4%E6% ...

最新文章

  1. 【每日一算法】最大子序列和
  2. 深度丨人工智能和大数据的关系及中国在AI领域如何赶超世界
  3. 程序员面对下列技术问题,如何做决策
  4. mysql创建外键的表_Mysql表创建外键报错解决方案
  5. 致初级开发者的一封信:坚持写代码!
  6. 同步器之Exchanger
  7. java 蓝桥杯 基础练习 Sine之舞
  8. java mathrandom函数_java Math数学工具及Random随机函数
  9. activiti并行网关
  10. Symbian手记【二】 —— Symbian对象构造
  11. 辣鸡,你怎么天天就会 try...catch ?试试这个
  12. KETTLE使用教程
  13. 火狐浏览器书签不同步问题
  14. Javascript时间脚本收集
  15. 蔡学镛:架构师最重视的文档
  16. python 汉字转拼音拼音转汉字
  17. Git修改用户名和密码
  18. 时区相关-这一篇全了解
  19. 如何远程办公电脑 关于电脑远程办公的方法和工具分享
  20. antlr + python

热门文章

  1. java在线电影网站
  2. 文本对比工具推荐 winMerge
  3. adb结合wpa_cli查看wifi状态命令集
  4. 商标名称注册查询有那些注意!
  5. Windows系统下制作原版Mac系统U盘
  6. 量化交易系统c++程序化接口代码
  7. Python 二分查找(涉及递归思想)
  8. mysql 存储过程查询优化_mysql用存储过程插入百万条数据, 及查询优化
  9. Maven项目下:@WebServlet注解失效的解决方法
  10. python微信机器人_30行代码实现微信自动回复机器人