Andrew Ng机器学习课程笔记--week5(下)
Neural Networks: Learning
内容较多,故分成上下两篇文章。
一、内容概要
Cost Function and Backpropagation
- Cost Function
- Backpropagation Algorithm
- Backpropagation Intuition
Backpropagation in Practice
- Implementation Note:Unroll Parameters
- Gradient Checking
- Random Initialization
- Putting it Together
Application of Neural Networks
- Autonomous Driving
二、重点&难点
1. Backpropagation in Practice
1) Implementation Note:Unroll Parameters
本节主要讲的是利用octave实现神经网络算法的一个小技巧:将多个参数矩阵展开为一个向量。具体可以参考课程视频,此处略。
2) Gradient Checking
神经网络算法是一个很复杂的算法,所以我们很难凭直觉观察出结果是否正确,因此有必要在实现的时候做一些检查,本节给出一个检验梯度的数值化方法。
首先我们可以将损失函数的梯度近似为
\(\frac{∂J(θ)}{∂θ}≈\frac{J(θ+ε)-J(θ-ε)}{2ε}\)
推广到一般形式是:
\(\frac{∂J(θ)}{∂θ_j}≈\frac{J(θ_1,θ_2,θ_j+ε……,θ_n)-J(θ_1,θ_2,θ_j-ε……,θ_n)}{2ε}\)
一般来说ε≈\(10^{-4}\)时就比较接近了

最后我们的主要目标是检查这个梯度的近似向量与反向传播算法得到的梯度向量是否近似相等。
实现时的注意点:
- 首先实现反向传播算法来计算梯度向量DVec;
- 其次实现梯度的近似gradApprox;
- 确保以上两步计算的值是近似相等的;
- 在实际的神经网络学习时使用反向传播算法,并且关掉梯度检查。
特别重要的是:
- 一定要确保在训练分类器时关闭梯度检查的代码。如果你在梯度下降的每轮迭代中都运行数值化的梯度计算,你的程序将会非常慢。
3) Random Initialization
关于如何学习一个神经网络的细节到目前为止基本说完了,不过还有一点需要注意,就是如何初始化参数向量or矩阵。通常情况下,我们会将参数全部初始化为0,这对于很多问题是足够的,但是对于神经网络算法,会存在一些问题,以下将会详细的介绍。
对于梯度下降和其他优化算法,对于参数向量的初始化是必不可少的。能不能将初始化的参数全部设置为0?

