02 | 从神经元说起:结构篇

目录

1.神经元

2.Sigmoid 函数

3.MNIST 数据集

4.Softmax 函数与单层感知机

5.多层感知机

6.多层感知机的局限


1.神经元

深度学习的算法,基本都是一层一层的复杂的网络结构。我们把这种网络称之为“人工神经网络”,它是卷积神经网络的基础。

人工神经网络是由一个个神经元组成的,神经元是人工神经网络中最基础的计算单元。神经元接受前一层的输入,经过处理会有一个输出。就像下面这张图一样,接受输入(x1, x2, ...),然后输出 z:


z 的计算方式如下:

其中,x1,x2,...,xk 为输入;w1,w2,..,wk 为权重;b 为偏移项;δ 则为激活函数。

我们可以看出,一个神经元是由下面 5 部分组成的:

1.输入:x1,x2,...,xk。

2.权重:w1,w2,..,wk。权重的个数与神经元输入的个数相同。

3.偏移项:可省。

4.激活函数:一般都会有,根据实际问题也是可以省略的。

5.输出。

w1,w2,..,wk 与 b 是神经网络需要通过训练学习到的参数。 

2.Sigmoid 函数

在神经元的部分,提到一般会由一个激活函数来输出。激活函数有很多种,不同的激活函数适用于不同的问题。
1.二分类问题我们一般采用 Sigmoid 函数,
2.多分类问题我们采用 Softmax 函数,
3.卷积神经网络的中间层一般会采用 relu 函数。

今天我们讲的神经元最基本的作用就是用于二分类问题,也就是说上文中的 δ,它在神经元中是一个 Sigmoid 函数作用是将神经元的输出转换为概率,为二分类问题提供概率依据。

Sigmoid 函数定义如下:

Sigmoid 函数是我们在机器学习与深度学习中经常使用的一种激活函数。通过图像我们不难发现:

当输入趋近于无穷大的时候,输出越接近于 1;

当输入趋近于无穷小的时候,输出越接近于 0。

所以 Sigmoid 函数经常被使用在二分类问题,它可以将 1 个数值转换为概率。当输出的概率大于 0.5 或者某一个自定的阈值时,我们就可以判断该类别为正例。

3.MNIST 数据集

我们现在需要利用神经元判断下面这张图片是否为手写数字 5:

因为每张图片是 28x28 像素的,所以我们将图片按行列展开(28*28像素=784个像素点,长度为 784 的向量)为 x1, x2,...,x784,输入的下标的范围是 1 到 784。将它们输入到以{w1, w2, ..., w784; b}为参数的神经元中。假设输出 z 为 20,经过 Sigmoid 函数我们会将 z 转换为概率,通过计算可得概率为 99%。如下图所示:

在判断的时候我们一般会以 50% 为阈值,但我们可以根据实际问题来设置不同的阈值。这里我们设定阈值为 50%,通过上图得出的 99% 明显高于这个值,因此,我们可以判断这张图片是数字 5。如此一来,就完成了一次神经元的推断过程。

其实到这里,你就已经了解了感知机的概念。没错,这一个小小的神经元就是最简单的一种感知机。神经元是模仿单个神经细胞的工作状态,单个神经细胞只有两种状态,激活时状态为是,未激活时状态为否,其实就是一个二分类问题。

但是,现在问题变了,变成我们需要自动识别出每张图片是属于哪一个数字了。这样只靠刚才讲过的单个神经元是无法完成的,因为神经元只能处理二分类的问题。遇到这种问题应该怎么办呢?

前人的研究结果表明,每个神经元是更加侧重于一种数字的识别。因此,我将刚才的感知机稍加修改,即可解决这样的一个多分类任务:

输入不变,我们仍然将一张 28x28 像素的图片转换为长度为 784 的向量。

我将神经元的个数由 1 变为了 10,这 10 个神经元只负责自己力所能及的任务,它们只判断输入的图片是否为自己对应的数字,也就是神经元 0 只负责学习输入的图片是否为 0,神经元 1 只负责学习输入的图片是否为 1,以此类推。

每个神经元接受输入后都会有一个输出(图中的 z0,...,z9),每个输出 z 都是神经元自己做出的判断:输入的图片是否为该神经元负责的类别。

接下来,我们汇总一下这 10 个神经元的判断,做一个最终的推断。我们可以把图中粉色的激活函数设置为 Softmax 函数,哪个神经元输出的数值最大,输入的图片就对应哪一类。

4.Softmax 函数与单层感知机

前文我提到,Sigmoid 函数是用来解决二分类的问题的,面对上面要识别输入的图片为哪个数字的时候,我们就需要使用 Softmax 函数,来解决这样一个多分类的问题。

