陈凯
科学研究的过程,一般是从观察和发现问题开始,针对问题给出猜想和假设,接下来是设计实验或者设置进一步观察的任务,借由实验和进一步的观察,对数据结果进行分析,给出理论上的解释或者建立能反映事物变化的模型。为了验证理论或模型的可靠性,常需要对未知的现象进行预测,预测的成功则验证了理论或模型在特定范围内具有一定的可靠性。
在人工智能高度发展的今天,笔者希望能找到一些能够用于基础教育阶段课堂的案例,用以展现机器学习在科学研究过程中模型建立与未知事物预测方面可能起到的作用。笔者抱有这样的愿望:模型建立中的数据是由学生亲自观察、采集并记录下来的,这些数据虽然数量不少,但精度略有不足(这恰恰反映了现实中最可能的情况);模型本身能由相对简单的数学公式或动力学系统构成,能够适应基础教育阶段学生的知识技能水平;模型构造的过程能够体现机器学习算法的参与,算法原理简单,算法实现工具相对便捷。
本文给出的“木星卫星轨道数据的分析和智能预测”案例,正是为实现上述目标而设计的,整个教学过程需要多个课时,包括:①问题发现:由望远镜观察注意到木星临近的未知天体;②建立假设:猜测这些天体实际是围绕木星旋转的卫星,并给出假设的依据;③设置观察任务并建立数学模型:观察并作数据记录,根据假设,按正弦函数建立数学模型对数据进行匹配,这里的函数拟合需求引出了机器学习算法;④优化模型构建过程:为优化函数拟合的方法,讨论可能用到的机器学习算法的种类并对其基本原理进行介绍;⑤进行预测:根据机器学习算法完成程序代码,并用其预测未来天体运行情况。限于篇幅,本文重点讨论第③点,在学习者尚不具备较完整编程能力的情况下,可用电子表格来进行数据处理并呈现出对于机器学习算法的需求,这样就扩展了该案例的适用学习对象。
● 玩一个和正弦函数有关的游戏
向学习者推荐一个机器人擦地板去除污迹的游戏,游戏任务是:如图1所示,某种型号的机器人均按正弦函数曲线的样式在地板上行进,某故障机器人在行进路线上随机残留下了油污,现派出清理机器人按正弦函数曲线在地板上行进并抹除地板上的污迹,但清理机器人并不知道故障机器人所采用正弦函数曲线的周期是多少,清理过程中也不可中途更正正弦函数周期,为达到最好的抹除污迹的效果,玩家可以随机在文本框内输入正弦函数周期倍数,然后观察该机器人除污的效果。在机器人实施任务的过程中,还可以观察它离污迹的距离有多远。
引入这个小游戏的目的,是用游戏作为一个模型,在直观的行为变化和抽象的数学函数两者之间建立起联系。学习者在游戏的交互过程中,熟悉不同的周期倍数所对应的函数图形形态。
● 给出建立数学模型的需求
机器人除污的游戏正好对应木星卫星轨道的预测问题,两者所使用到的数学模型是完全相同的,以下选用日常观察和记录最为方便的木卫三来举例说明:若以时间为横轴,以望远镜观测到的木卫三离开木星距离的数据(以比例方式记录)在纵轴上画点,便能得到一系列的散点。由于天气等因素的影响,这些散点从时间轴方向看是分布不均的,又由于观察和记录必然存在误差,所以在纵轴上点的位置也并不完全精确,从科学研究的角度看,若假设木星卫星是围绕木星旋转的,则可以假设如能观察到任意时间点的距离,则可将这些散点连成一个接近正弦函数的曲线(木卫三的运动轨迹为一个非常接近圆形的椭圆,从运行轨道侧面观察,按时间轴方向采集距离数据,就能描绘得到近乎正弦函数的曲线,关于何以导致特定偏心率,这涉及具体的物理学问题,这里不进一步展开)。只要确定正弦函数的周期倍数,就能够为木星卫星的运行在视场中的位置變化建立数学模型。
虽然木卫三位置预测问题和机器人除污问题本质上是同一个问题,但其中,机器人除污问题直接和数学模型有着对应关系,而对于木卫三位置预测问题,却要经历将现实中的问题转换成数学问题的过程,所以在教学过程中,将机器人除污问题作为一个中介,在思维上把现实问题和数学模型连接起来(如表1)。
● 数学模型的建立
无论是机器人除污,还是木卫三位置预测,它们用到的数学模型都只是简单的正弦函数,其中仅有一个变量即周期倍数,如何找到这个周期倍数呢?先考虑一种简单的处理方法,先任意地随机取一个周期倍数,用该周期绘制出正弦函数的曲线,观察其与期望坐标点匹配的程度。以机器人除污游戏为例,观察并记录该机器人在行进过程中,当其与污迹在横轴上处于同一位置时,在纵轴上的差距有多少,然后不断调整周期倍数,试图找出更小的差距。那么,应该遵循何种策略调整周期倍数呢?似乎可以用如下方法,略增加或略减小周期倍数,用新的周期倍数绘制出正弦函数曲线,并计算该机器人与污迹在纵轴上的差距是否有所减少。如差距有所减少,则继续按此方向修改数据,直到在此方向上修改数据会导致差距反而增加时停止。以上探索过程使用电子表格就能够呈现出来,也可用Python等程序语言来模拟。
然而,上面的方法未必能得到最优的结果。为了看出这个方法的局限性,下面用木卫三观测数据举例(为论述简单起见,表中已将距离数值折算为比例),如上页表2所示。
假设取前5个观测值,将观测序号作为横轴坐标点位置,木卫三和木星距离的比例为纵轴坐标点位置,则得到的图像如图2所示。
由于不知道正弦函数周期倍数,可以随机取值进行试探,假设取周期倍数为125,则获得正弦函数为sin(125*x*3.14/180),这个函数是不是能很好地拟合散点图中的观测点呢?用一个数学公式就可以知道:
Fitness
=ABS(SIN(125*1*3.14/180)-0.7)+ABS(SIN(125*3*3.14/180)-0.5)+ABS(SIN(125*5*3.14/180)+0.9)+ABS(SIN(125*6*3.14/180)+0.8)+ABS(SIN(125*9*3.14/180)-1)
公式乍一看有些复杂,其实就是将周期倍数为125的正弦函数,获得其横轴在1、3、5、6、9处的纵轴坐标值,将其与观测到的散点的纵轴坐标值相减,取绝对值后相加,这样可以看出随机选择的周期倍数离理想的拟合曲线的差距到底有多少,上述公式计算结果是2.054。因为可以根据此数值判定随机猜测的优劣,所以将其称为正弦函数拟合的适应性公式。
如再取倍数126,则该适应性公式的差值数据会减少,可看作是离理想的倍数更近一步,可发现,倍数在大约130时,差值降低到最小,然后差值又将变大,所以可以推测,正弦函数的周期倍数是130。但这个结论是错误的,因为最低点的横坐标轴大概在横轴坐标50处,因此可知木卫三运行轨道可完美匹配周期倍数为50的正弦函数,则可证明木卫三确实按近圆形轨道围绕木星运动。另外,因为50大约是360的七分之一,所以可推测木卫三公转周期约为七天。由此,就可以对下一周某天的木卫三出现的位置进行预测了。
● 从人脑判断到机器判断
由于绘制出了不同周期倍数所对应的适应性情况的结果,人脑可直观把握图形所表达的意义,并几乎立刻能找到曲线最低点,但一般的程序设计语言却不具备直观的能力(这里不展开讨论并行处理系统)。在电子表格实验中,选取了250个点得到了曲线,如果曲线更复杂,则采样点势必要增加。而在其他类似寻找函数极值的问题中,如若影响曲线变化的变量大幅增加,那么绘图工作就由二维平面扩展到更高维的空间,这样不仅会导致数据量极大增加,而且难以单纯靠视觉直观或程序一一枚举寻找到极值点。
这个问题很鲜明地将机器运算在整体性和直观性方面的局限性展现了出来,也就自然而然引出了对机器学习算法的需求。如何为机器设计一个方案,使之能够在缺乏全局视野的情况下,找出适应性函数曲线的最低点?在这里,就又可以用机器人思维模型(游戏)的形式,对可能的解决方案进行讨论,可以将函数波形想象成山峦,思考机器人如何找到海拔最低点。如果教师直接抛出机器学习算法方案,未免浪费了激发学生自主思考和探索的大好机会,所以不妨对思维模型的建立开展头脑风暴。例如,派出几千个机器人,随机占据山的不同位置,将这个过程重复许多次,就能通过排序找出最低点,这个方案显然太低效了。要想提高机器人的工作效率,就需要改变机器人的工作模式,为机器人设立恰当的运作规则。为解决函数极值问题,常用的方法有模拟退火算法、遗传算法、粒子群算法等,部分教师很可能对这些算法的使用已比较熟悉,其中部分算法的教学策略,在后续的文章中还会涉及,在正式讲授机器学习算法之前,可以利用思维模型(游戏),将机器人实施探索工作的规则和流程,用语言描述出来。有意思的是,判别这些思维上的模型可行与否的一个方法,是寻找这些模型在其自然界的对应事件,因为漫长的时间为万事万物的发展变化筛选出了有效的方法。
至此,可以看出教学过程中,模型的不同作用:其一,数学模型是一个预测系统,它对已有数据进行归纳,通过函数拟合对未来事物变化状况进行预测,这是本案例学习阶段3的重点;其二,要想构建起数学模型,可以使用直观的方法,而若要将这个構建过程变得自动化,可以借助不同的机器学习算法,而许多机器学习算法,实际上也是观察和模拟自然界复杂现象变化后简化得到的模型,这是本案例学习阶段4的重点。仔细观察其中的联系可知:优化数学模型的构建过程,需要信息技术工具的介入,这里强调的是信息技术工具之所用;而一些机器学习算法借鉴模拟了自然世界中的现象变化过程,借助不同方法实现了这种模拟的自动化,这里强调的是信息技术工具之所成。
而贯穿教学过程的机器人除污游戏也是一个模型,其作用与上述模型不同,该游戏一方面对应着有着物质实体的机器人除污系统,另一方面对应着数学上的正弦函数曲线,这样就成为连接客观现实和数学抽象的中介,通过动态直观的展示提高了认识的效率。但其意义不仅仅限于教学法,在后续机器学习算法的教学中,可以鼓励学习者模仿机器人除污游戏,自行主动建立起用于联系客观现实和抽象数学的思维模型。