本文主要是介绍【含课程pdf 测验答案】吴恩达-机器学习公开课 学习笔记 Week5 Neural Networks: Learning,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
吴恩达-机器学习公开课 学习笔记 Week5 Neural Networks: Learning
- 5 Neural Networks: Learning 课程内容
- 5-1 Cost Function and Backpropagation
- Cost Function
- Backpropagation Algorithm
- Backpropagation Intuition
- 5-2 Backpropagation in Practice
- Implementation Note: Unrolling Parameters
- Gradient Checking
- Random Initialization
- Putting It Together
- 5-3 Application of Neural Networks
- Autonomous Driving
- 测验 Neural Networks: Learning
- 课程链接
- 课件
5 Neural Networks: Learning 课程内容
此文为Week5 中Neural Networks: Learning的部分。
5-1 Cost Function and Backpropagation
Cost Function
- L : 这个神经网络结构的总层数
- sl : 第L层的单元的数量,也就是神经元的数量。
两种分类问题:二元分类 & 多元分类
我们在神经网络里使用的代价函数 应该是逻辑回归里使用的代价函数的一般化形式。
注意:
- ∑m∑K简单地将输出层中每个单元计算的逻辑回归成本相加
- ∑L−1∑sl∑sl+1简单地将整个网络中的每个Θs 的平方相加
- ∑L−1∑sl∑sl+1中的 i 指的不是训练样本 i
Backpropagation Algorithm
为了计算导数项,我们将采用一种叫做反向传播(Backpropagation)的算法。
-----------------------------------------------------------------------------------【补充部分】-----------------------------------------------------------------------------------
链式规则:
-----------------------------------------------------------------------------------【补充部分】-----------------------------------------------------------------------------------
实现反向传播算法:
Backpropagation Intuition
当只有一个样本(xi, yi)且不考虑正则化:
δ(l)j 是a(l)j的误差,就是对代价函数针对中间变量的偏微分,衡量了我们要如果改变网络的权值。
5-2 Backpropagation in Practice
Implementation Note: Unrolling Parameters
矩阵形式的优点在于当你的系数以矩阵形式存储时,计算前向传播和反向传播会更方便。当你使用某种向量化的实现时,使用矩阵形式会更简单。
Gradient Checking
后向传播有很多细节会导致一些BUG,如果你用梯度下降来计算,表面上关于theta的函数J在减小,但是你可能最后得到的结果实际上有很大的误差。
梯度检验能确保我们的反向传播如预期工作。
右边的叫做单侧查分估计,左边的叫做双侧查分估计 后者的精确度更高,当然,一般我们用后者。
一般的情况:
- 首先,使用反向传播来计算DVec
- 然后,用gradApprox实现梯度检验
- 确定DVec和gradApprox给出接近结果
- 最后,在用反向传播代码训练前,关掉梯度检验
一旦你验证了你的反向传播算法是正确的,你就不需要再次计算gradApprox。计算gradApprox的代码可能很慢。
Random Initialization
当你使用梯度下降算法,或者其他高级的优化算法,我们需要设置初始值。
当初始值全部是零时,神经网络实际上进入很有意思的情况,不仅有两个隐层,还有很多很多层。所有你的隐层的结果都一样,十分冗余。我们看到的问题叫做对称现象。
所以我们需要随机初始化。我们进行初始化的操作目的就是打破对称。
以上使用的 ε 与梯度检查中的无关。
Putting It Together
当我们在训练一个神经网络时,我们要做的第一件事就是搭建网络的大体框架,意思是神经元之间的连接模式
一旦你确定了特征集x对应的输入单元数目,也就确定了特征x{i}的维度。如果你正在进行多类别分类,那么输出层的单元数目将会由你分类问题中所要区分的类别个数确定。
而对于隐藏单元的个数单元的个数以及隐藏层的数目,我们有一个默认的规则那就是使用单个隐藏层。如果你使用不止一个隐藏层的话,同样我们也有一个默认规则,那就是每一个隐藏层通常都应有相同的单元数。
一般来说隐藏单元越多越好。
实现神经网络的训练过程:
- 构建一个神经网络,随机初始化权值(通常初始化为接近于0的值)
- 执行前向传播算法,对任意输入 x(i) 计算出对应的 hθ(x(i))
- 通过代码计zhix算代价函数 J(Θ)
- 执行反向传播算法,计算偏导数 ∂ ∂ Θ ( l ) j k \frac{∂}{∂Θ^(l)^~jk~} ∂Θ(l) jk ∂J(Θ)
- 使用梯度检验用反向传播得到的偏导项 ∂ ∂ Θ ( l ) j k \frac{∂}{∂Θ^(l)^~jk~} ∂Θ(l) jk ∂J(Θ) 和用数值计算得到的估计值,确保两者比较接近。然后去掉梯度检验代码。
- 使用一个最优化算法(梯度下降、BFGS 共轭梯度…)和反向传播算法结合,计算偏导。
**对于神经网络,代价函数J(Θ)是个非凸函数。**尽管我们不能保证这些优化算法一定会得到全局最优值,但通常能够得到一个很小的局部最小值。
5-3 Application of Neural Networks
Autonomous Driving
一个有趣而且有重要历史意义的 利用神经网络进行自动驾驶的神经网络学习的例子。 那就是让汽车学会自己开车。
测验 Neural Networks: Learning
课程链接
https://www.coursera.org/learn/machine-learning/home/week/5
课件
课件链接
这篇关于【含课程pdf 测验答案】吴恩达-机器学习公开课 学习笔记 Week5 Neural Networks: Learning的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!