机器学习吴恩达第五周

9、神经网络的学习

9.1代价函数

假设神经网络的训练样本有𝑚个,每个包含一组输入𝑥和一组输出信号𝑦,𝐿表示神经网络层数,𝑆𝐼表示每层的 neuron 个数(𝑆𝑙表示输出层神经元个数),𝑆𝐿代表最后一层中处理单元。
在这里插入图片描述
在神经网络中,我们可以有很多输出变量,我们的ℎ𝜃(𝑥)是一个维度为𝐾的向量。
在这里插入图片描述
唯一不同的是,对于每一行特征,我们都会给出𝐾个预测,基本上我们可以利用循环,对每一行特征都预测𝐾个不同结果,然后在利用循环在𝐾个预测中选择可能性最高的一个,将其与𝑦中的实际数据进行比较。

9.2反向传播算法

在计算神经网络预测结果的时候我们采用了一种正向传播方法,
为了计算代价函数的偏导数:在这里插入图片描述我们需要采用一种反向传播算法,

我们从最后一层的误差开始计算,误差是激活单元的预测(ak(4))与实际值(𝑦𝑘)之间的误差,(𝑘 = 1: 𝑘)。
在这里插入图片描述
𝑙 代表目前所计算的是第几层。
𝑗 代表目前计算层中的激活单元的下标,也将是下一层的第𝑗个输入变量的下标。
𝑖 代表下一层中误差单元的下标,是受到权重矩阵中第𝑖行影响的下一层中的误差单元的下标。
我们用𝛥𝑖𝑗(𝑙)来表示这个误差矩阵。第 𝑙 层的第 𝑖 个激活单元受到第 𝑗个参数影响而导致的误差。在这里插入图片描述
即首先用正向传播方法计算出每一层的激活单元,利用训练集的结果与神经网络预测的结果求出最后一层的误差,然后利用该误差运用反向传播法计算出直至第二层的所有误差。
在求出了𝛥𝑖𝑗(𝑙)之后,我们便可以计算代价函数的偏导数了。在这里插入图片描述
在 Octave 中,我们要使用 fminuc 这样的优化算法来求解求出权重矩阵。

9.3反向传播算法的直观理解

在这里插入图片描述
在这里插入图片描述

9.4实现注意:展开参数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9.5梯度检验

梯度的数值检验,通过估计梯度值来检验我们计算的导数值是否真的是我们要求的。在代价函数上沿着切线的方向选择离两个非常近的点然后计算两个点的平均值用以估计梯度。𝜀是一个非常小的值,通常选取 0.001。
在这里插入图片描述
在这里插入图片描述
最后我们还需要对通过反向传播方法计算出的偏导数进行检验。
我们针对每一个 𝜃 都计算一个近似的梯度值,将这些值存储于一个近似梯度矩阵中,最终将得出的这个矩阵同 𝐷𝑖𝑗(𝑙) 进行比较。

9.6随机初始化

任何优化算法都需要一些初始的参数。到目前为止我们都是初始所有参数为 0,但是对于神经网络来说是不可行的。
我们通常初始参数为正负𝜀之间的随机值,假设我们要随机初始一个尺寸为 10×11 的参数矩阵,代码如下:
Theta1 = rand(10, 11) * (2*eps) – eps

9.7综合起来

即决定选择多少层以及决定每层分别有多少个单元。
第一层的单元数即我们训练集的特征数量。
最后一层的单元数是我们训练集的结果的类的数量。
如果隐藏层数大于 1,确保每个隐藏层的单元个数相同,通常情况下隐藏层单元的个数越多越好。
我们真正要决定的是隐藏层的层数和每个中间层的单元数。
训练神经网络:

  1. 参数的随机初始化
  2. 利用正向传播方法计算所有的ℎ𝜃(𝑥)
  3. 编写计算代价函数 𝐽 的代码
  4. 利用反向传播方法计算所有偏导数
  5. 利用数值检验方法检验这些偏导数
  6. 使用优化算法来最小化代价函数
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

身影王座

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值