1. Gradient Checking

我们讨论了如何进行前向传播以及后向传播,从而计算导数。但有一个不幸的消息是,它们有很多细节会导致一些BUG。 如果你用梯度下降来计算,你会发现表面上它可以工作,实际上, J虽然每次迭代都在下降,但是可能表面上关于theta的函数J在减小而你最后得到的结果实际上有很大的误差。有一个想法叫梯度检验Gradient Checking。

假设我们有一个关于theta的函数H,现在有它的一个值,假设是实数θθ,想要预测它的导数, 导数等于这个点的斜度 。我们不适用求导的方法求这个点的导数,而是使用数值逼近的方法去逼近这个导数。取ϵ=10−4ϵ=10−4, θθ两边x的坐标,θ+ϵθ+ϵ, θ−ϵθ−ϵ,,代入函数计算J(θ−ϵ)J(θ−ϵ),J(θ+ϵ)J(θ+ϵ),得到两个坐标(θ−ϵθ−ϵ,J(θ−ϵ))J(θ−ϵ)), (θ+ϵθ+ϵ,J(θ+ϵ))J(θ+ϵ)),蓝线就是真实斜率,红线是逼近的斜率,他们相差很小。这里计算使用了精度跟高的双边导数。红色标注的双边导数近似公式,除以的是2倍。

神经网络中,theta是一个向量有n个取值。我们把它展开成一行或者一列,对于每一个theta都能做梯度检测。

在使用梯度检测是有一些需要注意的事项:

2.Random initialization

权重的初始化对梯度的优化是很关键的,初始位置不同,最终得到的可能不是全局最小值,而是局部最小值。下面讨论不同的处置对网络的影响。
全部初始化为0会出现问题,通过计算梯度,更新的结果是这参数都一样。

为了表面上述的问题,我们在初始化权重的时候,有一个准则就是打破这种对称性。常使用下面这个初始化方式。

一个问题:

put it together

训练一个网络,我们需要先选择一个网络结构,确定输入和输出的个数,网络的层数。默认我们设置为1层,如果大于一层,每层unit的个数也设置为相同。



我们知道如何去计算代价函数,如何使用反向传播算法来计算偏导数。 那么我们就能使用某个最优化方法来最小化代价函数J(θ)。 对于神经网络代价函数 J(θ)是一个非凸函数,因此理论上是会停留在局部最小值的位置。 实际上梯度下降算法其他一些高级优化方法理论上都会收敛于局部最小值。尽管我们不能保证这些优化算法一定会得到全局最优值,但通常来讲 像梯度下降这类的算法在最小化代价函数 J(θ)的过程中还是表现得很不错的,通常能够得到一个很小的局部最小值。

反向传播算法的目的就是算出梯度下降的方向。而梯度下降的过程就是沿着这个方向一点点的下降,一直到我们希望得到的点。

转载于:https://www.cnblogs.com/siucaan/p/9623135.html

Machine Learning - Coursera week5 Backpropagation in Practice相关推荐

  1. Machine Learning - Coursera week5 cost function and backpropagation 1

    1. cost function 这个多类别分类的神经网络和二分类的输出个数不同,二分类只有一个输出,二多分类模型有多个输出.多分类模型的输出也用one-hot码表示. 变量的定义: L = tota ...

  2. Machine Learning - Coursera 吴恩达机器学习教程 Week5 学习笔记

    神经网络的代价函数 定义 L = 神经网络总层数 sl = 第l层的单元数(不包含bias unit) K = output units/classes的数量 普通逻辑回归代价函数: 神经网络代价函数 ...

  3. Machine Learning - Coursera week6 Evaluating a learning algorithm

    Evaluating a learning algorithm 1. Design what to do next 在预测房价的学习例子,假如你已经完成了正则化线性回归,也就是最小化代价函数J的值.假 ...

  4. Machine Learning - Coursera 吴恩达机器学习教程 Week1 学习笔记

    机器学习的定义 Arthur Samuel 传统定义 Arthur Samuel: "the field of study that gives computers the ability ...

  5. 【Machine Learning, Coursera】机器学习Week6 偏斜数据集的处理

    ML Week6: Handing Skewed Data 本节内容: 查准率(precision)和召回率(recall) F1F_1F1​ Score 偏斜类(skewed class)问题:数据 ...

  6. Machine Learning – 第2周(Linear Regression with Multiple Variables、Octave/Matlab Tutorial)

    Machine Learning – Coursera Octave for Microsoft Windows GNU Octave官网 GNU Octave帮助文档 (有900页的pdf版本) O ...

  7. Machine Learning - Andrew Ng on Coursera (Week 5)

    本篇文章将分享Coursera上Andrew Ng的Machine Learning第五周的课程,主要内容有如下,详细内容可以参考文末附件: 代价函数及后向算法 Cost function(代价函数) ...

  8. Coursera | Applied Data Science with Python 专项课程 | Applied Machine Learning in Python

    本文为学习笔记,记录了由University of Michigan推出的Coursera专项课程--Applied Data Science with Python中Course Three: Ap ...

  9. Machine Learning - Andrew Ng on Coursera (Week 6)

    本篇文章将分享Coursera上Andrew Ng的Machine Learning第六周的课程,主要内容有如下,详细内容可以参考文末附件: 评价机器学习算法 Diagnosing bias vs. ...

最新文章

  1. Buuctf(PWN)ciscn_2019_c_1
  2. java timestamp时间差_关于datetime:如何在java中找到2个时间戳之间的日差
  3. Apache 服务器的配置
  4. 如何创建依赖于某时间段的ABAP视图
  5. iterator and iterable
  6. linux-3.4.2移植到FL2440上(一)--只是基本移植
  7. 用python解决生活问题_Python解决生活问题之闹钟程序的实现
  8. java httputil_Java网络编程与NIO详解2:JAVA NIO 一步步构建IO多路复用的请求模型
  9. openssl pkeyutl执行SM2椭圆曲线数字签名
  10. ASP.NET删除等操作前的提示解决方案
  11. sql中的distinct
  12. PHPExcel内存溢出解决方案
  13. 我们在GDC上公布了一些好消息
  14. OpenCV——调整图片的对比度、亮度和饱和度
  15. 数字图像处理,中值滤波和均值滤波及其改进算法的C++实现
  16. 面向预测的时空数据学习方法分析
  17. android获取热点主机ip和连接热点手机ip
  18. 文本分类之降维技术之特征抽取之SVD矩阵的分解的原理的介绍
  19. 怎样将mpg格式的视频文件转换成mp4格式
  20. 【验证码刷新不出来及其解决】

热门文章

  1. 去掉状态条并全屏_机关单位内必须懂的道理:20条潜规则和13条定律
  2. mysql maximum idle_MySQL的MaxIdleConns不合理,会变成短连接的原因
  3. 三十好几的程序员被领导责骂,只能到厕所痛哭!
  4. 前端开发基础知识整理--web综合篇
  5. 总结 10 年前端经验,谈谈前端人如何更快地成长
  6. php 简单的socket,【技术产品】PHP如何实现简单的Socket
  7. vue delete删除json数组_Vue.set 和 Vue.delete
  8. FPGA学习笔记---任务(task) 和函数 (function)
  9. Matplotlib - plot用例
  10. OpenCV:无法启动此程序,因为计算机中丢失opencv_world310.dll