说起人工智能,都知道有很多算法。今天就挨个盘点一下,看完您可能觉得,AI,其实也就那么回事。

先简单聊聊人工智能的历史,可能远比我们想象的要早。公元前4世纪,亚里士多德就在《工具论》中提出三段论,借助于一个共同项把两个真言判断联系起来,从而得出结论。这里注意关键字:判断结论

而真正开始用机器做判断的,是从英国数学家图灵开始。

二战时盟军一堆破译专家无法破解德国纳粹的机器码电文,直到图灵在苦思冥想后得出一个惊世骇俗的结论:只有机器才能打败机器。于是第一台模仿计算机器应运而生,成功破译了电文,大大缩短了德国失败时间。在1950年,图灵发表了《计算机器与智能》,明确提出了“机器能思维”的观点,并且提出了著名的“图灵测试”,用来衡量机器智能。

1956年,首次采用AI(Artificial Intelligence)术语,人工智能诞生。

随后各种逻辑理论、处理语言、通用程序、专家系统涌出,AI达到第一次高潮。

蓬勃发展后,很快就遇到了瓶颈,美国说语音识别比登月还难,英国说人工智能是骗局。AI陷入低谷。

直到神经网络的出现。

1987年,首届人工神经网络学术大会举行,成立了国际神经网络协会,掀起了AI的第二次高潮。

以后虽说AI再次陷入低谷,但是每次都随着神经网络算法的优化和计算能力的提升而继续蓬勃发展,无论是战胜国际象棋世界冠军的“深蓝”,还是在问答中击败人类的“沃森”,或者战胜世界围棋冠军的“Alpha Go”,无一不是基于神经网络算法。

这么神奇的神经网络,到底是什么?

简单说,对人脑结构进行模拟的人工神经网络。事实证明,只有人脑才能打败人脑。为了模拟生物神经的功能,首先以生物神经元抽象出一种人工神经元。模型是这样的:

人工智能的算法是什么(一文学完所有人工智能算法)(1)

其中,x为神经元k从外界接受的多个输入信号,w为神经元k从刺激到输出间的传递权值, u为神经元将输入与权值的组合后的输出。b为偏置量。

用一对方程描述上述的神经元:

线性组合器的输出为:

人工智能的算法是什么(一文学完所有人工智能算法)(2)

神经元的输出为:

人工智能的算法是什么(一文学完所有人工智能算法)(3)

看到这估计读者要困了,说人话,就是加权求和计算后分类。熟悉流程管理的童鞋,尤其是被CMM/CMMI虐过的,要叫了,这不就是DAR(决策流程)吗?是的,没错。我们都知道离散数学是诸多科学的基础,而其英文Discrete Mathematics,又叫Decision Mathematics,就是用来量化分类的。记得前面让注意的关键字吗?判断结论。根据输入,和相应的权值,得出结论。

权值怎么定呢?DAR可以根据经验,AI怎么办呢?

机器学习。根据现有输入和结论,机器自动学出权值。训练机器,其实,跟马戏团训练老虎一个原理。

训练师靠投喂鼓励老虎,AI靠反馈,也就是要介绍的第一个算法:BP(back propogation)神经网络,是一种按照误差逆向传播算法训练的前馈神经网络。通过在输入和输出之间增加若干隐藏层,来增加判断能力。在AI的实际应用中,绝大部分都采用BP及其变化形式。它也是前向网络的核心部分,体现了神经网络的精华。计算也相对简单,主要是矩阵运算。BP主要应用于模式识别、分类、数据压缩、函数逼近等。DNN(Depth深度神经网络)基于BP,或者,至少有一层隐藏层的BP。

在BP神经网络中,所有输入信号之间是没有关系的,一维的,没有时间前后之分。那么问题来了,如果输入数据是和时间有关的呢?比如根据过去每月销量预测未来某月销量?比如股价预测?

RNN(Recurrent神经网络)在时序数据上有着优异的表现。具体模型算法以后细表,简单说就是通过循环,实现对时间序列的信息提取,也就是时间特征,然后把特征值作为输入送入全连接网络,也就是BP,实现预测。RNN就是循环核 BP。

在RNN基础上优化的常用算法有LSTM(Long Short Term Memory)神经网络,具有记忆长短期信息的能力,解决长期依赖问题;DRNN,深层循环神经网络。

继续回到BP,如果输入数据过多,比如图形识别,除了学习效率降低之外,识别能力也会随之降低,因为太多的输入,太多的权值,最后可能陷入某种分布陷阱。为了解决问题,CNN(Convolutional卷积神经网络)出现了。网络流行语,卷,不知道跟这个有没有关系。CNN结构有3层:卷积层(Convolutional Layer),池化层(Max Pooling Layer),全连接层,还是BP。卷积层把大数据分成小块,找出小块特征,然后从左至右从上到下一点一点的卷,得出一个新的特征矩阵。新的特征矩阵非常大,要通过池化层做向下采样,池化,顾名思义,像筛子,大的留下,小的舍弃,就像当年苏联处理中国鸡蛋水果一样。经过池化,主要特征保留,数据量大大减小,可以送入BP做预测了。CNN的改进算法有R-CNN,fastRCNN,fasterRCNN等。

CNN基于二维数据,GCN(Graph图卷积神经网络)基于图数据,算法看着吓人,原理和CNN差不多,不过,这一点估计有些童鞋不认可。

再次回到BP,如果输入数据没有时间关系,但是有空间关系呢?比如说想知道送什么礼物给女朋友合适,问问身边的朋友都送的啥,然后选他们送得最多的,估计get laid概率高些。用数学描述,就是邻近样本特征相同,KNN(K-NearestNeighbor)神经网络算法,通过少量邻近样本特征做预测,提高效率和识别度。

还有诸多神经网络算法,基本上是以上四种算法的改进或者组合。下面用一张图来表示他们的关系:

人工智能的算法是什么(一文学完所有人工智能算法)(4)

看到这里,是不是觉得很简单,手痒想立即跑一个算法啊。搭建环境其实很简单,有Python就够了。也不需要太强的机器,不过如果数据多算法复杂的话最好还是用GPU来跑,也就是通过NVIDIA的显卡。

以上只是个人肤浅的理解,诸多不对之处,还望指出,一定更正。在学习AI过程中得到过很多帮助,在此表示感谢。

如果觉得文章有用,希望能深入交流,或者有错误想指教,欢迎下方留言,谢谢。

蒹葭苍苍,白露为霜。所谓伊人,在水一方。溯洄从之,道阻且长。溯游从之,宛在水中央。

,