Andrew Ng——神经网络和深度学习——第三周笔记

Week 3

Week 3

3-1神经网络概述

3-2神经网络的表示

3-3计算神经网络的输出

3-4多个栗例子中的向量化

3.5 向量化实现的解释

3-6、3-7、3-8**函数

3-9、3-10神经网络的梯度下降算法

3-11随机初始化权重

 

3-1神经网络概述

这就是神经网络:

Andrew Ng——神经网络和深度学习——第三周笔记

Andrew Ng——神经网络和深度学习——第三周笔记

3-2神经网络的表示

这个神经网络是“双层神经网络”,只有两层,虽然有输入层、隐藏层、输出层,但从上标来看,输入层是为第0层,所以隐藏层才是第一层,输出层为第二层:

Andrew Ng——神经网络和深度学习——第三周笔记

3-3计算神经网络的输出

圆圈代表了回归计算的两个步骤:所以,神经网络只不过重复的计算这些步骤很多次。

Andrew Ng——神经网络和深度学习——第三周笔记

这是神经网络的第一个小圆圈,也是第一个节点,它所作的事情就是做了这两步计算。

Andrew Ng——神经网络和深度学习——第三周笔记

其余三个节点,同样的计算着这两步,唯一的差别就是下标发生了变化,从1逐渐变为4,上标不发生变化,因为始终都在第一层,所以始终为1.如下图所示:

Andrew Ng——神经网络和深度学习——第三周笔记

如上图所示,如果采用for循环来执行这些计算,那么效率会非常低下,所以我们将这四个等式向量化:首先,我们有四个logistic回归单元(也就是隐藏层的四个小圆圈),每一个回归单元,都有对应的W,b参数。那么我们把4个向量W堆叠在一起:如下图所示,就形成了一个4×3的矩阵——4表示有4个隐藏单元(4个圈),3表示有3个输入特征(x1,x2,x3)

Andrew Ng——神经网络和深度学习——第三周笔记

然后和X相乘,在加上b结果就为Z: Andrew Ng——神经网络和深度学习——第三周笔记

所以,我们就可以将等式向量化,变成更容易理解的符号: Andrew Ng——神经网络和深度学习——第三周笔记

第一层隐藏层的参数就变成:

第二层输出层参数就变为:

3-4多个栗例子中的向量化

如何将不同训练样本向量化??

Andrew Ng——神经网络和深度学习——第三周笔记

如果没有向量化的话,那么只能用for循环来实现:对m个训练样本内循环:

Andrew Ng——神经网络和深度学习——第三周笔记

上面循环里的四步,就是我们要做的,我们可以将其转化为: Andrew Ng——神经网络和深度学习——第三周笔记

大家也许会很好奇,圈起来的4个东西怎么和上面的不一样,还有,怎么x变成了X,原因就是,我们将向量横向堆叠起来,构成了另一个向量:

Andrew Ng——神经网络和深度学习——第三周笔记

所以就有了

横向代表不同的训练样本,竖向代表每一个节点)

3.5 向量化实现的解释

Andrew Ng——神经网络和深度学习——第三周笔记

Andrew Ng——神经网络和深度学习——第三周笔记

3-6、3-7、3-8**函数

到目前为止,一直用的都是sigmoid函数,其实也有其他更好的选择

tanh()函数是-1~1,用在哪都比较好,一个例外是用在输出层不太好,因为我们更希望输出是一个0~1的值,所以输出还是可以用sigmoid函数的。也反映出,不同层可以有不同的**函数。

因此我专门总结了一篇关于**函数的博客https://blog.****.net/LLyj_/article/details/82945025

3-9、3-10神经网络的梯度下降算法

前向传播(Forward propagation)

Andrew Ng——神经网络和深度学习——第三周笔记

反向传播(Back propagation)

Andrew Ng——神经网络和深度学习——第三周笔记

3-11随机初始化权重

训练神经网络的时候,随机初始化权重非常重要,对于logistic回归,可以将权重初始化为0.但如果将神经网络的各参数数组全部初始化为0,再使用梯度下降算法,那会完全无效。

Andrew Ng——神经网络和深度学习——第三周笔记

Andrew Ng——神经网络和深度学习——第三周笔记

  •