神经元最终输出的 z 又可以叫作特征值。通常来说,特征值的用途不大,我们更希望获得到更有统计学意义的,每一个分类的概率。Softmax 函数可以将一组数值映射到[0,1]区间内,并且保证输出的和是 1,输出的数值可以看作“概率”。计算公式及举例如下图所示:

这样,我们将输出的 z0, z1, ..., z9 输入到 Softmax 激活函数后,可以获得一组概率值。通过判断哪个神经元输出的概率最大,就可以推断出输入图片所属的类别。

这也引出感知机的另一种形态,单层感知机。

既然一个神经元不可以解决复杂的问题,那么我们可以集成多个神经元,让多个神经元共同解决复杂的问题。在这种新的形态下,感知机会增加 2 个新的特性:

1.可以进行多类别的分类;

2.集成了多个神经元,提升了模型整体性能。

请看下图,蓝色的圆圈就是我们刚才讲的神经元,因为单个神经元的学习能力有限,所以我们对神经元进行了扩充。每个神经元各司其职,只处理自己的事情,合并起来就可以处理更复杂的问题,简单来说就是人多力量大。

在这里我会再引入“层(Layer)”的概念。

一般来说 Layer1 为输入层,Layer3 为输出层,中间的 Layer2 为隐藏层。单层感知机里只有一个隐藏层,而在后面要学习的多层感知机,卷积神经网络,则会有多个隐藏层。

5.多层感知机


我们后续会学到卷积神经网络、时间递归神经网络等,这些都是神经网络的变种。最基本、最简单的神经网络结构就是我在这里要讲的多层感知机,只有理解了多层感知机才能更好地理解那些高级的神经网络。

多层感知机的思想仍然是模仿人的神经系统,将获得的信息一层层地传递下去,每一层做不同的抽象。多层感知机要求至少有两个隐藏层,所以我们对单层感知机稍做修改,即可获得多层感知机。

我们经常说的网络的深度,就是指网络中的隐藏层,即 Deep Learning 中的 Deep。你也许听过 DNN(Deep Neural Network),它其实指的就是多层感知机。

图中的小圆圈就是我们之前介绍的神经元,计算方式与神经元的计算完全相同。

我们再回到刚才识别一张图片是否为手写数字 5 的例子,这次我们有 2 个隐藏层。如下图所示:

输入仍然是 x1, x2, ..., x784,  代表第 k 层,由输入 i 到第 j 个神经元的权重,zki 为 k 层,第 i 个神经元的输出。

我们输入的图片,经过第一层获得输出 z11 与 z12,z11 与 z12 作为第二层的输入,得到第二层的输出 z21 与 z22,第二层的输出再作为第三层的输入,最后我们获得数组 z31。

z31 之后再加一个 Sigmoid 函数,将它转换为对应的概率,这个操作就和我之前讲的一样了。

6.多层感知机的局限
 

从神经元的角度介绍了感知机之后,我们再来从数学的角度上理解一下感知机。

从神经元的计算公式我们可以知道,神经元只能学习到线性的关系,但是在现实中,绝大多数问题都是复杂的非线性关系。

我们看看下面这个例子: 2 个输入(x1 与 x2),1 个神经元,激活函数为 Sigmoid,需要对右侧的 output 进行预测。output 一共有 2 个类别,黄色的点与蓝色的点,并且两类处于一种非线性关系。

我们可以发现,无论训练多少个 Epoch,我们的模型都无法把属于非线性关系的输出划分开来。这也就是单个神经元的局限性。

Epoch:在机器学习中,会有很多数据来帮助我们更新参数。所有数据都使用过一次,我们便称之为“一个 Epoch”。

我们一直说,我们的神经网络是模仿人类的思考过程,将信息层层传递下去,每一层负责抽象不同的信息,从而解决复杂的任务。这一行为的背后有一个数学解释,即:当我们有足够多个线性关系的时候,可以拟合出任意的非线性关系的。所以我们可以尝试增加神经元与层的个数来解决上面的问题,如下图所示:

如果我们无限的堆叠神经网络的层与任意增加神经元的个数,是不是就可以解决所有问题了?

非常遗憾,这是不可以的,神经网络的性能会大大的下降。当神经网络隐藏层的层数大于 2 时,网络的性能会随着层数的增加而降低。

在深度学习诞生之前,这些局限性导致多层感知机的发展一度停滞。

1.参数量膨胀:在多层感知机中,采用的是全连接的形式,每增加一层,将会来带数量级的参数增加。这非常容易导致过拟合,并且很难训练,会陷入局部的最优。

2.梯度消失:使用 Sigmoid 函数激活的时候,会产生梯度消失的问题,使参数无法更新。


 

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马鹏森

太谢谢了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值