基于深度置信神经网络的组卷难度预测

2018-10-31 05:46许荣斌
韶关学院学报 2018年9期
关键词:程序设计语句文档

谢 莹,许荣斌

(安徽大学 计算机科学与技术学院,安徽 合肥230601)

目前高校的各理工科专业本科应用型人才培养体系中,程序设计能力是应用型人才培养的重要目标.在程序设计实践教学中,考试是检验学生能力和教学效果最为有效的手段,其重要性不言而喻.健全公平公正的考试制度,发挥考试的评价功能,实现最终的教学目标,是人才培养过程中需要研究和探讨的重要课题.在高校多年来进行的程序设计考试中,教师应该在每一批考试前选择难度具有稳定性的试卷来保证考试的公平性[1-3].近年来试卷难度的评价方法引起了很多学者的注意.

试卷及试题难度定义为某试题回答错误的考生占到全部考生的比例.研究发现,试题的难度信息在组卷前是不容易被直接观测到的,传统的方法是由教师进行人工估计.那么,由于教师估计存在很大的主观性,而且当试题量大的时候人力工作的效能也会下降,得到的难度估计值也会有较大偏差.所以,设计一种自动且高正确率的试题难度预测算法是当前迫切需要解决的工作.以多年的程序设计测试历程看,现存的自动化阅卷系统已经可以采集到丰富的测试记录,学生的测试日志以及试题的文本素材,这些信息将有助于工作人员设计试题难度预测 (Test Difficulty Prediction)工作.例如,一项程序设计测试题包含两个问题,每个问题包含了对应的文档(Test Content),试题(Test Question)和选项(Test Option).

测试题中的文本理解如自然语言理解(NLP)的相关研究有了一定的进展.但这些研究成果无法直接应用在试题难度预测工作上,主要原因如下:①程序设计测试题中的文本素材(如文档,试题和选项)需要从语义的角度来理解和表示;②不同的题干包含的文本不同,需要研究题干所对应文本的重要性程度.

为了更好地解决这些问题,笔者提出一种基于注意力机制的深度置信网络Attention Deep Belief Neu ral Network(ADBN)框架,这个框架可以在具备学生往年测试日志和题干前提下,构建模型用以自动预测试题难度.框架采用一个基于DBN的神经网络结构来表示试题的语义表示,再通过使用注意力机制训练ADBN框架进而预测到每一项新试题的难度值.新框架在大规模试题数据集上进行了丰富的实验,验证了其有效性.该框架为程序设计课程试题难度预测工作提出了一套基于历史数据、注意力机制驱动的解决方案,保证了组卷难度的稳定性,有助于更好地建立程序设计课程公平公正的考试制度.

1 基于注意力机制的深度置信神经网络介绍

首先阐述程序设计试题难度预测任务的具体工作,其次分析模型的具体组成部分,提出基于试题相关度的训练策略来帮助提高预测的准确率.

1.1 工作流程

指定程序设计测试问题集合,其中包含试题Qi文档、问题和选项.每一项试题具有对应的难度值,训练集中的难度值Pi∈[0,1]从历年的测试日志中获得.试题难度预测工作的目标是依据试题Qi的属性训练出预测模型ADBN.当再有新试题需要用以组卷时,ADBN模型将对新试题进行难度估计,使得每次组卷时都能够控制试卷的整体难度,保持试卷难度稳定.

程序设计试题难度预测的整体流程主要分为:训练和测试.在训练部分中,给定考生的历年测试日志,提出ADBN来理解和表示问题Qi对应的文本素材难度P~i,再提出试题相似度策略用以训练ADBN,使试卷中试题的难度分布较为合理.在测试部分,ADBN模型可以针对拟采用的试题计算难度值.

1.2 ADBN组成部分

笔者将详细阐述ADBN的组成部分和技术细节.ADBN主要包含4个部分(见图1):输入层、语义DBN层、注意力获取层和预测层.其中语义DBN层和注意力获取层是最重要的两个部分,前者主要是从语义角度学习问题的文本素材;后者则通过度量问题文本的相似度来学习对应问题的注意力表示.

图1 ADBN整体框架图

(1)输入层.将问题 Qi的文本输入到 ADBN 的输入层,包含有文档(TGi),问题(TQi)以及对应选项(TOi).TCi为语句序列,TCi={S1,S1…,SM},其中M是序列的长度.TQi和TOi的每一个选项都为独立语句.每一个语句由一系列词s组成,s={w1,w1…,wN},其中wi∈Rd0,wi由d0维词嵌入来进行初始化工作,这些词嵌入都是预训练过的内容.N是句子的长度.文档则由张量TCi∈RM×N×d0表示,问题 TQi及 TOi的选项构成矩阵 s∈RN×d0.

(2)语义表示DBN层.第二层为语义DBN层,目的在于从词的角度学习语义表示.笔者选择基于DBN的结构来表示语句,主要考虑到几点:①考生一般通过局部关键字来获取题干信息,DBN结构比较适合用来获取局部语义信息;②DBN可以获取词之间的连接,并可以得到语义的深度表示;③与其他深度学习结构相比,DBN提高了训练过程中的信息提取,进而提升预测模型的兼容度.

语义表示DBN层是传统DBN的改进,在实际工作中可以独立训练每一层RBM网络结构,确保特征向量映射到不同特征空间时尽可能多地提取特征.假设语句矩阵输入s∈RN×d0,s={w1,w1…,wN},得到第一批新的隐层语句,如

