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

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

它能在给定训练集时,为神经网络拟合参数
吴恩达机器学习(神经网络参数的反向传播算法)_第1张图片

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

反向传播算法,也就是首先计算最后一层的误差,然后再一层一层反向求出各层的误差,直到倒数第二层。 这个就是反向传播算法的通俗解释。
吴恩达机器学习(神经网络参数的反向传播算法)_第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)理解反向传播

为了更好地理解反向传播,让我们先进一步理解前向传播
吴恩达机器学习(神经网络参数的反向传播算法)_第3张图片吴恩达机器学习(神经网络参数的反向传播算法)_第4张图片
cost(i)表示了神经网络预测样本值的准确程度,也就是网络的输出和实际观测值y(i)的接近程度
吴恩达机器学习(神经网络参数的反向传播算法)_第5张图片
其中:
在这里插入图片描述
在这里插入图片描述

现在再看看反向传播的过程
吴恩达机器学习(神经网络参数的反向传播算法)_第6张图片吴恩达机器学习(神经网络参数的反向传播算法)_第7张图片吴恩达机器学习(神经网络参数的反向传播算法)_第8张图片吴恩达机器学习(神经网络参数的反向传播算法)_第9张图片

(4)梯度检测

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

吴恩达机器学习(神经网络参数的反向传播算法)_第10张图片

(5)随机初始化

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

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

(6)组合到一起

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

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

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

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

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

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

图三:3个隐藏层,每层5个隐藏单元
吴恩达机器学习(神经网络参数的反向传播算法)_第12张图片
训练神经网络:

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

你可能感兴趣的:(机器学习,机器学习)