在神经网络中,如果将参数全部初始化为0 会导致一个问题,例如对于上面的神经网络的例子,如果将参数全部初始化为0,在每轮参数更新的时候,与输入单元相关的两个隐藏单元的结果将是相同的,既:
\(a_1^{(2)} = a_2^{(2)}\)
这个问题又称之为对称的权重问题,因此我们需要打破这种对称,这里提供一种随机初始化参数向量的方法: 初始化\(θ_{ij}^{(l)}\)为一个落在 [-ε,ε]区间内的随机数, 可以很小,但是与上面梯度检验( Gradient Checking)中的ε没有任何关系。
4)Putting it together(组合到一起-如何训练一个神经网络)
这个老师说会在后面更加具体的介绍。
关于神经网络的训练,我们已经谈到了很多,现在是时候将它们组合到一起了。那么,如何训练一个神经网络?
首先需要确定一个神经网络的结构-神经元的连接模式, 包括:
- 输入单元的个数:特征 的维数;
- 输出单元的格式:类的个数
- 隐藏层的设计:比较合适的是1个隐藏层,如果隐藏层数大于1,确保每个隐藏层的单元个数相同,通常情况下隐藏层单元的个数越多越好。
在确定好神经网络的结构后,我们按如下的步骤训练神经网络:
- 随机初始化权重参数;
- 实现:对于每一个 通过前向传播得到;
- 实现:计算代价函数;
- 实现:反向传播算法用于计算偏导数
- 使用梯度检查来比较反向传播算法计算的和数值估计的的梯度,如果没有问题,在实际训练时关闭这部分代码;
- 在反向传播的基础上使用梯度下降或其他优化算法来最小化;
Application of Neural Networks
主要介绍了老师的一个大佬朋友利用神经网络设计的自动驾驶汽车的视频,感兴趣的可以看看。自动驾驶汽车
Andrew Ng机器学习课程笔记--week5(下)的更多相关文章
- Andrew Ng机器学习课程笔记--week5(上)
Neural Networks: Learning 内容较多,故分成上下两篇文章. 一.内容概要 Cost Function and Backpropagation Cost Function Bac ...
- Andrew Ng机器学习课程笔记--week9(下)(推荐系统&协同过滤)
本周内容较多,故分为上下两篇文章. 本文为下篇. 一.内容概要 1. Anomaly Detection Density Estimation Problem Motivation Gaussian ...
- Andrew Ng机器学习课程笔记--汇总
笔记总结,各章节主要内容已总结在标题之中 Andrew Ng机器学习课程笔记–week1(机器学习简介&线性回归模型) Andrew Ng机器学习课程笔记--week2(多元线性回归& ...
- Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计
Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7392408.h ...
- Andrew Ng机器学习课程笔记(五)之应用机器学习的建议
Andrew Ng机器学习课程笔记(五)之 应用机器学习的建议 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7368472.h ...
- Andrew Ng机器学习课程笔记--week1(机器学习介绍及线性回归)
title: Andrew Ng机器学习课程笔记--week1(机器学习介绍及线性回归) tags: 机器学习, 学习笔记 grammar_cjkRuby: true --- 之前看过一遍,但是总是模 ...
- Andrew Ng机器学习课程笔记(四)之神经网络
Andrew Ng机器学习课程笔记(四)之神经网络 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7365730.html 前言 ...
- Andrew Ng机器学习课程笔记(三)之正则化
Andrew Ng机器学习课程笔记(三)之正则化 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7365475.html 前言 ...
- Andrew Ng机器学习课程笔记(二)之逻辑回归
Andrew Ng机器学习课程笔记(二)之逻辑回归 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7364636.html 前言 ...
随机推荐
- TP3.2写提交的验证码验证
把今天掌握的东西整理一下,要不然,我就忘干净了: 今天在做一个企业网站的时候,有一个在线留言的功能,最后提交的时候需要输入验证码.如图下: 当然,特连接的并不是我的后台 好了,开始了,首先我需要把验证 ...
- T4 代码生成 Demo (抽奖程序)
参考自这位大狮的: https://github.com/Pencroff/Dapper-DAL/blob/master/Dapper-DAL/Models/ModelGenerator.tt 项目 ...
- 打印水仙花数(narcissus number)
题目:打印出所有的"水仙花数(narcissus number)",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个" ...
- Android - 读取XML文件中的数据
读取XML中存储的数据.将xmlfile.xml存放在assets文件夹中.在activity_main.xml中创建一个textview,用来显示读取到的数据. XML文件内容如下:xmlfile. ...
- c# 多线程 创建对象实例
本次的标题是我在写单例模式的博客时遇到的问题,所以今天专门写了的demo让自己记住怎么简单的使用多线程. 一直纠结的是怎么在for循环中多次实例化对象,好复现单例模式在没有加锁的情况下出现多个实例对象 ...
- (转)XML中必须进行转义的字符
场景:在工作中接触到很多xml文件,为了更好的操作这些文件,所有很有必要熟知xml文件的相关语义. 1 引入 编写XML代码经常遗漏的常识: XML实体中不允许出现"&", ...
- shell 脚本编写 if else then
if ....; then .... elif ....; then .... else .... fi 大多数情况下,可以使用测试命令来对条件进行测试.比如可以比较字符串.判断文件是否存在及是否可读 ...
- HTML5 开发APP(头部和底部选项卡)
我们开发app有一定固定的样式,比如头部和底部选项卡部分就是公共部分就比如我在做的app进来的主页面就像图片显示的那样 我们该怎么实现呢,实现我们应该建一个主页面index.html,然后建五个子页面 ...
- 【模板--完全背包】HDU--2602 Bone Collector
Problem Description Many years ago , in Teddy's hometown there was a man who was called "Bone C ...
- BPM与OA的区别及联系
BPM与OA的区别及联系 近年来,在企业管理信息系统一些名词反复被提及,然而外行人对于这些名词则是一头雾水,网上的解释又鱼龙混杂,没有绝对权威的文献可供参考,因此也就让我们对这些名词的认识越来越模糊. ...