最早接触神经网络是在大学的图书馆,翻开一本讲神经网络理论与实践的书。但不知为何,当时神经网络已经在各处开花了,那本书给我的印象还是“神经网络太超前了,难以实际用起来,或许一直都不能用。”
仿生学
但是那本书里说到神经网络是模仿大脑里相互连接的神经元的。信号在神经元之间传导,人因此能够识别万物,能够判断是非,能有情感。所以我本科早期曾对这种计算机科学与脑科学、心理学交叉的研究课题感兴趣。当时年轻气盛,一开始就瞄准AI的终极目标AGI(强人工智能)。我现在仍然觉得用机器仿制人类智能和情感这项伟大的事业,倘若缺失能在符号主义深邃的理论里开拓的人,那么最先的突破口应该是人工神经网络。直接从仿生学上模仿人类大脑的结构,够唯物主义,够简单粗暴。多说一句,目前在电脑里深度学习框架上跑的神经网络,实际上还是依靠硅基计算机的内存和速度,这个速度和人类大脑中信号传导速度(化学信号)比起来可能还是不够快。所以我觉得本科时候一位造预警机的院士讲得很对:神经网络最终应该用量子或者其他什么更微观的物质来构建,才能高速运转,性能接近人类大脑。
所以你看,从仿生学上看,神经网络不仅有依据、有人信,能力还远不止人脸识别、目标检测这种弱AI应用。人家一开始瞄准的是AGI伟大事业。
统计模式识别
但是,目前神经网络遍地开花的领域,主要还是各种人脸识别一类的应用。那么在这些更接地气的研究中,神经网络有什么更接地气的解释呢?
我觉得至少还可以从统计模式识别和数学建模的角度来看。之所以用两个课程名,是因为这两个课程我上过,很多人肯定也上过,能开课的内容一般都是公认的具有科学性的内容。统计模式识别讲的是如何运用各种技巧来清洗数据、获取特征、处理特征、完成识别任务。其核心是特征。所谓的特征,就是我想识别一个物体,这个物体应该有什么与众不同的地方,能让我将其与其他万事万物相区别。譬如做人脸识别,脸部应当有眉毛、鼻子、眼睛、嘴唇,且这些线条的相对位置关系是固定的。去读(神经网络之前的)经典统计模式识别论文中的做人脸识别的论文(Rapid object detection using a boosted cascade of simple features),你会发现他的核心还是用下面这样的模板来匹配脸部的特征:
而神经网络,例如CNN,其前部的层一般都是用于提取特征的。提取特征用的是各种形状的卷积核,这些卷积核就先相当于上图里的各种模板。在阅读论文的时候,常常看到直接把别人在大规模图片数据集上训练好“预训练模型”拿过来作为网络的全部或前部,在别人的基础上接着训练的做法。这就是因为训练好的网络通常具有抽取图像特征的能力,这种能力可以直接被新的网络借用。
数学建模
很多研究工作可以用建模解决。譬如做分类任务,可以看成给定一个样本X,要求输出样本所属类别Y。这就是一种数学建模。那么研究的目标就是用尽方法探知Y与X的关系。关系无非两种:线性关系和非线性关系。倘若我们对这个分类任务较为了解,掌握很多先验,我们就能猜出X与Y大概属于哪种关系,不确定的就是一些系数细节。系数待定,并可以通过大量已知的数据样本回归出来,统计模式识别里这种回归通常叫“训练”。而神经网络就比较简单粗暴了,它直接用全连接表示X经过线性变换得到Y,用激活函数表示非线性变换,并在网络里反复叠加线性层和非线性层,增加网络深度和广度。只要网络足够深和广,其理论上能表征的X与Y的关系表达式就越多。最后借助GPU,暴力求解权重和偏移,存储于网络结构上的Y=f(X)。