“拨开迷雾看人工智能”-3分钟带你看懂神秘的神经网络

“拨开迷雾看人工智能”-3分钟带你看懂神秘的神经网络

投稿人:杨左使

2016年Google AlphaGo击败了顶尖的围棋人类选手,令全球瞩目。这一大事件把AlphaGo背后的人工智能算法——神经网络推向了风口浪尖。

热门而神秘的“神经网络”是什么?这篇文章我们将向你展示它的奥秘。

神经网络,全称是人工神经网络,顾名思义这是从人类中枢神经系统受到的启发,发明了人工神经网络这个概念。在人工神经网络中,简单的人工节点,称作神经元,连接在一起形成一个类似生物神经网络的网状结构。

神经网络是深度学习的基础,这是一门强大的机器学习方法,可以这么说,正是神经网络快速发展带来的变革,引发了今天人工智能潮流的火爆。

那么,什么是神经网络?

神经网络最重要的用途是分类,为了让你对分类有个直观的认识,我们先看几个例子:

猫狗分类:有一大堆猫、狗照片,把每一张照片送进一个机器里,机器需要判断这幅照片里的东西是猫还是狗。

广告识别:现在有一封电子邮件,把出现在里面的所有词汇提取出来,送进一个机器里,机器需要判断这封邮件是否是营销广告邮件。

影像识别:病人把在医院照的X光影像片交给医生,医生把照片送进一个机器里,机器需要判断这个病人是否得病,得的什么病。

这种能自动对输入的东西进行分类的机器,就叫做分类器

分类器的输入和输出都是一堆数值,比如第一个例子里,分类器的输入是照片,假如每一张照片都是100*100像素的红绿蓝三通道彩色照片,那么分类器的输入就是一个长度为100*100*3=30000的向量。输出的时候,0则表示图片中是狗,输出1则表示是猫。

分类器的目标就是让正确分类的比例尽可能高。一般我们需要首先收集一些样本,人为标记上正确分类结果,然后用这些标记好的数据训练分类器,训练好的分类器就可以在新来的数据上工作了。

好,现在我们以输出猫和狗为例,假设分类器的输入是通过某种途径获得的两个值,输出是0和1,比如分别代表猫和狗。现在有一些样本:

大家想想,最简单地把这两组特征向量分开的方法是啥?当然是在两组数据中间画一条竖直线,直线左边是狗,右边是猫,分类器就完成了。以后来了新的向量,凡是落在直线左边的都是狗,落在右边的都是猫(如下图)。


一条直线把平面一分为二,一个平面把三维空间一分为二,两边分属不同的两类,这种分类器就叫做神经元。

上图的分类器好分,但是下图呢?


当样本的复杂程度增加的时候,一个神经元只能切一刀的缺点就会显露。这时的解决办法是多层神经网络,底层神经元的输出是高层神经元的输入。我们可以在中间横着砍一刀,竖着砍一刀,然后把左上和右下的部分合在一起,与右上的左下部分分开;也可以围着左上角的边沿砍10刀把这一部分先挖出来,然后和右下角合并。

每砍一刀,其实就是使用了一个神经元,把不同砍下的半平面做交、并等运算,就是把这些神经元的输出当作输入,后面再连接一个神经元。这个例子中特征的形状称为异或,这种情况一个神经元搞不定,但是两层神经元就能正确对其进行分类。只要你能砍足够多刀,把结果拼在一起,什么奇怪形状的边界神经网络都能够表示,所以说神经网络在理论上可以表示很复杂的函数/空间分布。

最后我们来说一下神经网络的训练。它依靠反向传播算法:最开始输入层输入特征向量,网络层层计算获得输出,输出层发现输出和正确的类号不一样,这时它就让最后一层神经元进行参数调整,最后一层神经元不仅自己调整参数,还会勒令连接它的倒数第二层神经元调整,层层往回退着调整。经过调整的网络会在样本上继续测试,如果输出还是老分错,继续来一轮回退调整,直到网络输出满意为止。这有点像小米式互联网思维,从用户终端听取意见,优化需求更新产品功能,最终做出用户喜欢的,强参与感的智能手机。


如果形象地打个比方,神经网络就像一个刚开始学习东西的小孩子,开始认东西,作为一个大人(监督者),第一天,他看见一只京巴狗,你告诉他这是狗;第二天他看见一只波斯猫,他开心地说,这是狗,纠正他,这是猫;第三天,他看见一只蝴蝶犬,他又迷惑了,你告诉他这是狗……直到有一天,他可以分清任何一只猫或者狗。

这就是神经网络,你看懂了么?


小结:

神经网络是一种把东西进行分类的机器,它由若干个神经元组成。每个神经元就像一把剪刀,可以把两组数据一分为二;若干个神经元经过剪切、拼接、粘贴之后,最终可以把两个东西区分开(例如区分猫和狗),这就是神经网络。


我是杨左使,上海谷歌社区人工智能系列沙龙组织者,喜欢我的文章,请点赞;想来沙龙听大牛分享,请打赏:)

编辑于 2017-03-31

文章被以下专栏收录

    第一时间介绍最新谷歌技术和创新及中国谷歌开发者社区的活动动态。同时欢迎广大开发者、技术爱好者踊跃投稿。日更不偷懒。