吴恩达MachineLearning-Week5

原笔记网址:https://scruel.gitee.io/ml-andrewng-notes/week5.html

红色字体为自己的标注、绿色字体为自己的感想。

目录

9 神经网络: 学习(Neural Networks: Learning)

9 神经网络: 学习(Neural Networks: Learning)

9.1 代价函数(Cost Function)

神经网络的分类问题有两种: 

一般来说,二元分类问题,K=1;N元分类问题,K=N。

神经网络的代价函数公式:

对右边三次求和操作,实际上是将所有theta矩阵的所有项求和。该神经网络有L层,则有L-1个theta矩阵。对位于l层的theta矩阵,维数是(sl+1,sl)。

再次可见,神经网络背后的思想是和逻辑回归一样的,但由于计算复杂,实际上神经网络的代价函数是一个非凸(non-convex)函数。

9.2 反向传播算法(Backpropagation Algorithm)

        

          在误差计算中,激活向量a都增加了偏置单元。

          

这就是反向传播算法,即从输出层开始不断向前迭代,根据l层的误差依次计算当前l-1层的误差,以求得代价函数的偏导。

反向传播(BackPropogation),算法的神经网络被称为 BP 网络,也称前馈网络(向前反馈)

前向传播(ForwardPropogation),即FB。

 

《机器学习》一书中提到的 BP 网络强大之处:

任何布尔函数都可由两层神经网络准确表达,但所需的中间单元的数量随输入呈指数级增长;

任何连续函数都可由两层神经网络以任意精度逼近;

任何函数都可由三层神经网络以任意程度逼近。

9.3 直观理解反向传播(Backpropagation Intuition)

这节给出了反向传播算法中误差的数学意义,给出了第二节中公式的推导过程。

9.4 实现注意点: 参数展开(Implementation Note: Unrolling Parameters)

在 Octave/Matlab 中,如果要使用类似于 fminunc 等高级最优化函数,其函数参数、函数返回值等都为且只为向量,而由于神经网络中的权重是多维矩阵,所以需要用到参数展开这个技巧。

说白了,这个技巧就是把多个矩阵转换为一个长长的向量,便于传入函数,之后再根据矩阵维度,转回矩阵即可

Octave/Matlab 代码:

9.5 梯度检验(Gradient Checking)

由于神经网络模型中的反向传播算法较为复杂,在小细节非常容易出错,从而无法得到最优解,故引入梯度检验。

梯度检验采用数值估算(Numerical estimation)梯度的方法,被用于验证反向传播算法的正确性。

Octave/Matlab 代码:

在得出 gradApprox 梯度向量后,将其同之前计算的偏导比较,如果相等或很接近,即说明算法没有问题。

在确认算法没有问题后一般只需运行一次),由于数值估计的梯度检验效率很低,所以一定要禁用它

9.6 随机初始化(Random Initialization)

逻辑回归中,初始参数向量全为 0 没什么问题,在神经网络中,情况就不一样了。

初始权重如果全为 0,忆及,则隐藏层除了偏置单元,都为 0,而每个单元求导的值也都一样,这就相当于是在不断重复计算同一结果,也就是算着算着,一堆特征在每一层都变成只有一个特征(虽然有很多单元,但值都相等),这样,神经网络的性能和效果都会大打折扣,故需要随机初始化初始权重。

随机初始化权重矩阵也为实现细节之一,用于打破对称性(Symmetry Breaking),使得

Octave/Matlab 代码:

9.7 综合起来(Putting It Together)

一般来说,应用神经网络有如下步骤:

神经网络的建模(后续补充)

默认情况下,隐藏层至少要有一层,也可以有多层,层数越多一般意味着效果越好,计算量越大。

  • 选取特征,确定特征向量x的维度,即输入单元的数量。
  • 鉴别分类,确定预测向量的维度,即输出单元的数量。
  • 确定隐藏层有几层以及每层隐藏层有多少个隐藏单元。

训练神经网络

  1. 随机初始化初始权重矩阵
  2. 应用前向传播算法计算初始预测
  3. 计算代价函数的值
  4. 应用后向传播宣发计算的偏导数
  5. 使用梯度检验检查算法的正确性,别忘了用完就禁用它
  6. 丢给最优化函数最小化代价函数

由于神经网络的代价函数非凸,最优化时不一定会收敛在全局最小值处,高级最优化函数能确保收敛在某个局部最小值处。

 

9.8 自主驾驶(Autonomous Driving)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值