有不少专业术语乍一听很唬人,“人工神经网络”就属于这一类,至少我第一次听到这个词就被唬住了。吴军博士——《数学之美》近年来火遍全球的人工智能,可谓引发了全领域的思辨与探讨,本着先了解、后评判的原则,笔者对人工智能的技术作了一定的了解。在初识人工神经网络之时,也被其非凡的名称所困惑,相信有类似感觉的小伙伴一定不少。因此大白话科普系列上线了,我们将分多篇文章,逐一对人工智能所涉及到的技术与数学原理进行大白话式的科普。不用担心没有数学基础,小编偷偷告诉你,作者连高数的书长啥样都不知道。
一
人工神经网络
说到人工智能,就不得不先说人工智能的分类:强人工智能与弱人工智能。根据维基百科的定义,强人工智能,也被称为通用人工智能(Strong AI或者 Artificial General Intelligence)是具备与人类同等智慧、或超越人类的人工智能,能表现正常人类所具有的所有智能行为;弱人工智能(applied AI,narrow AI,weak AI)只处理特定的问题。目前,除了DeepMind、OpenAI、Vicarious等少数几家公司在研发强人工智能外,大多数目前能看到的人工智能应用(例如语音识别、机器翻译、人脸识别、自动驾驶等),都属于弱人工智能的范畴,而目前弱人工智能所采用的基本算法框架,都是人工神经网络。根据维基百科的定义,人工神经网络(英语:artificial neural network,缩写ANN),简称神经网络(neural network,缩写NN)或类神经网络,是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。类比生物神经网络中的神经元,人工神经网络也存在所谓的神经元,或者说,正是因为有了神经元的存在,这种数学模型才被称为人工神经网络。类比生物神经元根据一定的电信号及化学信号,将信息处理、传输到下一个细胞的操作方式,人工神经网络中神经元的工作方式,则是通过一定范围的输入值,根据自身设定的运算逻辑,最终给出一个输出值。
二
神经元的鼻祖:感知器
人工神经网络中的神经元有多种数学模型,而最早的神经元模型,被称为感知器(perceptron)。感知器起源于上世纪五、六十年代,虽然目前已经基本被废弃,但作为最简单的神经元模型,对初学者最为友好。
举个例子
小明通过一定的算法决定自己明天是否去看新上映的复联3。在小明的算法中,需要考虑三个因素:a. 是否下雨(是=0,否=1);b. 是否有女生愿意陪小明一起看(是=1,否=0);c. 是否有剧透狗告诉了小明结局(是=0,否=1)。小明觉得,a和c两个因素对他的决定影响比较小,权重分别为1和2,而是否有女生同去占的权重比较大,为4。经过运算后,如果最终的答案≥2,那么小明就会去看电影。
在这个例子中,小明的决策过程就可以用感知器来描述:
x1、x2、x3三个输入值,分别代表a、b、c三个因素,中间的圆圈就是感知器模型的计算过程,左边三个箭头连线分别指代了三个权重w1=1、w2=4、w3=2。如果x1*w1+x2*w2+x3*w3≥2,那么就输出1,代表小明明天会去看复联3,否则就输出0,代表小明明天不会去看复联3。例如在这个例子中,即使天下雨而且小明提前知道了复联3的结局,但是因为有女生陪小明一起看,最终的计算为0*1+1*4+0*2=4≥2,因此小明会去看复联3;如果小明被剧透且小明只能孤身一人去看,那么就算天没下雨,最终的计算为1*1+0*4+0*2=1<2,小明也不会去看复联3。这里最终判断是否≥2中的数字2,被称为阈值(threshold),为了表达更方便,一般用它的相反数来表达:b=-threshold,这里的b被称为偏置(bias)。这样,这个例子的决策过程就变成:如果x1*w1+x2*w2+x3*w3 + b ≥ 0,则输出output=1,否则输出output=0。当输入层变多后,就变成了如下标准的感知器模型:
因此所谓的设计感知器,实际上就是设计不同的输入值、阈值与权重,其中输入值在很多情况下并不能修改,而阈值的设计实际上也可以理解为对常数1作为输入值的权重调节,那么感知器的设计关键,在于如何调整每一个输入值所对应的权重,而对权重的调整,就被称为对神经网络的训练。
三
最受欢迎的神经元:sigmoid神经元
前面提到,感知器作为神经元的鼻祖,目前基本已经被淘汰,那么为什么大家不喜欢使用感知器呢?如上所述,感知器设计的关键,在于如何训练调整每个输入值所对应的权重,而感知器的弱点也许有的小伙伴已经发现了,就是每个输入值都是0或1,这样非线性(非0即1)的输入值会给后续调节神经网络中的权重造成障碍(虽然这个比喻不太准确,但想象一下你在设定耳机音量时,多一格嫌吵、少一个嫌轻的纠结)。因此,sigmoid神经元应运而生。sigmoid神经元(sigmoid neuron)是现代神经网络经常使用(但非唯一)的基本结构。相较于感知器,sigmoid神经元的优势在于,其输入值与输出值均不再限制为0和1,而可以是任意0~1之间的任意浮点值(浮点值是计算机中对实数的近似表现法,从理解原理的角度可以当成实数)。sigmoid神经元的输出值,是将各个输入值的加权求和再加上偏置参数,经过一个称为sigmoid函数(sigmoid function) 的计算作为输出。sigmoid函数(sigmoid function)有时也被称作逻辑斯谛函数(logistic function),对应的这个新型神经元被称为逻辑斯谛神经元(logistic neurons)。
(知识点:e,自然对数函数的底数,也被称为欧拉数,是一个无限不循环小数,e=2.71828182845904523536……)
具体来说,假设z=x1*w1+x2*w2+x3*w3+…+b(看出来了么,这部分的计算过程其实就是感知器的计算过程),那么sigmoid神经元只不过是在原先感知器的计算过程上,加上了一个sigmoid函数的运算过程,即输出output=σ(z)=1/(1+e^(-z))。与感知器非0即1的输出相比,sigmoid神经元的输出就非常连续,其函数曲线如下:
因此,在采用sigmoid神经元组建人工神经网络后,整体的的输入值和输出值都会变为连续线性,便于训练调整权重值(如何训练调整权重值比较复杂,留待后续文章继续说明)。
结语
神经元是组成人工神经网络的基本单元,了解神经元的结构后,我们就能继续理解人工神经网络的工作原理和所谓的训练原理。
因篇幅有限,我们将在后续文章中继续以大白话的形式解读这些术语与算法。
「 本文仅代表作者个人观点 」
领取专属 10元无门槛券
私享最新 技术干货