浅谈人工神经网络



试想某一天,程序员们想开发一个简单的分类器,用来把各种各样的动物图片中以猫为主题的挑拣出来。传统思路是提取图片的几何特征,看是否与猫相符。可惜的是这十分困难,在不同角度,光暗条件,或是猫品种不同时,猫的几何特征很难统一描述,何况如果是更为复杂的图片,猫可能躲在树后只露出半边脸。
于是程序员们决定换个思路。
学过大计基的我们知道,图片由像素点组成,每个像素点由几个字节的数据表示其颜色与亮度。因此图片在计算机里就是一串数据。猫的几何特征在数据上可能会有一些规律,然而人类很难发现它们。因此偷懒的程序员们决定让计算机自己去找。

1,神经元

为了了解人工神经网络,我们先了解一下它的组成单位——神经元

人工神经网络是一个模仿活体生物系统中神经网络的模型。因此我们需要先回忆一下生物神经元的特性。根据高中知识,一个神经元大概长这样:
这里写图片描述
一个生物神经元是单个细胞,具有一些被称为树突的输入触角和一个被称为轴突的输出触角。经由一个细胞的轴突传递的信号反映了细胞是处于抑制状态还是兴奋状态,而这种状态由细胞的树突接收到的信号的组合来决定。

于是人们模仿这个特性开发了人工神经网络的神经元。

这里写图片描述
人工神经网络中的一个神经元是模仿对生物神经元这种基本了解的一个软件单元,根据其有效输入是否超过了一个给定的值——这个值称为神经元的阈值——产生0或1作为输出。如图所示,这个有效输入是许多实际输入的一个加权和。图中,神经元由椭圆表示,两个神经元之间的连接由箭头表示。其他神经元(记为

v1,v2v3
)的输出用作所描述的神经元的输入。除了这些值,每个连接都与(记为

w1,w2w3
)相关联。神经元把每个输入值与相应的权值相乘,再把这些乘积相加形成有效输入(

w1v1+w2v2+w3v3
)。如果这个和超过该神经元的阈值,那么这个神经元就产生一个输出值1(模拟神经元的兴奋状态);否则就产生一个输出0(模拟神经元的抑制状态)。

有了神经元,接下来就该组建人工神经网络了。
为了方便表示,我们先规定如下的符号:
这里写图片描述
箭头上写的是权值,圆形中央写的是阈值,顺带一提的是,权值可正可负,说明输入对神经元的作用可以是兴奋也可以是抑制。

这里写图片描述

回到开头举的例子,我们可以设定,神经元输出1,代表这张图是猫,输出0则代表不是。

然而问题是,权值和阈值是怎么确定的呢?

2,训练人工神经网络

人工神经网络的一个重要特征是,它们不再是通过传统意义上的编程来实现,而是通过训练来实现。也就是说,权值和阈值不是由程序员决定的,而是在训练过程中人工神经网络自行调整的。训练过程以监督训练为主,以文章开头的例子为例,就是程序员事先把图片集里以猫为主题的图片人工标注为1,其他标注为0,然后都输入人工神经网络中,让人工神经网络把自己得到的结果(1或0)与人工标注的比较,如果不符,则稍微修改权值和阈值使其接近人的决定。该训练是一个反复的过程,需要大量的数据与训练时间,还需要程序员们监督管理,因此有些人称之为“炼丹”。

值得一提的是,正因为人工神经网络是由训练产生的,它成为了一个黑箱——我们不知道原理,只知道结果很正确。事实上没有人能说清权值和阈值为什么会设置成这样,只知道结果正确率符合要求。

然而,人脑大约包含

1011
个神经元,每个神经元约有

104
个突触,事实上一个生物神经元的树突多得更像一个纤维网。因此显而易见,如果仅凭这几个神经元,无论怎么训练,都是几乎不可能得到正确结果的。于是,程序员们决定组建深度神经网络。

3,深度人工神经网络

顾名思义,深度神经网络分了很多层,现在的技术可以支持10层甚至100层以上。
而层数一多起来,每层负责的部分不同,准确性会大大提高。

先贴引用论文信息:

Krizhevsky, A., Sutskever, I., & Hinton, G. E. (2012). Imagenet classification with deep convolutional neural networks. In Advances in neural information processing systems (pp. 1097-1105).

2012年多伦多大学的Krizhevsky等人构造了一个超大型卷积神经网络,有9层,共65万个神经元,6千万个参数。网络的输入是图片,输出是1000个类,比如小虫、美洲豹、救生船等等。

第一层神经元主要负责识别颜色和简单纹理

这里写图片描述

第二层的一些神经元可以识别更加细化的纹理,比如布纹、刻度、叶纹。

这里写图片描述

第三层的一些神经元负责感受黑夜里的黄色烛光、鸡蛋黄、高光。

这里写图片描述

第四层的一些神经元负责识别萌狗的脸、七星瓢虫和一堆圆形物体的存在。

这里写图片描述

第五层的一些神经元可以识别出花、圆形屋顶、键盘、鸟、黑眼圈动物。

这里写图片描述

尽管一个或一层神经元的作用极其有限,但65万个神经元的9层人工神经网络发展出的能力令人印象深刻。

到这里为止,似乎只是“输入-处理-输出”的单向网络,但改进后的人工神经网络可以完成更像人类的任务(至少是从结果上),比如说联想和记忆。

4,联想记忆

联想记忆——提取与手头信息相关的信息,是人脑的强大功能。构建具有这种联想记忆能力的机器是许多年来的一个研究目标,现在人工神经网络是达成途径之一。

设想我们现在有一个没有输入与输出的人工神经网络,且每一条直线都表示双向连接,直线上为权值,圆形内为阈值。
这里写图片描述

假设我们用1表示活跃状态,0表示抑制状态,任何时刻整个网络的状态都能表示为1和0的布局。
如果我们将网络最右边的两个神经元初始化为抑制状态,其他初始化为兴奋状态,则会有如下的过程:

这里写图片描述

最终,这种网络会达到这个稳定的布局。
也就是说,如果把网络设置为一个接近稳定模式的位模式,网络可能会转换到稳定模式。

以上是这个网络的特性,那么我们怎么用它得到联想回忆的功能呢?
如果我们把一些位编码成“现实”,另一些位编码成“回忆”,那么根据某个稳定布局初设的“现实”位,就能够使其余的位找到关联的“回忆”。

5,结语

现在,图片识别以及语音识别在人工神经网络技术的发展下准确率得到了极大的提高。更高级,更智能的应用也在不断发展,比如说用行车记录等数据训练人工神经网络用于自动驾驶,用音乐训练人工神经网络以发展其编曲能力等。

回到文章开头举的例子,要把猫的图片区分出来。

博主很想试试要是把这张图片输入进去,看看会有什么结果?

这里写图片描述
(咳咳,如果有机会的话,一定要试试)
这里写图片描述
非常快乐。

最后需要和大家说的是,这篇文章的配乐,由人工智能Aiva谱曲,人类音乐家弹奏,感兴趣的话,下面是它的专辑Genesis。
Genesis