上一期,我们为你介绍了什么是机器学习和深度学习,今天我们给你讲一讲神秘的神经网络。
神经网络,全称是人工神经网络,顾名思义这是从人类中枢神经系统受到的启发,发明了人工神经网络这个概念。在人工神经网络中,简单的人工节点,称作神经元,连接在一起形成一个类似生物神经网络的网状结构。
神经网络是我们上节课介绍的深度学习的基础,这是一门强大的机器学习方法,可以这么说,正是神经网络快速发展带来的变革,引发了今天人工智能潮流的火爆。
那么,什么是神经网络?
神经网络最重要的用途是分类,为了让你对分类有个直观的认识,我们先看几个例子:
猫狗分类:有一大堆猫、狗照片,把每一张照片送进一个机器里,机器需要判断这幅照片里的东西是猫还是狗。
广告识别:现在有一封电子邮件,把出现在里面的所有词汇提取出来,送进一个机器里,机器需要判断这封邮件是否是营销广告邮件。
影像识别:病人把在医院照的X光影像片交给医生,医生把照片送进一个机器里,机器需要判断这个病人是否得病,得的什么病。
这种能自动对输入的东西进行分类的机器,就叫做分类器。
分类器的输入和输出都是一堆数值,比如第一个例子里,分类器的输入是照片,假如每一张照片都是100*100像素的红绿蓝三通道彩色照片,那么分类器的输入就是一个长度为100*100*3=30000的向量。输出的时候,0则表示图片中是狗,输出1则表示是猫。
分类器的目标就是让正确分类的比例尽可能高。一般我们需要首先收集一些样本,人为标记上正确分类结果,然后用这些标记好的数据训练分类器,训练好的分类器就可以在新来的数据上工作了。
好,现在我们以输出猫和狗为例,假设分类器的输入是通过某种途径获得的两个值,输出是0和1,比如分别代表猫和狗。现在有一些样本:
大家想想,最简单地把这两组特征向量分开的方法是啥?当然是在两组数据中间画一条竖直线,直线左边是狗,右边是猫,分类器就完成了。以后来了新的向量,凡是落在直线左边的都是狗,落在右边的都是猫(如下图)。
一条直线把平面一分为二,一个平面把三维空间一分为二,两边分属不同的两类,这种分类器就叫做神经元。
上图的分类器好分,但是下图呢?
当样本的复杂程度增加的时候,一个神经元只能切一刀的缺点就会显露。这时的解决办法是多层神经网络,底层神经元的输出是高层神经元的输入。我们可以在中间横着砍一刀,竖着砍一刀,然后把左上和右下的部分合在一起,与右上的左下部分分开;也可以围着左上角的边沿砍10刀把这一部分先挖出来,然后和右下角合并。
每砍一刀,其实就是使用了一个神经元,把不同砍下的半平面做交、并等运算,就是把这些神经元的输出当作输入,后面再连接一个神经元。这个例子中特征的形状称为异或,这种情况一个神经元搞不定,但是两层神经元就能正确对其进行分类。只要你能砍足够多刀,把结果拼在一起,什么奇怪形状的边界神经网络都能够表示,所以说神经网络在理论上可以表示很复杂的函数/空间分布。
最后我们来说一下神经网络的训练。它依靠反向传播算法:最开始输入层输入特征向量,网络层层计算获得输出,输出层发现输出和正确的类号不一样,这时它就让最后一层神经元进行参数调整,最后一层神经元不仅自己调整参数,还会勒令连接它的倒数第二层神经元调整,层层往回退着调整。经过调整的网络会在样本上继续测试,如果输出还是老分错,继续来一轮回退调整,直到网络输出满意为止。这有点像小米式互联网思维,从用户终端听取意见,优化需求更新产品功能,最终做出用户喜欢的,强参与感的智能手机。
如果形象地打个比方,神经网络就像一个刚开始学习东西的小孩子,开始认东西,作为一个大人(监督者),第一天,他看见一只京巴狗,你告诉他这是狗;第二天他看见一只波斯猫,他开心地说,这是狗,纠正他,这是猫;第三天,他看见一只蝴蝶犬,他又迷惑了,你告诉他这是狗……直到有一天,他可以分清任何一只猫或者狗。
这就是神经网络,你看懂了么?
小结:
神经网络是一种把东西进行分类的机器,它由若干个神经元组成。每个神经元就像一把剪刀,可以把两组数据一分为二;若干个神经元经过剪切、拼接、粘贴之后,最终可以把两个东西区分开(例如区分猫和狗),这就是神经网络。
预告:
下一期,我们将向你介绍神奇的蒙特卡罗算法,结合神经网络,可以为你解析AlaphaGo的工作原理。
如果你感兴趣,请留意关注微信公众号:智能加研究院