陈大波:人工智能——我的实践与体会

自从“阿尔法狗”接连战胜了韩国的围棋世界冠军、职业九段棋手李世石及排名世界第一的世界围棋冠军柯洁后,一夜之间,人工智能一词成了人们口中的热门话题。那些鲜为人知的深度学习、神经网络、蒙特卡罗算法等专业术语,也随着媒体宣传而广为人知。

这股人工智能热潮,少不得也吹进了中小学教育领域,许多信息科技学科老师也都忙着去赶趟。不过很快就出现了麻烦,不久前有些老师告诉我,他们在人工智能的学习上遇到了困难,许多算法如递归、深度搜索看不懂;需要专业性很强的数学知识如微积分、卷积、概率、图论、组合学,他们也不太懂。当然,接下来问的就是,我们该怎么去学习人工智能?将来怎么面对学生去教这门课程?

其实,老师们被“阿尔法狗”的铺天盖地报道所误导了。这些人工智能算法是人类有始以来最伟大成就,属于尖端的、甚至是“高大上”的。想想我们连路都还没走稳就想着去跳了,哪有不败之理。

由于工作需要,我在十多年前曾自学过一些有关人工智能的知识。近年来,也赶着股热劲,在人工智能语言和程序设计上再次进行了学习和实践。我以为信息科技这门学科,无论是学生还是老师,学习的主要途径还是要强调在理论指导下的实践,要从解决小问题开始,不断增强自己的算法设计能力和编程能力。

近我在学习人工智能语言时,顺便完成了两个简单的人工智能作业实践:“井字棋”和“爱恋问题”。这里就与大家分享一下。

第一个例子,是传统的“井字棋”游戏。

这是人工智能教程中常常提到的经典案例。游戏在3×3棋盘格上,由机器和人轮流下,分别用“×”和“○”来代替自身的棋子。谁先连成一条直线谁就胜。

如何让机器有“智能”呢?有二种可行办法,简述如下:

一是,采用暴力穷举法。理论上它有9!种可能,穷尽所有可能后给出最佳落子点。这种方法思路简单,但算法实现起来却很麻烦,速度也慢。

二是,给机器提供一个优先落子位原则,同时给予一个权重分值。它的基本原理可简述为:

1. 如果有危险,则先堵对方路,否则做下一步;

2. 如果无危险,则总是把子落在通路口最多的地方(比如,棋盘的中间位,它有上下、左右和2条斜对角线,共有4条通路),如若不能,做下一步;

3. 如果无危险,则把子落在通路口较多的地方(比如,棋盘的四个角位,每个角位有3条通路),如若不能,再做下一步;

4. 如果无危险,则把子落在4条边中间位(每个位只有2条通路),然后再回到第一步。

把上面原则代码化就OK了,我用VB语言将它实现了。不过在对弈过程中发现这个原则有漏洞,在某一特定情况下它会输。修改一下程序,将漏洞补上,即刻成了人机对弈的2.0版“井字棋”。

不同的是“阿尔法狗”发现了自身漏洞后会自动纠正,也即它能自我学习。

第二个例子是,逻辑推理“爱恋问题”求解。

问题:五个小青年A、B、C、D、E相互间在谈恋爱。现已知事实:

A爱恋B;A爱恋C;B爱恋D;C爱恋A;D爱恋B;D爱恋C;E爱恋C。

问:哪几对最有可能成为夫妻。

这是一个逻辑推理问题,属于人工智能领域中的问题求解部分。

一般程序语言不太适合解决此类问题。我是用人工智能语言Visual Prolog实现的(最近刚学会)。

首先,将“A爱恋B”这个事实,用形式化语言表达为love("A","B")。其次,对于可能成为夫妻的理由,我们用形式化语言给出其规则是:

man_and_wife(X,Y):-love(X,Y),love(Y,X). %“:-”读作:如果

即,X和Y成为夫妻,如果X爱恋Y,并且Y爱恋X。

好,我们现在可以完整地写下来了:

clauses%子句

love("A","B").%事实

love("A","C").

love("B","D").

love("C","A").

love("D","B").

love("D","C").

love("E","C").

clauses%子句

man_and_wife(X,Y):-love(X,Y),(Y,X).%规则

goal%求解目标

man_and_wife(X,Y),write(X,Y),fail.%求解夫妻,输出结果,所有答案。

程序运行后,很快给出答案:A与C及B与D二对最有可能成为夫妻。

这种语言的优点是,只要给出事实(也可认为是知识)和规则,计算机就能给你找出解决方案。另外,程序在运行时还能根据情况直接添加和删除相关事实。

正如“阿尔法狗”的设计者戴密斯·哈萨比斯所说,我现在只需要告诉它下围棋的知识和规则,再让它自身学习一下就可以成为围棋高手了。

这个案例,我曾在上海市信息科技教研室作过一次讲座。通过这次讲座,老师们终于有了实在的感受,对什么叫知识和事实,什么叫规则和推理有了一个初步的整体概念,而不再是难以理解和想象的碎片化知识。

今年,我的最大愿望是写一本人工智能语言Visualprolog区域化教材,为教育事业做点事。

其次,想重点研究一下人工智能中的“深度学习”理论并建立算法模型来实现它,以回应老师们关心的有关问题,也为自己增长点知识。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180323B1BEDJ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券