有的人会有疑问,机器可以做自动解题吗?我想说自动解题不仅可以做,而且可以做的更好。

学霸君首席科学家陈锐锋:如何做一个高考机器人?

2017-06-23 11:47:10发布     来源:多知网    作者:初骊禹  

  多知网6月23日消息,从月初到现在,高考话题一直热度不减。今年参加高考并考得134分的学霸君智能教育机器人,也在持续受到关注。智能教育机器人是怎样完成整个答题过程的?在这个机器人背后,学霸君构建了一个怎样的数据分析处理系统?

  本次,多知网邀请到学霸君首席科学家陈锐锋做客多知网第十二期OpenTalk“当教育遭遇AI,将带来哪些颠覆性的变革”活动,在活动上他针对以上问题进行了讲述和解答。

  以下为陈锐锋的分享(经多知网编辑):

  有的人会有疑问,机器可以做自动解题吗?我想说自动解题不仅可以做,而且可以做的更好。如果我们进入这个领域更长时间,能做出更好的东西。因为所有的信息全部蕴含在数据里面,这次就是我们在过去四年,观测数据、分析数据所积累的东西。

  今天分享主要有两个内容。首先说动机,我们的数据智能是什么样子,为啥要做数据智能,第二说路径,有动机有路径,就形成一个完整的我们做这个东西的描述。我是做运筹学出身的,我的一个观点是学习到后面不仅仅是智能重要,它的优化同样非常重要。

  打地基:用拍照搜题建立高考数学知识点数据库

  这是我们以前做的关于芯片制作的系统简化模型,芯片的制作有几个环节,首先要熔化硅的原材料,成型、冷却、做质量检测、切片再做质量检测,再做打磨,才可以看到原始的芯片。这里面有几个环节是质量检测,我们在教育里面也发现有同样的问题。

  每一次处理,如果带着一点点缺陷,会导致它下一部分缺陷的累计。如果是把每一个知识点的学习当成是一次装配的过程,我们可以把整个学习过程当成是一个很长的组装过程。直线与直线平面的关系、平面与平面的关系、旋转体、多面体,可以看到这是立体几何几个关联知识点的前后关系。

  我们学习的时候会从最简单的学起,第一个课程掌握了80%左右知识点的情况下,有20%要累计到下一个知识点,直线与平面又有20%产生知识的空缺,不断累计下来,第三、第四、第五节课开始有些同学跟不上,这就是学习缺陷的累计。

  如果有比较好的机制在每个知识点的学习加一次检测,并且能把这些量化、固化、指标化,我们可以用这个东西帮学生去补漏。他做题,到底是直线与直线的题目不懂,还是直线与平面的题目不懂,这是我们围绕数据做的自适应学习方面的工作。

  怎么样检测每个知识点需要做哪些题?这就需要有比较深入的分析。我们在早期开始做学霸君拍照搜题的时候,用的是识别+搜索,很多的问题是通过搜索去进行分析。一道题目和另外一道题目相近,这两道题包含着相似的词,但是相似题推荐完全不够,因为我们在后来的实践中发现,有很多情况下,两道题用完全不一样的字,考的是同样的内容。

  这就要去更深度地挖掘,做深度挖掘的第一个非常重要的媒介是拍照搜题。拍照搜题是收集学生不懂题目的数据的自发性通道,早期设计这个产品时候,我们想去捕捉学生不懂不会的题目,最后用的是拍照搜题的方案。如果学生非常懂一道题,他不会花费一分钟去拍个照搜一个,他如果去搜基本上表明这个学生对这道题能力的缺失。

  学霸君里面捕捉了每个学生带问号的题目,带感叹号、他懂的就不会捕捉,捕捉过来之后就形成了比较大的题目库。我们现在有80亿次学生访问,8000万道题目。这些题目变成做自适应学习、自适应分析的基础。

  这是我们在进校产品里用的自适应学习引擎。它的工作原理,分为三大块。第一是条件反应理论,即所有题目只要有人做过或者有数据沉淀,我们就可以对题目进行难度的划线,每道题难度的曲线是从0到1的分布。

  我们可以对每个学生做题的对错进行分析,并且根据他的数据库,预测他在下一题的表现。据统计,目前我们可以预测出学生做对做错一道题的精准度是70%。

  建路径:在高考数学有限集内建立知识图谱和行为图谱

  接下来是知识图谱,它经历了两个层面的演变。首先是树状结构,大家可以看到经常出现三层树状结构。两、三年前我们开始往下钻一层,到四层的树状结构,这是为了更精细地对题目进行打标签,随着我们产品继续往前推,发现四层的知识点结构还是不够。因为有些题目就是蕴藏在更下一层里面,我们在知识图谱里面又往下放一层,这时候我们可以做自动解题。

  这时候我们可以把题目一道一道猜出来,我们把8000万题目里面的数学那部分做处理,之后进行文本的分词、分句,把接近的题目题干做相应的排序,排序后,会发现非常典型的数据现象开始出来,题目都是有套路的。

  当把每一类型题的所有题目放在一块,你从这个维度去看,会发现依据相应的题目模式,有些时侯看数字就可以把题做出来,这就说明自动解题是有章可寻的。解题步骤序列化挖掘为解题提供了非常重要的基础。

  这里面有一个非常重要的逻辑,我们说的知识图谱不是广谱。如果要做自动解题,要沉淀一个足够量的题库,并能够高频次覆盖中国90%多的出题模式。

  当我们把题目的难度曲线、学生行为的序列和知识图谱结合起来的时候,就可以根据每个学生所做的作业情况做相应的推荐。我们推题非常重要的原则不是碾压学生,也不是总是让他得到胜利的喜悦,而是会推将将会、将将不会的题目。

  大家觉得可能认为推题是非常主观的判断,但是一旦你可以分析出一道题里面蕴含哪些知识点,一道题和另外的题有哪些关联,这就变成可工程化的问题,所有东西可以用数据去表达。

  学生做作业、跟另外一个同学的关联,学生和班级的关联,这个班级和另外一个班级的关联,这个学校处于什么城市,处于上海还是北京,还是三线城市,他们的数据如果用起来,能够极大帮助这个推荐引擎固化,针对当地的学习具体需求去和学生做学习的互动。

  我受一些同行的启发,开始意识到一开始我们思考的时候是停留于上面的知识网络,比如解题更多是知识网络的事情。但我在分析一个班级的情况时,会停留在社会网络,比如行为数据。这样的数据也变成自动解题非常特殊的数据。

  接下来给大家看一套我们的系统,用点阵笔搜集学生的作业数据,把每一个答案、每一个细节都记录下来,搜集大量的班级数据,就形成一个班级的图谱,这是社会图谱里面的,所有的数据不断记录下来,这是非常特殊的数据资产,这是我们传统做题库没有积累的,因为是跟行为所关联的。

  我们随便拿某位同学的题目中的一道题目,你会发现这位同学做的题目,另外一个同学在做,拿出另外一个题目,也有这样的关联。如果看所有班级的数据,会发现一个非常有意思的现象,一道题我们记录了这个班级50个人做这道题的解题过程样本。每个人可以从不同维度去描述这道题怎么解,每个逻辑之间怎么跳变。之前这部分数据没有充分利用,我们做分析的时候,如果把这部分数据利用起来,它可以加强解题的套路和模式。

  得结果:将试卷翻译为机器语言、搜索并转为自然语言输出

  我给大家讲一下自动解题的技术过程,以2016年高考第一道题为例,首先把题目拆出来、拉成列,每个文字变成一个输入值。第二步我们来做一个序列状的神经网络模型,通过这个模型将试卷中使用的语言翻译成另外一种机器能够看得懂的语言。

  比如,一道题拆成三个部分,一个是句法解析,实际上就是主语、谓语、宾语,还有他们之间的关联,这是传统NLP可以做的事情,但这还不足以解题。第二步是把算式挖出来,这是通过算式的一些规律,可以去挖出来。第三步是提取出它的SVO结构,我们叫做主谓宾的结构。比如说,三角形的一边为5,这个SVO结构是一边是5,对于机器来说就可以理解。

  于是,我们把这道题的条件变成基础的条件。然后在一个比较大的数据系统里面记录了各种运算网络,求面积、求它的虚部、求它的实部,求截面描述的片断等等。通过这样的条件搜索,你可以发现它会找出一条最终可行的解题路径。从一开始的条件一步一步跳到答案,这个就是整体关键的步骤。

  有了这个之后我们接下来另外一步,是把这些关键的步骤从机器可理解的语言转换成自然语言,这步相对比较简单,每个基础的运算都有相应的描述方式,这道题第一步怎么做,第二步怎么做,再重新翻译一下就可以了。做图形题也是类似的过程。

  所有的题目就是一个找出最佳解题路径的过程。我们记录大量学生解题时每步之间的跳转,只要能够洞悉或者理解每步之间的运算,这是有大量的信息的。这样就知道遇到某道题你要调用什么样的方式去解。

  为了做这样的东西,我们做了手写识别。现在每天所发送上来的样本在被我们做数据的标注,做了数据的标注之后扔到系统会训练出更好的识别模型,不断去识别每一个答案跟每一步是什么样子。有一些现在没法识别,有些可以转化出来处理,根据题目的难度有不同的处理方式。

  融合到系统里面就可以发现根据每个学生做题的不同记录,我们可以给他制定一套学习方案。用的是基于解题逻辑和更深层次自然语言逻辑处理进行的题目推送,每道题根据这个同学的答案进行推送。甚至加入艾宾浩斯记忆曲线,学生做完这个知识点,后一个星期他要再复习一下,所有这些东西就是用数据去完成的一套系统。(多知网 初骊禹)