引言
人工智能是最近几年比较热门的话题,特别在AlphaGo战胜了几位世界级围棋选手,人工智能在有限规则游戏中的表现超过了大家的预料,人们对其关注大大增加。如果说人工智能在汽车领域上的应用是自动驾驶,那么在教育行业的应用就是自适应学习了。
自适应学习,通俗的说,就是“因材施教”,所以这个系统的最终目的就是成为一个能够根据学生个性、能力、环境等各种因素进行教育的“虚拟老师”。当然,现有的自适应学习系统还远远达不到这个要求。
目前,在这个行业比较出名的有:
- 自适应学习行业的开山鼻祖——08年成立的美国Knewton公司,完成了F轮融资,总额约2亿美金,在13年实现盈利
- 国内呼声比较高的乂学教育,目前知道的是获得了1.2亿(RMB)融资
- 其他还有新东方在线、优答、爱学堂、学吧课堂等
这个行业现在刚刚起步没多久,行业内鱼龙混杂,很多宣称自己应用自适应学习系统,实现了个性化教育,实际上都十分有限。同时,受到技术和理论上的限制,自适应学习并不完善,还有很长一段路要走。学习报告和试题推荐是自适应学习的一部分,我主要介绍现在主流的模型和算法,并谈谈我对搭建试题推荐系统的看法。
认知诊断模型
首先面临的第一个问题就是,如何根据测试结果去评价学生的知识点掌握程度。在认知心理学中,认知诊断模型可以较好地从知识点层面对学生的认知状态进行建模,并在学生矫正计划、学习退学预警等应用中取得了良好的效果[1]。常见的认知诊断模型有项目反应理论(Item Response Theory, IRT)和DINA模型(Deterministic Inputs, Noisy “And” gate model)。
IRT
$$P(\theta) =c+\frac{1-c}{1+e^{-Da(\theta-b)}}$$
这是一个三参数的IRT模型,$D$ 是常数。根据模型所绘制出的曲线也叫做项目特征曲线(Item Characteristic Curve, ICC)。其意义在于描述出“成功解答某一特定考试项目的可能性”和“被测试者能力”(在函数中以 $\theta$ 表示)之间的关系。
在模型中,共有3个参数:$a$,$b$ 和 $c$。其中参数 $c$ 一般被称为“猜测参数”(guessing parameter)或者“伪猜测参数”(pseudo-guessing parameter)。在图像上,$c$ 所代表的是ICC的下限,其直观意义为:当一个被测试者的能力值非常低(比如接近负无穷),但是他仍然能够有可能做对这道题目的概率 $c$ 就是他猜测的能力,例如4选项的单选题,$c$ 为0.25。
$b$ 叫做项目难度参数,也称为项目难度(item difficulty)。$b$ 一般表示在ICC图像最陡的那一点所对应的 $\theta$ 值。改变 $b$ 会导致ICC的左右移动,但是不改变其形状。当 $b$ 值增加,会使ICC曲线向右移动($\theta$ 值高的的方向),这会引起在即使 $\theta$ 保持不变,但是答题正确率下降,亦即题目难度增加。反之当 $b$ 值减小,ICC曲线向左移动,题目难度降低。
$a$ 叫做区分度参数或项目区分度(item discrimination)。在数学上,$a(1-c)/4$ 的值是ICC曲线拐点处的斜率,即斜率的最大值。在这一点上,能力值微小的改变会造成最大的 $P$ 值(回答正确率)变动。所以 $a$ 体现的是该项目的最大区分度。 当 $a$ 比较大时,要么会做,要么肯定不会做,不存在中间地带[2]。
以IRT为基础,发展不少模型。比如,线性逻辑斯谛克特质模(1inear logistic trait model, LLTM)、多成分潜在特质模型(muhieomponent latent trait model, MLTM)及拓广多成分潜在特质模型(general muhicomponent latent trait model, GLTM)。以及随着后来在线学习的兴起的知识追踪(Knowledge Tracing)。 知识追踪(Knowledge Tracing)希望通过对学习者过往练习的结果分析其当前对一些概念的掌握程度。知识追踪任务可以形式化为一个有监督的序列学习问题:即给定学习者过去的练习记录 $X={x_{1},x_{2},\cdots,x_{t-1}}$,预测学习者对一个新的练习回答正确的概率,即$p(r_{t} =1|q_{t},\,X)$。典型的知识追踪方法有:Bayesian Knowledge Tracing(BKT) 和 Deep Knowledge Tracing(DKT)。
这些最初始的模型都没有考虑题目对应多个知识点的问题,实际考试中,往往一个试题对应多个知识点。后续很多再次开发的模型都融入了 $Q$ 矩阵。
$Q$ 矩阵
Questions | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
Concept1 | 1 | 0 | 0 | 1 | 1 |
Concept2 | 0 | 1 | 1 | 1 | 0 |
$Q$ 矩阵主要就是为了解决一个试题对应多个知识点的问题,它是一个题目与知识点的对应矩阵。上表是一个知识点与试题的简单对应关系,其中的值可以是离散的0和1,也可以是0~1之间的概率。搭建 $Q$ 矩阵是一个非常庞大的工程量,同时也是非常重要的一环,它关系到所用的模型效果。如果 $Q$ 矩阵没有没有准确搭建,后续预测和估计准确度会受很大影响。
DINA
DINA属于潜在分类模型,这类模型的目的在于按照被试的得分模式找到被试在潜在特质上质的差异,
根据这样的差异对被试进行分类,属于这类模型的还有:Tatsuoka等提出的规则空间模型(rule space model, RSM)、新发展起来的融合模型(fusion model, FM)、NIDA模型(noisy inputs; deterministic “and” gate model)及贝叶斯网络(bayesian network, BN)等。DINA能够比较好应用 $Q$ 矩阵进行模型搭建和预测。
$$
P(X_{ij}\;|\;\xi_{ij})=(1-s_{j})^{\xi_{ij}}g_{j}^{1-\xi_{ij}},\;\text{其中}\;\xi_{ij}=\prod^{K}_{k=1}\alpha^{q_{jk}}_{ik}
$$
表达式中,$P(X_{ij}\;|\;\xi_{ij})$ 表示被试者 $i$ 答对项目 $j$ 的概率; $\xi_{ij}$ 为被试者 $i$ 对作答项目 $j$ 所需知识的掌握程度,$\alpha_{ik}$ 是被试者 $i$ 掌握知识点的情况,$q_{jk}$ 是项目 $j$ 要求掌握的知识点情况,如果被试者 $i$ 掌握了答对项目 $j$ 所需要的所有知识,则 $\xi_{ij}=1$,反之,$\xi_{ij}=1$;$s_{j}$ 为失误参数,表示被试者掌握了答对项目 $j$ 所要求的属性模式,却错答了项目 $j$ 的概率; $g_{j}$ 为猜测参数,表示被试者未掌握答对项目 $j$ 所要求的属性模式,却答对了项目 $j$ 的概率。由此可见,该模型把学生分成两类:一类掌握了正确作答该项目所需的全部属性,另一类至少有一个必需的属性未掌握。因此,DINA模型是一个连续、非补偿模型,其核心思想在于其假定考生在解题时,如果缺少解答这一题所必需的任一个属性,该题的答对概率就低,即使答对了该项目也只是由于猜测[3]。比如,$5\times6+10$ 要求学生掌握乘法和加法,无论缺少哪一种,学生答对的概率都很低。DINA模型仅涉及“失误”和“猜测”两参数,实现了对认知诊断模型的简化,参数易于识别。后续模型发展对其多有借鉴。
知识图谱
除了上述问题外,还要考虑一个更加深层的问题——知识点间的相互关联。根据知识点间的关系,构建知识图谱,这也是一个非常庞大的工程。
不同于章节数的包含结构,知识点间的关系远比章节数复杂的多。有的知识点是对过去知识点的丰富,有的知识点却要将之前建立的知识结构推翻重来,建立新的结构。这产生了很多问题。学习了新的知识点,有可能加强了之前的知识点,也有可能没有强化,反而使学生更加困惑,比如容易混淆的知识点。例如,英语中各种词语和语法的用法,初学者很容易糊涂。
同时构建这样一个知识图谱,也可以给后续学生的推荐更加有针对性。根据学生当前的表现情况,生成个人学习报告,联系知识图谱,为其规划下一步的学习路径,实现“因材施教”。
知识图谱也能有效的减少学生试题测试数。要对学生进行个人学习报告分析,首先要了解学生对知识点的掌握情况。以一门学科500个知识点来算,一个知识点1道题,我们至少需要500道题来检测学生,假设答每道题需要5秒钟,答完所有题目也需要41.67分钟,估计没有几个学生能做完所有题目。这显然不是很合理。而联系知识图谱,在每答一道题后,根据已答题目的知识点,推荐下一知识点,寻找覆盖主要知识点的最优路径。例如,数学四则运算,先测乘法,错了就测试加法,对了就测试除法。当然,我们在建模的时候可能不会如此的简单,通过与知识图谱的联系,在答题量和准确度之间进行权衡,最终目的就是想答最少的题目得到最精准的测量。
时间趋势
时间也是要考虑的另一因素,前面所提到了BKT和DKT就有涉及到时间,前后知识点的关联也与时间有关。学生的学习行为是时间线上的行为。学生过去学习的知识点,可能会随着时间渐渐遗忘,也可能在这一段时间内不断学习巩固,加强了对其的理解。比如,一学生已经做了100道题,答对50道,能够直接判断学生的能力就为0.5吗?显然不合适。他可能以前错的比较多,50道题对了10道,后面错的比较少,50道题对了40道。这需要建立一个时间窗口,给予近期时间内事件更高的权重,比较久远时间的事件更少权重,模拟学生的“遗忘”行为。
在模拟遗忘的同时,要利用遗忘的规律,找到学生最佳的复习时间,在这个时间内,给学生推荐相关试题和知识点。SuperMemo是比较有名复习算法,早期是开源的,近十年的算法已经不公开了。现在市面不少的英语单词学习软件都加入这样的复习算法。
建议与展望
建立试题推荐系统虽然比自适应系统要小一些,但仍然不是一个简单的工程,它取决于对系统精度的要求。要求越是精细,系统越是复杂。它也不仅仅是搭建一个数据模型,需要考虑方方面面。
- 数据采集:越是复杂精细,越是要求采集更加精细和多维的数据。
- 模型搭建:模型要尽可能容纳更多更精细的信息,很好的稳定性,庞大的计算量保证能够大量数据的访问和冲击,最重要的是能够对学生有很好的预测能力
- 知识点:知识点细分粒度,精细的模型,会要求知识点细分粒度达到纳米级;知识图谱的搭建,越是详细的图谱,越会适应精细的系统。
- $Q$ 矩阵:$Q$ 矩阵搭建的准确度能够很大程度上影响模型准确度。
考虑的东西越多,搭建系统时花费的时间和资本就越多,但是提升的程度不一定和投入资本同比增加。所以需要在资金和时间的投入与模型最终效果间进行衡量,找到最优的平衡点。同时也要考虑到实际业务上的需要,如果业务上不需要对模型提出高精度的要求,那就只用搭建一个简单模型就可以了。如果花了大力气去研发了一套系统,而不能给实际业务创造收益,那即使这套模型有很好的精度和效果,也是白费力气,没有真正产生价值。模型的实际用途决定了投入资本的上限。不同模型各有特色和适应场景,现有的条件(时间、资金、数据等等)也会对模型选择有一定影响。
最后在展望一下自适应系统的未来。引言提到,自适应系统最终目的就是要成为“虚拟老师”。这需要在对目前的知识点进一步细分,知识图谱进行完善,但最终会反馈为对人工智能的进一步要求——人工智能理解自然语言。自然语言和机器语言有很大差异,自然语言语义丰富,不同场景下,同一句话就可能意思不同,这很难被机器所理解。目前有很多不同的研究方向,我就说一下知识图谱的研究方向吧。很多人都学习过英语,或者其他语言,学习越是深入就会发现,你不仅仅是在学习语言,更是在学习他们的文化、历史、习俗等等,你需要对他们日常知识有所了解。这也是为什么学习一门语言最好的方式就是去当地生活,因为这样的场景下,你会快速的融入进去。所以,要想理解一门语言,你不仅仅需要知道每个字词的意思,更要有对通识的了解。所以,让机器理解也是如此,构建一个通用型知识图谱对机器理解自然语言十分关键。要想构建这样一个知识图谱实在不是件容易的事,因为这种通识不仅非常庞大,还在不断变化。在通用型知识图谱上,要想机器去理解其他专门领域的语言,就要构建领域型知识图谱。越是繁复细腻的图谱,越是能够让机器更好的理解自然语言。
通用型知识图谱至今未建立,所以在此基础上建立领域型知识图谱,形成“虚拟老师”,还有很长一段路要走。
- 1.Leighton J P,Gierl M J. Cognitive Diagnostic Assessment for Education: Theory and Applications. New York, USA: Cambridge University Press, 2007 ↩
- 2.https://en.wikipedia.org/wiki/Item_response_theory ↩
- 3.Templin J, Henson R. Measurement of psychological disorders using cognitive diagnosis models[J]. Psychological Methods, 2006, (3). ↩