以下是讲座视频实录,后附文字版内容:
文字版干货整理如下:
苏中:美国的达特茅斯于61年前提出人工智能一词,而人工智能的历史可以向前追溯很长的时间,甚至中国人发明算盘的时候就在思考将计算的机器演化成智能。这一演化进程与人类认识客观规律的过程相类似。通过符号推理,人类体现出早期的智能行为,并认识到世界的规则。以三段论为例,我们在认识世界时,先设定一个大前提或者一个更大的公理,而每件事情都有一个特例,根据这个公理和特例就可以推出一个结论。在很多人工智能的演化中,这方面已取得了非常大的进步,如定理证明。
这方面的技术同样应用在产业界,以专家系统为例。在医疗行业中我们需要考虑一个好医生所具备的特点,到底是他诊断的病人比较多还是他遇到的疑难杂症比较多?一般而言,一个疾病、一个好医生大概可以总结为几个类别。我们进行数据分析通常把一个大问题划分到一个小的问题空间,然后在小的问题空间领域求解。
专家系统采用同样的角度,如医疗专家对一个病种的病人进行分类,符合分类的病人具有怎样的表征,通过什么样的检验方法得以确诊,这类病人一般有几种治疗方式,其中每种治疗方式对应各自的优缺点,需考虑在什么情况下用什么方式治疗。一般来讲一个好医生把一个病种稍微的梳理一下可能会累积几十条规则,那么几个医生或几十个该行业的专家医生就能梳理出一个完整的知识体系,如《临床医疗指南》。按照《临床医疗指南》的整个流程,我们能够很容易地确定病人该做什么样的检查,通过检查能得到什么结论,得到结论以后有什么治疗手法,以及在整个病程中该做一些什么样的观察。
这样的专家系统是非常有效的,在医疗行业也有很好的应用。但专家系统同样面临着一大挑战,即固化的知识体系不能应对实际繁杂的问题。这种基于数据普适性的挑战使得人工智能的发展进入了一个瓶颈期。
人工智能的迅速发展得益于大数据的爆发,在这场爆发中,机器学习可以自动地从数据里寻找规律、,规则同时随数据的改变而自动发生变化。由此,人工智能迅速在互联网方面得以应用,包括搜索、推荐、语音识别等等。
下棋是一个较容易验证计算机是否具有智能的方式,因为可能只有人类会下棋,另外下棋有很多推理过程,如对于棋局的判断等。随着伴随计算机习得经验的增多,它的智能水准就得以提高。下棋本身是相对比较容易理解的问题,因为棋的规则是开放的,不管是国际象棋、中国象棋、跳棋还是围棋,规则是非常清晰的,在一个清晰的规则系统下,输赢很容易判断。
由于双方的棋力都能在棋盘上显示出来,再加上清晰的评价函数、规则系统和数据,我们能比较容易地设定人工智能的系统。以IBM的深蓝系统为例,当把一个棋面变成数值时,我们就可以让机器去做搜索算法,而每一个棋子在不同方向都有被选择的可能,就构建出搜索素树算法,再通过α-β剪枝的方法就可以迅速得到结论。当时深蓝就是通过这种方式对国际象棋做出很好的评估函数,由于这些评估函数大多来自国际象棋大师,并且计算机算法搜索很深入,我们就可以让计算机打败像卡斯帕罗夫这样的大师。
在用象棋的这种方法来解决围棋问题时却遇到很大的挑战:一是围棋的棋盘是19乘19,有361个空间可能性,其搜索空间达2.08X10 107 ,那,那么搜索素树就会相当复杂;二是围棋的每个子是一样的,无法通过棋面盘面子粒的多少判断它的状态;三是围棋比赛中会出现一步臭棋,全盘皆输的情况,即围棋的评价函数值不连续,在某一点一个子粒的变化可以让整个棋面的评估变得很复杂。蒙特卡罗搜索树为解决这些问题提供了思路:虽然我们没有办法判断当前盘面的情况,但可以让系统随机下棋,拿胜率作为评估标准盘。随机数可以从某种意义上描述评估值,从而解决怎样评估一个棋子的问题。
当计算机算到足够的深度时,这样的方法会有较好的效果。但是它的速度空间还是太大,那有没有什么办法可以降低呢?通过深度学习的网络来评估棋局就是一种好方法。我们用深度学习算法可以将评估变成一个深度学习的任务,以当前的对局作为输入,输出在某一点上的值,也可以提高预测精度。
那把蒙特卡罗搜索树和CNN结合能产生什么样的化学效应呢?如果用神经原网络可以预测专业棋手在对局中下一步棋的位置,我们就可以让搜索空间变小了。
AlphaGo把这个事情推到了极致,他们不光让棋的搜索宽度变窄,更做了策略网络,来判断当前棋局黑白双方获胜的概率有多大,但遇到的挑战是这个数据比对局的数据要少,对局的每一步都可以作为训练数据,但输赢一盘只有一次,训练数据有点稀疏。所以他们在这个工作上使用了增强学习的方法,即让一个战斗力不错的系统,或者两个系统互相对战产生对局,然后用最后的输赢结果作为机器的样本学习。结果就是这个系统战胜了李世石,非常了不起。
AlphaGo zero又是一个非常重要的突破,一是 AlphaGo zero完全从零开始,二是 AlphaGo zero没有用任何的方式评估,只用了对局本身的棋盘信息。它的输入只有围棋的规则,之后机器就自己跟自己下棋,以此确认模型。在深度学习里面它把原来13层的网络变成40层,而且把原来CNN的网络变得更为复杂,同时把所有的人类知识都抛掉了。但在这一过程当中,它的训练非常快,第三天这个系统跟李世石的系统对决可以完胜,过了21天它就打败了战胜柯洁的那个系统。从某种意义来讲,像下棋这样在规则明确、状态空间有限、容易评估、所有信息透明的情况下,用增强学习的方法是可解的,而且它的解法可以比人做的还要好。
那这样的方法能不能解决其他问题呢?现实当中,很多问题可能没法解。增强学习是大量数据的模拟,通过模拟的结果来调整参数。举一个医疗上的例子,我们能拿一个病人去模拟吗?给他吃不同的药看他会发生什么问题?很难。另外,数据的来源信息不是单元的,各方面的因素都会影响到病人,如基因、饮食、生活习惯、家人、天气等,这些因素不可能在一个简单的环境里被算出来,每多一个维度的参数都需要更多的数据来训练。
用多模型聚合的方法是不是可以放在行业里呢?举个例子,比如水管的优化问题预测。历史上有一些数学模型来预测管道哪个地方容易发生锈蚀,我们该在哪个地方打开了去看,但用几个模型、用不同的参数去优化,可以取得很好的效果,而且产生了很大的经济效益。
又例如,在电商平台上怎么提高电商的经济效益呢?在电商网站上买东西要经过搜索、对比、加购物车、看评论,这些步骤就是一个决策链,每个链条之间都有转化率,我们怎么提高电商的销售额呢?最好的推荐算法是什么呢?在这个领域里面,采用协同过滤算法是最有效的。
协同过滤有一个方法是矩阵分解,我们可以把用户作为一类,商品作为一类,比方说有6亿用户,1亿商品,就是一个6亿乘1亿的矩阵。我们可以把这个矩阵分解成M乘K的矩阵,当然这两个矩阵之间不会完全一致,可能有一些像压缩的损失。但是矩阵分解可以减小计算量,也可以根据用户跟用户之间的相似度、商品和商品之间的相似度做智能推荐。也就是说在这里面用一个多元K,用好多阶层的K来做优化,以达到最好的效果。
在新的时代里,由于多了数据维度,我们可以解决很多新的问题。例如皮肤癌的识别,每个医生能看到的案例都是有限的,一个好的大夫一天可能看5个案例就已经很了不起了。但机器可以学了几十万个案例以后做出判断,这个场景就是拿自己手机拍了照片以后发到系统,系统做出风险评估,以判断患有皮肤癌或者黑色素瘤的概率有多大。
回到今天的主题,我们从下棋里面看到一些计算机的成长,包括它能用更多的数据,也包括计算能力的增强,新的算法的体现。如果面对的问题是可以解决的,那这些能力就可以应用到现实当中的行业里。但是现实当中的问题往往比我们像下棋这样的问题要复杂得多,所以我们讲这种算法还有很长的路要走。
我们很多人都在担心机器人要替代人类的工作,但是其实机器人走路时还在以各种各样的方式摔倒。实际上这些都是世界上最好的机器人在比赛。三年前有一个比赛,场景是以福岛核电站的辐射场景作为蓝图,机器人可以开车,到达一个地方可以上楼梯,进去以后找到阀门,关上指定的阀门。它可能会使用一些器械,包括使用电钻等,这些都不复杂。当年的冠军是韩国一个大学,他们做的系统相对来说更容易,就是四点着地,相当于跪着,前面膝盖的地方有一个像履带的东西,所以它走路的时候像坦克车一样行走,不容易摔倒。从某种意义上来讲也验证了一个经典,用最合适的方法去解决一个问题,也许成熟的技术或者是一些简单的技术在现实当中更有效。
人工智能确实会有很大的发展,因为大数据的变化改变着很多产业,对从金融行业到医疗行业、教育行业都有很大的帮助。人们经常讲的“人工智能威胁论”事实上有很多的局限性,无论是从应用方法本身,还是问题本身。实际的问题很复杂,参数很多,而现在的方法都是简化的方法。当我们回到真正的应用当中会发现,还有很多最基本的东西需要攻克。
我们用计算机在图象识别领域里面做得很好,但它仍然是有限的数据集,比方说我可以用100万张的图片训练出一个机器人识别猫,识别狗,它能做的比人还要准,但是如果把数据集换成漫画,机器就识别不出来,但是孩子可以识别出来。孩子真正理解这是个苹果,这是个小猫,那是真正的理解,而大数据的智能在某种意义上不是真正的理解。另外,智能的本身是真正了解人,人最复杂的不光是表象,还有很多情感,这对智能来说是不小的障碍。
迄今为止,我们看到智能化的门已经打开,真正能够改变多少,可能需要不断的尝试。因为并不是所有的问题都可以用大数据解决。
原文发布时间为:2017-12-4
本文来自云栖社区合作伙伴“ 大数据文摘”,了解相关信息可以关注“ 大数据文摘”微信公众号