深度学习DeepLearning.ai系列课程学习总结:5. 浅层神经网络

转载过程中,图片丢失,代码显示错乱。

为了更好的学习内容,请访问原创版本:

http://www.missshi.cn/api/view/blog/59a6ad67e519f50d040000e5

Ps:初次访问由于js文件较大,请耐心等候(8s左右)


在之前课程中,我们实现了逻辑回归函数,它是一个不包含隐藏层的网络结构。
本节课中,我们将继续神经网络的学习,本文主要来讲解包含一个隐藏层的神经网络结构及其原理。

本文内容概述

之前的文章中,我们讲述了一个逻辑回归的模型如下:

其中,输入参数包含w, x和b,具体计算流程如下:

而对应一个包含隐藏的神经网络而言,其网络结构如下:

其中,每个隐藏层的计算逻辑与之前的输出层计算逻辑一致。

此处,我们用[1]表示第1层,用[2]表示第二层,则上述模型的计算逻辑如下:

此外,在反向计算中,也会有与之前类似的逻辑来计算,我们将在接下来的内容详细讲解。

 

神经网络的表示

接下来,我们首先讨论的是神经网络图的含义:

对于下图而言:

其中,x1,x2,x3表示其输入层,中间的四个圆圈则表示隐藏层,最后的一个节点是其输出层。

通常,对于一个神经网络训练任务而言,训练集中会包含着输入层数据和期望输出层数据。

而隐藏层数据是我们无法知道而需要进行训练学习的。

在该模型中,我们通常会把输入数据X标记为a[0]

而对于第一个隐藏层而言,我们会把输出数据标记为a[1]

此外,由于该隐藏层中,有多个神经元,因此,从上到下我们一次标记为a1[1],a2[1]等。

在输出层,我们将其输出记作a[2]。具体表示见下图:

此外,对于上述网络结构而言,我们称其为一个两层的神经网络。(输入层不包含在内)

 

神经网络的前向传播计算

回顾一下之前的逻辑回归,其前向传播的计算模型如下:

转换为公式表示如下:

而对于一个包含隐层的神经网络而言呢?则是对每个神经元进行一次类似的操作:

假设一个神经网络的结构如下:

我们首先针对其第一个隐藏层神经元来看看其计算逻辑:

可以看出,其计算逻辑与之前逻辑回归的神经元相同,只是针对特定层及特定节点的w和b。

其中,对于ai[l]而言,l表示它是在第l层,而i则表示它是该层的第i个节点,对于w和b而言,符号表示的含义相同。

同理,对于第二个隐藏层神经元而言,计算逻辑相同:

以此类推,我们可以分别计算出第1层隐藏神经元的值a[1]

将其进行向量化表示后,结果如下:

最终,得到的矢量化计算公式如下:

 

训练样本的矢量化

在上一个小节中,我们将每层中不同的节点进行了矢量化,而本节中,我们希望对不同的训练样本进行矢量化。

在之前的符号描述中,我们使用(i)表示第i个样本点。

那么,一个普通的计算逻辑如下:

然而,对于上式的循环任务中,前后没有依赖关系,因此,我们可以对其进行矢量化。

接下来,我们定义一个变量X,它是将每个训练样本作为变量矩阵X中的一列。

其中,X的维度为nx*m。nx表示训练样本的维度,m表示训练样本数量。

此时,计算公式则可以整理如下:

其中,Z[l]和A[l]都是有每个样本作为其中一列组成的。

 

激活函数

对于隐藏层和输出层而言,我们通常会选择一个激活函数用于对其输出进行处理。

接下来,我们将对激活函数的相关内容进行讲解。

目前为止,我们主要讲解的激活函数都是sigmod函数,但实际上,还有一些可能更好用的激活函数。

例如tanh函数通常会比sigmod函数用更好的性能。

sigmod函数简图如下所示,其y的取值范围在0到1之间:

而tanh函数简图如下所示,其y的取值范围在-1到1之间:

如果我们选择tanh作为激活函数,由于其平均值更接近于0,可以起到中心化的作用,通常更有利用算法优化。

这儿有一个特殊情况,对于一个二分类问题的输出层的激活函数,由于我们仅希望对其进行是否判断,其实更类似于0,1判断,因此,此时选择sigmod函数是一个更加合理的选择。

但是,对于sigmod函数和tanh函数,都有一个共同的问题,即当输入变量特别大或者特别小时,斜率非常小,此时,并不利于梯度下降法进行学习。

在机器学习中, 一个非常常用的激活函数叫做ReLU函数(修正线性单元函数)。

该函数简图如下:

ReLU有一个缺点就是在输入变量小于0时,其输出始终为0。(实际在应用中没有太大问题)

有一个改进版本为leakly ReLU函数,其在输入变量小于0时,斜率为一个很小的正数。(有略微优点,但使用场景并不多)

总结一下:

sigmod函数,除二分类输出层外,几乎不使用:

tanh函数:

ReLU函数(强烈推荐):

leakly ReLU函数:

 

激活函数不选择线性函数的原因

对于一个前向传播计算而言,计算公式如下:

此时,我们假设g是一个线性函数,那么会有什么影响呢?

 

从上述的公式推导中,我们可以看出,无论最终有多少隐藏层,得到的最终输出结果仍然是输入的线性组合。



更多更详细的内容,请访问原创网站:

http://www.missshi.cn/api/view/blog/59a6ad67e519f50d040000e5

Ps:初次访问由于js文件较大,请耐心等候(8s左右)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值