一谈起互联网生态,就想起BAT,但如今百度与阿里、腾讯的差距越来越大,百度市值只有662亿美元,而阿里的市值已经达到3888亿美元,这还不包括未上市的蚂蚁金服。但百度也不甘示弱,请来原微软执行副总裁陆奇,把自己的未来赌在人工智能(Artificial Intelligence ,AI)上,今年7月5日宣布启动了名为“阿波罗计划”的自动驾驶开发计划。而从业界看,Google的自动驾驶就更加成熟,于2012年5月获得了美国首个自动驾驶车辆许可证,2015年谷歌已在加州山景城的公路上测试其自动驾驶汽车,一年之后Google的自动驾驶已行驶200万英里,目前Google自动驾驶汽车计划的目标是在2020 年前解决所有现在自动驾驶汽车尚未解决的问题。除了谷歌,苹果、特斯拉、长安汽车等都在自动驾驶领域有很大的投入,加上之前AlphaGo打败包括柯洁、李世石在内的所有人类围棋棋手,将人工智能(AI)带入浪潮的巅峰。有一个数据也能说明AI是多么的热,据英国《金融时报》报道,2016年美国斯坦福、伯克利、MIT、CMU等四所名校人工智能专业的优秀博士生第一份工作合同年薪已达到200万美元,而互联网精英人才在硅谷现在的起薪是20万美元。
AI如此热,软件测试自然也给予极大的关注。一年前, 我就写过两篇文章:
主要是讨论图灵测试、如何测试人工智能软件。今天写这篇文章,是讨论如何将AI应用到软件测试上,即应用AI技术测试一般非AI软件,彻底提升自动化测试的水平,解决一些之前用其它技术不能解决的问题。实际上,AI在测试领域已经取得一些实质性的进展。但在讨论这个主题之前,我们先快速了解一下什么是人工智能(Artificial Intelligence ,AI)?AI有哪些具体的应用和算法?
图1: 人工智能概貌
简单地说,AI就是机器实现的人类智能,即让计算机实现原来只有人类才能完成的任务,即能够以人类智能相似的方式来解决问题,包括计算智能、感知智能、认知智能等。最早(1956年)提出的AI是通用的AI概念,即指拥有人类的所有感觉、理智,能够像人类一样思考的神奇机器。现在还很难做到,就退而求其次,机器能够将特殊任务处理得同人类一样好(甚至超过人类处理的结果),如图像分类、人脸识别等,这就出现了机器学习(狭义的人工智能)。而在机器学习中,深度学习是最有效的一类算法,目前在深度学习上我们已经获得极大成功,AlphaGo就是一个范例。也有学者说,复杂的中国驾驶场景,正是深度学习的优势。自动驾驶是深度学习和增强学习融合而成的机器学习。所以从时间看,上个世纪50、60年代就开始提AI,然后到了80年代提出机器学习,而深度学习直到2010年才获得实质性的突破。
图2 英国最像人的机器人“索菲亚”,可以舌战群儒
AI具体体现在机器人、语言识别、图像识别、自然语言处理和专家系统等方面,主要包括以下几个方面的应用:
-
人类感情: 分析人脸特征, 应对人类感情(心理治疗)和识别罪犯,如英国机器人索非亚就能展现多种表情。
-
自然语言处理:语言上下文的理解、生成、翻译、改编,如机器翻译、机器新闻编辑等。
-
视觉和图像处理:视觉情感、对象识别(如人脸识别、指纹识别)、行为识别、活动识别、自动驾驶等。
-
语音:语音识别、声音鉴别、吟诵(语音合成+上下文理解+人类情感模拟,包括诗词吟诵,甚至有一天说相声、说评书)等。
-
机器人:机器学习、多机器人协同(多机器人系统)、多腿行走、感性认知等。
-
基于概率的推论:常识、行为推理、非单调性推理等。
-
从技术上看, AI目前依赖机器学习来实现,而机器学习的主要算法来自深度学习的算法。在机器学习上,主要的算法有:
-
感知器(Perceptron)二元线性分类算法,属于有监督学习。
-
SVM(Supportvector machine,支持向量机),也是线性分类算法,找到“最大间隔”的划分超平面。
-
集成学习:主要有Bagging、Boosting,将多个弱分类器组合成强分类器,从而提升分类效果。
-
RBM (Restricted BoltzmannMachine,受限玻尔兹曼机) 是一种用随机神经网络来解释的概率图模型(probabilistic graphical model)。
-
DBN(Deep BeliefNetworks,深度信念网络)是基于RBM发展而成的深度学习的核心算法,得益于对比散度(Contrastive Divergence, CD)的高效近似算法。它由若干层RBM级联而成,绕过了多隐层神经网络整体训练的难题,将其简化为多个RBM的训练问题,使得识别效果和计算性能得到显著提升。
-
DBM(deepboltzmann machines,深度玻尔兹曼机),类似DBN,深层次的数据拟合,多个RBM连接起来构成DBM,模仿人脑多层神经元对输入数据进行层层预处理,但DBM是无向图,还可以延伸出自编码神经网络和栈式神经网络。
-
RNN(RecurrentNeural Networks,递归神经网络)神经元的输出可以在下一个时间戳直接作用到自身。
-
CNN(ConvolutionalNeural Network,卷积神经网络)是一种前馈的、深层的、非全连接的神经网络,其人工神经元可以响应一部分覆盖范围内的周围单元,适用于大型图像的处理。
-
Sparse Coding (稀疏编码)是根据降低变量相关性的方法之一是降低个体的熵,从而寻找一个最小熵编码,使得每个系数的概率分布是单模态并且在0处是峰分布的低熵(low-entropy)方法。
-
Bayers Net,贝叶斯网络是一个带有概率注释的有向无环图,其概率是利用贝叶斯公式计算出其后验概率。贝叶斯分类器是用于分类的贝叶斯网络,主要有四种:Naive Bayes、TAN、BAN和GBN。
-
......
机器学习还分为有监督学习、无监督学习,如:
-
有监督学习:感知器、SVM、集成学习Boosting、RNN等;
-
无监督学习:RBM、DBN、DBM、Bayers Net、稀疏编码等。
无监督学习是目前算法的主流,而且神经网络算法大部分是无监督学习,大部分算法中都应用了概率论,虽然没有把它们归为概率模型等。