机器学习(吴恩达)第五周-课程笔记&课后作业&编程作业

Neural Networks: Learning 课程内容

文章参考:CodingRae

链接:链接

*****最好配合着ppt看***

代价函数和反向传播

在这里插入图片描述

L:这个神经网络结构的总层数

sl:第L层的单元的数量,神经元的数量

中间隐藏层神经元的每层数量是相同的

两种分类:二元分类及多元分类

二元:y=0或1----一个输出单元

多元分类:

k个输出单元

 

代价函数

在这里插入图片描述

注意:

∑m∑K简单地将输出层中每个单元计算的逻辑回归成本相加

反向传播算法

用于计算导数项

在这里插入图片描述

在这里插入图片描述

误差

 

推导反向算法函数比较详细的解释:https://zhuanlan.zhihu.com/p/25609953

实现反向传播算法的原理:

在这里插入图片描述

向后传播直观理解(例子)Back propagation intuition

当只有一个样本(xi,yi),一个输出单元且不考虑正则化时

具体算法应用讲解

Unrolling parameters展开参数

矩阵形式的优点在于当你的系数以矩阵形式存储时,计算前向传播和反向传播会更方便。当你使用某种向量化的实现时,使用矩阵形式会更简单。

梯度检验gradient checking

后向传播有很多细节会导致一些BUG,如果你用梯度下降来计算,表面上关于theta的函数J在减小,但是你可能最后得到的结果实际上有很大的误差。

梯度检验能确保我们的反向传播如预期工作。

*********非常重要********

算法顺序如下:

  • 首先,使用反向传播来计算DVec
  • 然后,用gradApprox实现梯度检验
  • 确定DVec和gradApprox给出接近结果
  • 最后,验证了反向传播代码正确之后,在用反向传播代码训练前,关掉梯度检验(在开始迭代训练之前一定要关掉梯度检验不再计算gradAppro,如果你对梯度下降的每次迭代都进行数值梯度计算,那么你的算法会非常慢。)

Random Initialization

当你使用梯度下降算法,或者其他高级的优化算法,我们需要设置初始值。
当初始值全部是零时,神经网络实际上进入很有意思的情况,不仅有两个隐层,还有很多很多层。所有你的隐层的结果都一样,十分冗余。我们看到的问题叫做对称现象

所以我们需要随机初始化。我们进行初始化的操作目的就是打破对称

随机初始化如何取值


在这里插入图片描述

搭建网络的大体框架Put it together

当我们在训练一个神经网络时,我们要做的第一件事就是搭建网络的大体框架,意思是神经元之间的连接模式

在这里插入图片描述

一般来说隐藏单元越多越好

实现神经网络的训练过程:

1、构建一个神经网络,随机初始化权值(通常初始化为接近于0的值)
2、执行前向传播算法,对任意输入 x(i) 计算出对应的 hθ(x(i))
3、通过代码计算代价函数 J(Θ)
4、执行反向传播算法,计算偏导数

在这里插入图片描述

5、使用梯度检验用反向传播得到的偏导项和用数值计算得到的估计值,确保两者比较接近。然后去掉梯度检验代码。
6、使用一个最优化算法(梯度下降、BFGS 共轭梯度…)和反向传播算法结合,计算偏导。
**对于神经网络,代价函数J(Θ)是个非凸函数。**尽管我们不能保证这些优化算法一定会得到全局最优值,但通常能够得到一个很小的局部最小值。

在这里插入图片描述

测验 Neural Networks: Learning

编程作业

 

ppt

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值