关于何为真实情境的讨论

    陈凯

    

    

    当我们说到“教学中构筑真实情境”这句话的时候,需要进一步剖析究竟何为“真实”。即便在教学场景的创设中涉及真实事件和真实的问题,为契合特定教学目标的达成,这些真实事件或问题大多进行了简化和改造,或只是强调了其中的某一个侧面。用比喻的方式来说,课堂教学场景中出现的所谓的真实事件和问题是激发探索兴趣的芳香蜜源,是可以挂载知识点的结构框架,是可被投注情感的戏剧片段。而“真实”这个词语本身的意义也并不牢固,学习者所能感受到的该词的范畴,随学段的增长而变得越来越广泛,但其确定性却似乎在下降:水果数量的相加和计价是真实的、光所兼具的粒子和波的特性是真实的、事物存在本身是真实的……对于一个教学者来说,便会面临这样的问题,如果他所要阐述的词语的概念是高度概括的或是抽象的(越是到高学段就越是会遇见这样的概念),那么完全有这种可能,这个概念离现实的情境非常遥远,虽然说用来承载概念的词语本身在文本中随处可见,或者说,这个词语本身也常被应用到多种现实的生活情境中,但在那种情境下对于词语的进一步诠释却是困难的。不妨考虑“利用机器学习对图像进行识别”这句话,虽然教师可以轻松构造出对应这句话的那些还原生活具体场景的所谓真实情境,如用手机拍摄照片智能判别植物,或者将人脸从各种物体的图像中区分出来,等等。但这样的生活具体场景,却很难成为一个良好的教学情境,因为无论是诠释机器学习的不同的特性,还是具体讲解某几类机器学习的算法,学习越是深入,离开最初那个由具体需求而来的生活情境就越是遥远。这个情境既失去了吸引学生兴趣的芳香蜜源的作用,也不太能成为连接不同知识的结构框架,在教学过程结束的时候,教师和学生大概会重新想到最初那个带着具体需求的情境,然后假装愉快地宣称已经解决了图像识别的问题。但此处情感的投入,仅仅是对应着一个现成的产品或函数的某一功能的实现,而不对应着问题的解决,显然,在解决问题的路径上存在着太多不明所以的地方。

    这里不妨重新审视关于真实情境中的“真实”一词,当情境被用于课堂中的那一刻起,其实就开始偏离其现实上的真实性,教师采用种种计谋将学习者放置到创设出来的情境中,希望他们通过代入的方法假设性地解决现实中的问题。尽管这样,教师们仍然称自己所创设的情境为真实情境,却少有人会对其中的“真实”一词提出质疑,何以如此?对于虚构文艺作品的所谓真实性的考察可以带给我们答案:读者情感上的共鸣是真实的,矛盾产生或矛盾解决的逻辑思维过程是真实的,作品中所涉及的日常经验细节也是真实的,如此等等。这样就给出了一个启示,要把现实和真实两者加以区分。在教学情境中,哪一种真实才是最需要被把握住的?笔者在对计算机的模拟和仿真的行为进行考察后,得到了一种可能的答案:想象一下,人们可以利用计算机模拟大气行为,计算机中的气候环境是虚拟的,但其模拟的气候变化和现实世界的现象是有所对应的。人们可以利用计算机去模拟制造一台虚拟的计算的机器,那个机器当然不是真实的,但它解决某问题所做的计算本身却是真实的。可以看出,模拟计算行为实际上可以等价于计算行为本身,计算过程本身无疑是真实的,如果能够围绕计算行为的需求、计算过程的设计、计算效果的评估来构建教学情境,那么,即便是一个看上去虚拟的情境,也是具有真实性的,如能将真实和现实区分开来,就不必非要回溯到产生出这个计算需求的具体事件并将那个事件作为教学的情境。

    下面用一个和简单的遗传算法有关的教学案例来说明问题。如图1所示,这是一个“机器人获取能量”小游戏,正中间的“R1”表示1号机器人,另外还有5个机器人编号从“R2”到“R6”,机器人每一步行走,都是横向移动50个单位,而纵向移动的距离,是根据文本框中设定的数值来决定的,规定机器人开始行走后,这个数值就不能再改变了。显然,文本框中数字越小,机器人行走的角度就越倾斜。当机器人碰撞到墙壁时,其横向的方向会翻转。机器人的目标是界面最上方的小能量块,小能量块是静止不动的,机器人行走时可能会和小能量块重叠,重叠时间越长,则机器人获取到的能量就越多。为了增加挑战性,机器人每多走一步,其自身占地面积就减少一点,相对就更不容易碰到能量块。图1中,笔者派出了第一个机器人,根据设定测试值,每横向移动50个单位,它就纵向移动15个单位,从图上看,它差一点就能获取到能量了。图1中用直线标出了机器人的行进轨迹。

    那么,怎么才能快速找出能获取到高能量的最佳纵向移动距离呢?这就是一个和策划具体计算过程有关的真实的问题。例如,用枚举所有数字一个一个尝试的方法,当然最终是可以找到最佳答案的,但若在课堂中组织一场比赛,看谁先找出最佳答案,恐怕不会有人真的采用枚举的方法。从三个角度看,机器人获取能量小游戏可以成为构建教学情境的不错的素材:其一,悬疑的存在和带有竞争性游戏能激发出探索热情;其二,玩家在游戏时自然而然就运用到了日常生活中的经验,而这些经验本身又可能对应着多项计算机科学方面的概念,如枚举、随机、反馈、迭代等;其三,游戏运行本身就能引出遗传算法的几个要素,对这一点下面重点加以说明。

    在游戏过程中,可以利用“随机取值”“登记和显示分数”“生成新数据”这三个按钮,以半自动的方式尋找到最佳的答案(如图2)。操作过程如下:先点“随机取值”,这个按钮的功能是随机获得0到100之间的整数值;然后就按随机确定的移动距离派出机器人,在完成行进路线后通过“登记和显示分数”来记录总共6个机器人的成绩,可以看出,6个机器人的成绩分别是4、0、17、16、0、0;接着点击“生成新数据”,这时,游戏自动选出导致机器人获取能量值最多的两个纵向移动距离,并在这2个数据附近区域选取出4个数据,合并由随机函数产生的另2个数据,产生出新的一组共6个数据,供玩家再次测试。事实上,对于图示中的例子,只要再玩上一轮,就能够找出最佳答案33了。(为了便于说明问题,笔者选取了一组可快速找到答案的随机数,玩家真正操作时一般需要3到4轮“生成新数据”后的测试过程,但大多数情况下速度要快于一一枚举)

    关于用何种策略,根据已有机器人的成绩来生成新的测试数据,可以是课堂中讨论的重点问题。例如,是否需要将某一轮测试中成绩最好的距离值按原样保留下来?如果要对机器人竞赛中获得优秀成绩的距离值做一点微调,用来探测是否有更好的结果,那么调整的幅度如何决定?如果有多个导致优秀成绩的距离值,有没有可能结合两个或两个以上的距离值进行计算,加快寻找到最佳答案的速度?为什么还有必要获取几个完全随机的数值参与竞争测试?以上问题,都和如何采用不同遗传变异策略达成较优或最优的结果的讨论有关,显然都是十分真实的问题。如果要根据特定策略来实现或修改相关代码,主要涉及的技能是数组数据的存取调用、搜索和排序,实现难度在可控范围之内。将游戏场景作为教学情境的另一个好处是,并不需要将所有的操作都做成自动化过程,由人参与其中的半自动化的算法实施过程,降低了程序的代码实现的难度,还意外地增强了学习的自主性和体验性。

    如果将不同测试数据和测试结果的情况全部列出图表(为此笔者自己不厌其烦地“玩”了几十次游戏),就能够用以显现遗传算法在解决问题上的普遍性,图3中,直线代表的是由小到大设定的纵向距离测试值,曲线则是该值对应的获取能量值的多少。可见,遗传算法在其中的作用,主要是获取一定范围内函数的极值。在本栏目上一期的文章《从模型到现实——木星卫星轨道数据的分析和智能预测》中,为了更好地获得正弦函数角速度的拟合值,就使用到了遗传算法,这便使得这方面的教学内容体现出了现实的应用价值。当然,这也同时为深入探索给出了方向,那就是如何借助专业的遗传算法工具,对更大量和更高维度的数据进行分析。

    笔者文中的机器人游戏当然是由计算机模拟的,但若单纯从技术方面考虑,将这个游戏装置实体化,难度应该也不会很大,如果市场上有一套允许教师进行定制,并能在游戏过程中呈现出机器学习算法运作过程的装置,那将会是构建人工智能教学情境的重要工具和素材。当然,凭教师个人力量很难做到这一点,可惜目前市场上有许多自称可用于人工智能教学的机器人教具,往往只不过是一个无法深入展开剖析的黑箱而已。