吴恩达机器学习(神经网络参数的反向传播算法)

(1)神经网络结构的代价函数

它能在给定训练集时,为神经网络拟合参数
在这里插入图片描述

(2)让代价函数最小化的算法—反向传播算法

反向传播算法,也就是首先计算最后一层的误差,然后再一层一层反向求出各层的误差,直到倒数第二层。 这个就是反向传播算法的通俗解释。
在这里插入图片描述关于上图的解释

假设我们有假设我们的训练集只有一个实例(x(1), y(1)),我们的神经网络是一个四层的神经网络,其中K = 4, SL = 4, L = 4。我们从最后一层的误差开始计算,误差是激活单元的预测(ak(4))与实际值(yK)之间的误差。
第4层误差
在这里插入图片描述

第3层误差:
在这里插入图片描述
在这里插入图片描述

第2层的误差:
δ(2) = (θ(2))Tδ(3) ∗ g′(z(2))

第1层是输入变量,不存在误差。我们有了所有的误差的表达式后,便可以计算代价函数的偏导数了。

所谓“误差”,就是代价函数对权重求偏导,即
在这里插入图片描述
并不是真正意义上的误差,而是表示了权重的微小变化对代价函数的影响。

(3)理解反向传播

为了更好地理解反向传播,让我们先进一步理解前向传播
在这里插入图片描述在这里插入图片描述
cost(i)表示了神经网络预测样本值的准确程度,也就是网络的输出和实际观测值y(i)的接近程度
在这里插入图片描述
其中:
在这里插入图片描述
在这里插入图片描述

现在再看看反向传播的过程
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

(4)梯度检测

梯度检测采用的方法是在代价函数上沿着切线的方向选择离θ 非常近的两个点,然后计算两个点的平均值用以估计梯度。即对于某个特定的 θ,我们计算出在 θ - ε 处和 θ + ε 的代价值(ε 是一个非常小的值,通常选取 0.0001),然后求两个代价点的平均,用以估计在 θ 处的代价值。

在这里插入图片描述

(5)随机初始化

任何优化算法都需要一些初始的参数。到目前为止我们都是初始所有参数为 0,这样的初始方法对于逻辑回归来说是可行的,

但是对于神经网络来说是不可行的。如果我们令所有的初始参数都为 0,这将意味着我们第二层的所有激活单元都会有相同的值。同理,如果我们初始所有的参数都为一个非 0 的数,结果也是一样的。因此在代码中我们要让初始参数随机值,采用随机初始化的思想。
在这里插入图片描述为了训练神经网络,应:
(1)首先要将权重随机初始化为一个接近0的数
(2)然后进行反向传播
(3)再进行梯度检验
(4)最后使用梯度下降或者其他高级优化算法来最小化代价函数J

(6)组合到一起

小结一下使用神经网络时的步骤:
网络结构:第一件要做的事是选择网络结构,即决定选择多少层以及决定每层分别有多少个单元。

第一层的单元数(输入层)即我们训练集的特征数量。

最后一层的单元数(输出层)是我们训练集的结果的类的数量。

如果隐藏层数大于 1,确保每个隐藏层的单元个数相同,
通常情况下隐藏层单元的个数越多越好。我们真正要决定的是隐藏层的层数和每个中间层的单元数。

图一:1个隐藏层,每层5个隐藏单元

图二:2个隐藏层,每层5个隐藏单元

图三:3个隐藏层,每层5个隐藏单元
在这里插入图片描述
训练神经网络:

  1. 参数的随机初始化
  2. 利用正向传播方法计算所有的ℎθ(x)
  3. 编写计算代价函数 J(θ)的代码
  4. 利用反向传播方法计算所有偏导数
  5. 利用数值检验方法检验这些偏导数
  6. 使用优化算法来最小化代价函数
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值