学习
实践
活动
工具
TVP
写文章

轻松机器学习-两层神经网络

每天机器学习,轻松人工智能!

---作者

知道了单个神经元后,我们需要把多个神经元组合成为一个神经网络,就类似人脑的神经网络一样,这样才能具有更强大的功能。从今天开始,有两个讨论者也加入讨论,他们是彪哥和郁姐,就是他们两位:郁姐、彪哥。

1943年,心理学家W·Mcculloch和数理逻辑学家W·Pitts在分析、总结神经元基本特性的基础上首先提出神经元的数学模型。40年后,美国的物理学家Hopfield于1982年和1984年在美国科学院院刊上发表了两篇关于人工神经网络研究的论文,引起了巨大的反响。人们重新认识到神经网络的威力以及付诸应用的现实性。随即,一大批学者和研究人员围绕着 Hopfield提出的方法展开了进一步的工作,形成了80年代中期以来人工神经网络的研究热潮。

为了方便讲述,我们以两层神经网络为例,两层神经网络也叫多层感知机,具有非常好的分类效果。顾名思义,两层的结构可以具有简单的感知功能,这也是人工智能的初步。正是多层感知机的出现,神经网络开始了大范围的推广与使用。目前很多的神经网络教材,都是重点介绍两层神经网络。

两层神经网络除了包含一个输入层,一个输出层以外,还增加了一个中间层。例如下图所示:

可以看到中间层有2个神经元,a1和a2。分别接受输入层x1、x2、x3的数值,和边线上的数值w进行计算。计算的公式是这样的:

也就是说,输入的每一个值(x1、x2、x3)都要与图中相连接的边上的权值w相乘,然后累加成和,在通过激励函数f得到输出(a1、a2)。

最终的输出y再利用中间层的输出a1,a2接着计算:

的确,这样写起来比较繁琐,这才三个输入就很长,如果有成百上千个输入就是灾难。好在数学是很有用的,可以用简洁的方式来表达这种相乘后累加的公式。如果忘了可以翻一翻数学书,还记得如下形式吗?左边的复杂的形式可以用右边简洁的方式表示。

如果感觉还不简洁,可以再进一步:

有的人可能有点蒙,什么意思?其实就是用符号表示而已!我们是把输入(x1、x2、x3)定义成了一个3行1列的矩阵x,把(w11、w12、w13)定义成一个3行1列的矩阵w1而已,纯粹是为了好看。

那个T代表转置的意思。我们看一个动图感受一下。

说了那么多,总结一下。上面图中所示的两层神经网络,其实就是如下3个函数的运算:

由此可见,使用矩阵运算来表达是很简洁的。因此神经网络的教程中大量使用矩阵运算来描述。

是的,为了简洁,上面讨论的神经网络中都没有提到偏置项b(bias)。事实上,我们稍加改造就能出线偏置项。如下图:

可以看出,偏置节点很好认,只是在神经元的输入项中添加了一个输入恒为1的节点,连接的权值就是b。

在考虑了偏置项以后这个神经网络的矩阵运算就编程了如下形式:

其它两个同理,变成了:

激励函数也称作激活函数(active function)。需要说明的是,在两层神经网络中,我们一般不再使用阈值函数作为激活函数,而是使用Sigmoid作为激励函数。

公式中的e叫自然常数,是一个固定的数(2.71828)。Sigmoid函数是产生一个从0-1之间的数,函数图像是这样的:

事实上,神经网络的本质就是通过权值与激活函数来拟合特征输入与目标之间的函数关系。

那我们就用一个具体的输入数字跑一边神经网络,看看数据是怎么流转的。如图所示,我已经把输入和权值、偏置项写在了图中。下面是计算过程。

输入的(3,1,5)数字序列,最后得到了1。1一般认为是真,可以说得到了一个肯定的答复。不过这个看上去还不是那么有具体实用场景。理论上可以证明,两层神经网络可以无限逼近任意连续函数。也就是说,面对复杂的非线性分类任务,两层神经网络可以分类的更好。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180513G029J100?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券