Andrew Ng's deeplearning Course1Week3 Shallow neural networks(浅层神经网络)

3.1 What is a neural network?


最上面的是logistic回归的模型,把许多这种模型叠加起来就得到了一个neural network,就如同上图中的下半部分。第一层是一个logistic回归,第二层也是一个logistic回归。


在上图的neural network模型中,第0层x1,x2,x3为输入层,中间的为隐藏层,最后的为输出层。我们把它叫作2层的神经网络(不计入输入层)。那么为什么叫中间的这一层为隐藏层呢?是因为输入、输出层都可以在我们的训练集中明确的用数字看到,而中间的这层我们无法在训练集中知晓。规范起见,我们将上标[i]表示这是第i层;加上下标j就表示这是第i层的j个结点。

3.2 向量化


在上图中,每一个神经元计算2个步骤,分别为Z=W.T*x+b和a=σ(Z)。将w1[1]、w2[1]、w3[1]、w4[1]叠加成一个大的矩阵W[1],将x1、x2、x3叠加成x矩阵,将b1[1]、b2[1]、b3[1]、b4[1]叠加成矩阵b[1],就如上图中的形式,最终就计算得到Z[1](Z[1]是由z1[1]、z2[1]、z3[1]、z4[1]叠加而成)。这就是向量化的表示。而为什么可以这样向量化呢,我们看下图。


在这张图中,我们可以清楚的看到,经过之前的操作,矩阵与向量相乘,最终加上b[1],得到的矩阵Z[1]就是由原先的z1[1]、z2[1]、z3[1]拼成的矩阵。那m个训练集的向量化该如何做呢?我们看下图。


我们用a[i](j)表示第i层的第j个训练集,可以看到,在没有向量化的时候,我们需要通过m次for循环来重复完成计算输出的操作(神经网络的输出看下面的1.3)。我们可以通过将每个训练集的z[1]叠加得到Z[1],X和A[1]也是同样的道理操作,将之向量化,具体就如下图所示:


这样,我们就完成了m个训练集的向量化操作。

3.3 计算神经网络的输出


上图所示是一个2层的neural network,因此我们只用计算2次如下步骤:Z[1] = W[1] a[0] + b[1], a[1] = σ(Z[1]);Z[2] = W[2] a[1] + b[2], a[2] = σ(Z[2])。

如果是3层,就是Z[1] = W[1] a[0] + b[1], a[1] = σ(Z[1]);Z[2] = W[2] a[1] + b[2], a[2] = σ(Z[2]),Z[3] = W[3] a[2] + b[3], a[3] = σ(Z[3])。

以此类推,如果是n次,就是重复n次Z[n] = W[n] a[n-1] + b[n], a[n] = σ(Z[n]),最终的a[n]就是我们计算得到的神经网络的输出。


3.4 激活函数

3.4.1 激活函数及其导数

在上面的neural network中,我们的激活函数用的是σ sigmoid函数,但事实上,我们也可以选用其他激活函数,只要你想。下图就是4种激活函数:


其中,sigmoid函数主要用于二元输出的分类,且一般情况下,tanh函数的性能要优于sigmoid函数。为了应对sigmoid和tanh函数在Z非常大或非常小时,斜率趋向于0,导致梯度下降变得很慢的情况,我们也可以选用ReLU和Leaky ReLU函数。这4种函数的导数如下图,具体推导过程很容易,这里就不阐述了。


3.4.2 为什么需要非线性激活函数


假设我们用线性的激活函数,即假设将a[1] = z[1], a[2] = z[2],那么在经过上图的推导后,我们依然会得出一个线性的结果,那么神经网络只是把输入线性组合再输出,那么不管其中有多少层隐藏层,其中本质上没有起到任何作用。只有引入非线性的激活函数后,我们才能计算得到其他一些有趣的函数。

3.5 神经网络的梯度下降法


假设我们现在做的是逻辑回归,那么成本函数就如上图所示,梯度下降法所要做的就是不断重复上图中计算dw[1],db[1],dw[2],db[2],然后不断更新W[1]和b[1],以求得到最优的参数。那么如何将这一过程向量化呢?我们看下图:


其中keepdims=True 就是将结果转换为矩阵的形式,其和reshape起到的效果是一致的,axis = 1即将纵列相加。其中A,Z,W,X是将m个训练集的a,z,w,x叠加得到。

3.6 随机初始化


我们为什么不能像逻辑回归中一样将参数w和b初始化为0呢,而需要随机初始化w,那是因为假设将W和b初始化为0,那么不管隐藏层有多少,最后计算出来的东西都是相同的东西,如上图中的a1[1] = a2[1] ,dz1[1] = dz2[1] 。每个隐藏层计算的都是相同的东西,因此,最终那些隐藏层都完全没有意义了,所以我们需要将其随机初始化。

3.7 总结

下图就是neural network中正向传播和反向传播过程中涉及到的计算公式,计算过程大家可以自行计算,这里不再阐述。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值