AI测试:让软件测试变得聪明伶俐(上)

发表于:2017-7-25 17:03

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:朱少民    来源:软件质量报道

   一谈起互联网生态,就想起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、稀疏编码等。
  无监督学习是目前算法的主流,而且神经网络算法大部分是无监督学习,大部分算法中都应用了概率论,虽然没有把它们归为概率模型等。
  (未完待续)
       AI测试:让软件测试变得聪明伶俐(下)
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号