从手工研磨咖啡的决策来谈人工智能教学中的取舍
2019-12-02陈凯
陈凯
小馨同学每天早晨上学和傍晚放学时,都要到街边的醇香咖啡屋里坐上那么一会儿,她有时会点上一杯手工研磨的咖啡,有时候喝橙汁。
小严同学正在做一份关于饮用咖啡习惯的社会调查,小馨同学是他的研究对象。
小严同学统计后发现,小馨同学走进咖啡屋六次,有三次喝了咖啡,还有三次没有喝。(对于真正的科学统计来说,这点样本数显然太少了,本文的重点不在于统计学,所以只取了非常少的所谓样本)这个数据最多说明,小馨同学喝咖啡的比例是否为五比五,除此之外似乎没有其他什么用处。然而,小严是个细心的同学,他注意到,那是一家奇怪的咖啡屋,它提供的咖啡,要么是甜咖啡,要么就是清咖啡,在某一时刻,两种口味中只有一种;还有,它提供的要么是热咖啡,要么是冰咖啡,在某一时刻,两种温度中只有一种。经过记录后,小严同学所观察到的小馨同学的行为是这样的:
温度 味道 时间 是否喝咖啡
热 甜 早 喝
热 甜 晚 不喝
热 淡 早 喝
热 淡 晚 不喝
冰 甜 晚 不喝
冰 淡 早 喝
看了这样一份记录表,小严同学心中产生出一个疑问:如果小馨同学晚上走进咖啡屋,那里只提供冰的淡咖啡,那么她更有可能喝咖啡,还是不喝?毕竟,冰、淡、晚这三个属性的组合,在已有的记录表中并没有出现过。
这篇文章中的例子,是要从信息熵的角度,来说明机器将如何根据已有的数据,对未来的行为做出预测;同时,通过这个例子,我们可以讨论在基础教育阶段,在人工智能教学过程中某些环节所涉及的知识和技能超出学生当前水平的情况下,应该如何做出取舍。
● 事件概率均等时的信息熵计算
人工智能教学中的许多内容,是和信息技术教学基础(必修)模块中的内容紧密联系在一起的,人工智能中常见的分类问题的实施过程,其实也正是从混乱走向秩序的过程。信息技术教学中一般都会提到信息论中信息的概念,认为信息是用来消除(随机)不确定性的东西,这里的“消除”,更多指的是机器按特定算法所做的不确定性的消除,而不是直接以人力消除。随机不确定性的程度能够用以比特为单位的信息熵来描述。
然而,在基础教育阶段,不确定性被“消除”的实际工作过程,往往在教学过程中被忽略了。比如,通过计算信息增益来实施分类,是以决策树的方法实現分类的理论基础,但在信息技术教学的基础模块部分,当提及信息概念时,并没有再进一步提及信息增益相关内容,于是,就错失了通向人工智能中决策树分类问题的一个重要的引导性内容。何以如此?笔者猜测,恐怕是因为信息论中的数学公式的推导和计算会对学生的理解造成比较大的困难。但经过研究和实际教学验证,笔者发现,还是存在可行的教学方案,在人工智能教学中回避较为艰深的数学公式的推导和计算过程,而将重点放在不确定性消除过程中数学公式的应用上。
考虑小馨喝咖啡的例子,假设未来的事件只有两类,即“喝”与“不喝”,如果小馨总是选择“喝”,那么就根本不存在不确定性,则信息熵为0,如果小馨总是选择“不喝”,信息熵同样为0。假如“喝”与“不喝”的决策是一半对一半,则信息熵是1(至少需要一位二进制数字来存储两类不同的决定)。考虑一下,若小馨的选择有四种情况,即“不喝”“喝一杯”“喝两杯”“喝三杯”,则信息熵是2(至少需要两位二进制数字来存储四类不同的决定)。如果可选择的类别是N,而以比特为单位的信息熵是X,则2的X次方等于N,换成对数公式就是X=log2N。这是整个教学过程中很关键(也可能是唯一)的数学公式,这个公式也是高中数学中会学习到的内容,学生理解起来难度并不大。
如图1所示,将小馨是否喝咖啡的两选一决策与信息熵的关系标注到坐标上,可发现三处特别的位置。三个坐标点处在非零即一的整数位上,然而这就引出了一个新的问题:如果两类决定出现概率不均等,那么应该如何计算信息熵呢?直观上就可以猜测出,经过三个整数点的函数图形最可能是一条弧线,并且函数图形必然与对数函数密切相关。
● 事件概率不均等时的信息熵计算
就算是只考虑“喝”与“不喝”两类决定,但若是这两类决定出现概率不均等,那么应该如何计算信息熵呢?在这里,混杂了概率计算的信息熵公式必然会成为教学过程中较难逾越的深堑。但要记住的是,在信息技术教学中,数学公式是应用工具,在分析不确定性的消除的整个过程中,这个工具很好地展现了运算的结果,而公式本身的推导和计算过程并不是教学重点。
笔者制作了一个简单的小程序,对于小馨喝咖啡的行为,只要将“喝”与“不喝”两类选择各自的次数输入到程序中(为了使教学过程简洁明了,这里只考虑两类决策,而不考虑更多类决策的情况),即可得到该情况所对应的信息熵的值。学生还可以用二分类的信息熵图表,直观地感受到信息熵的变化规律,如图2所示。
实现绘图的关键公式是:
y = -1 * ( x / 1 * (Log(x) / Log(2)) + (1 - x) / 1 * (Log(1 - x) / Log(2)) )
当X取值为1/2的时候(即两类不同决定概率均等),则计算结果为1;公式不能将X取值为0或1,但可以无限接近0或1。
在教学中,可告知学生计算结果由此公式而来,但公式的推导过程,则是数学课的任务了。学生在后续的学习过程中,可以直接调用公式,或者使用内置公式的小程序来进行计算。
● 手工决策过程
回到一开始的问题:如果小馨同学晚上走进咖啡屋,那里只提供冰的淡咖啡,那么她更有可能喝咖啡,还是不喝?这个问题并没有一定的答案,因为小馨的行为完全是自由的。问题的关键是,机器应该以什么样的方式去做出一个合理的预测。如果从信息熵的角度出发,这个问题就转换为:当以哪一个属性作为分类依据时,可以使得不确定性(信息熵)减少的程度最大?这个问题便和信息增益有关。
若以温度作为分类依据,那么可列表如下:
温度 是否喝咖啡
1)
热 喝
热 喝
热 不喝
热 不喝
2)
冰 不喝
冰 喝
供应热咖啡时,不同决定的比例是对半开,选择冰咖啡时,不同决定的比例还是对半开,即便不进行计算,也可以直观地知道,信息熵没有减少。
若以味道作为分类依据,那么可列表如下:
味道 是否喝咖啡
1)
甜 喝
甜 不喝
甜 不喝
2)
淡 喝
淡 不喝
淡 喝
无论是对甜咖啡还是淡咖啡,不同决定的比例都是1比2,或2比1,这两种情况,计算出的信息熵结果都是0.918,这个数字可直接查阅二分类信息熵图表或二分类信息熵小程序获得。
若以时间为分类依据,那么可列表如下:
时间 是否喝咖啡
1)
早 喝
早 喝
早 喝
2)
晚 不喝
晚 不喝
晚 不喝
早上的决定完全一致,晚上的决定也完全一致,则说明信息熵为0。到这里,即便不查表就已经很清楚了,是否喝咖啡,时间可能是最重要的决策依据。机器便可以此为依据,做出判断,认为小馨不会在晚上喝冰的淡咖啡。
本文提供的数据很简单,没有考虑到采样不平衡的情况,比如,小严同学更多是在早上做记录,而比较少在晚上做记录;或者咖啡店更多提供的是热咖啡,而较少提供冰咖啡。使用加权平均,就可以方便地解决此问题,如对于以下记录数据:
时间 是否喝咖啡
1)
早 喝
早 喝
早 喝
早 不喝
2)
晚 喝
晚 不喝
晚 不喝
信息熵的計算公式就是:4/7*(1比3情况的信息熵)+3/7*(1比2情况的信息熵);查对二分类信息熵图表可知信息熵为:4/7*0.918+3/7*0.811。这一部分工作可由学生亲自手工进行,一方面由此了解到机器根据信息熵的计算而进行分类的过程,另一方面也可让学生在学习过程中增加参与感。
关于小馨喝咖啡的例子分析到这里时,信息增益和决策树的概念已经呼之欲出了,人工智能教学中的许多内容和信息技术教学基础模块中的内容,是有着紧密的联系的。在基础模块的教学中,部分内容只要再稍微深入一点,就可以和人工智能的教学内容无缝对接。笔者认为,在课时及学生知识技能水平有限的情况下,教师在进行人工智能教学时,优先选择的教学内容应该具有这样的特点:在教学过程中涉及的知识和技能,最好在信息技术教学基础模块或算法模块中已有所铺垫;在通向某个具体人工智能教学目标的过程中,能够找出一条任务需求明确、进阶平缓、逻辑清晰连贯的路径;在教学过程中,既要能回避艰深的数学推导证明过程,又要能彰显出数学工具在解决问题中的作用。