其中b∈Rd,d是输出维度.σ(x)是非线性激活函数tan.随着不断地得到隐层语句,连续的k个词就可以构成局部的语义表示.将序列¯hcp中的特征融合入新的全局隐层序列,如接着,得到全局集成词,从而形成一个句子,得到向量化的表示为语句表示DBN层的输出维度.到目前为止,文档就转换为了矩阵TCi∈RM×d1,这个矩阵含有M个句子的表示信息.问题题干TQi和TOi每一个选项的文本都是语义向量s∈Rd1.

(3)注意力表示层.在从语义DBN层中获得语义表示后,注意力层的主要目的在于针对每一个问题题干来检测难度注意力表示,需要针对某一具体问题的相似度来度量文本素材,进而学习问题的注意力表示.

注意力表示由向量进行建模,通过加权文档和选项角度表示语句.对某一问题Qi,文档的注意力向量DAi可表示为:

与文档注意力向量DAi相似,针对问题Qj的选项注意力向量OAi建模如方程(1)所示.注意力分值αj使得ADBN以高分提取语句作为具体问题的信息.后面的实验部分将针对某一具体问题的注意力结果进行深度分析.

(4)预测层.最后一层为预测层,预测层的目的在于预测问题Qi的难度Pi,而已有的信息包括文档注意力DAi,选项注意力OAi以及语句表示.实验中,首先通过连结操作将它们聚合,接着执行传统的全联接网络来学习Oi的整体难度表示,最后通过逻辑函数预测难度P¯i(其中W1,b1,W2,b2为网络参数):

试题相似度目标方程:首先建构试题相似度的训练元组{(Ti,Qi,Qj)}.目标方程转换为相似度目标方程:

其中Pi和Pj表示为问题Qi和QJ在问题Qi中的真实难度.至此,得到ADBN模型直接最小化方程J.

接着,训练后的模型M可以对新来的试题预测难度.估计完新试卷中问题的难度后,就可确定这份试卷是否可以投入到正规测试中去.

2 实验验证

2.1 实验准备

(1)数据集描述.实验数据集包含了10多万的历史测试日志.实验采用word2vec工具在输入层中执行单词映射工作,维度设为 100[4].

(2)ADBN设置.考虑到大约90%以上的文档包含有少于20个语句和30个词,所以本实验设置文档句子的最大长度M=20,词的最大长度N=30.映射到四层神经网络上的维度为(100,200,400,600).

(3)训练过程设置.采用随机初始化的方法初始化所有网络层核向量参数,使得它们都在之间,其中nin和nout是相对应神经网络的输入和输出特征大小[5].在训练时设置最小batch为24,并设置概率阈值0.3的dropout来防止过拟合.

(4)对比方法.采取 CRBMs[6]、SDBN[7]和传统 DBN[8]作为对比方法.ADBN 和对比方法都在 Tensorflow下执行,系统实验在GeForce GTX 1070 Ti,1 683/8 000 MHz 8 GB/256 Bit GDDR5 PCI-E GPU下执行.

(5)评价方法.为了测试ADBN的性能,实验采用常见的均方根误差 (RMSE)来计算试题难度预测精度.本项工作也借鉴了教育心理学的相关测量方法.在教育心理学中,对某试卷而言,真实难度和预测值相关性越高,则性能越好.实验采用了皮尔逊相关系数Person Correlation Coefficient(PCC)平均值来度量相关度性能.在实验中,RMSE越小,性能越好;PCC值越大则性能越好.

2.2 实验结果

(1)试题难度预测结果.为了观测新方法在不同数据稀疏度下的性能,实验随机选取了数据集的60%,40%,20%,10%作为测试集合,余下部分作为训练集.为了预防过拟合,实验去除了训练集中相同的问题文档,保证测试集和训练集中都具备不同的问题.

表1展示了新方法和对比方法的试题难度预测任务实验结果,通过使用注意力机制来度量文本相似度(RMSE越小越好),可以看出ADBN效果最好.

表1 试题难度(RMSE指标)

(2)与教师人工标注比较.为了进一步展示ADBN的性能,实验选择了10份标准测试并邀请5位教师专家来人工处理程序设计试题.每一份试卷包含36个试题.教师作答并标注难度值.将教师标注的的预测值平均后记为TeAvg,得到6个教师标注值(5位教师标注值+1份平均标注值).根据教育学原理,实验使用PCC来获得预测难度和实际难度的相关性,结果见表2.

表2 ADBN与教师标注结果比较(PCC指标)

ADBN在大多数情况下比教师标注效果要好,这意味着ADBN的预测结果是和实际较为符合的.同时也可以看到教师标注的难度值稳定性不够.比如,存在有教师做试题难度预测任务做得很好,但是其他教师没做出来,主要原因是教师进行难度标注的时候比较主观,不容易保持连续的注意力,容易出错.

3 结语

本文提出一种基于注意力机制的深度置信网络(Attention Deep Belief Network)方法,此方法用来解决程序设计测试试题难度自动预测问题.文章首先设计了一种基于深度置信网络架构,研究测试问题的语义表示;接着用注意力机制度量测试问题的难度;最后提出相似度策略来训练ADBN,并生成预测难度值.新框架在10万条程序设计测试日志上进行了相关实验,并采用常见的RMSE和教育心理学中常用的PCC指标进行验证.实验结果表明,新模型在有效性和可解释性方面效果显著.

猜你喜欢
程序设计语句文档
浅谈Matlab与Word文档的应用接口
有人一声不吭向你扔了个文档
重点:语句衔接
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
基于RI码计算的Word复制文档鉴别
高职高专院校C语言程序设计教学改革探索
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
PLC梯形图程序设计技巧及应用
如何搞定语句衔接题