question difficulty prediction for reading problems in standard tests 笔记

Motivation

  1. 预测难度很重要,可以帮助组题等
  2. 之前的工作基本是利用专家标注,labor intensive and subjective,带有bias
  3. 大规模积累的题目文本和学生做题log为我们提供了建立一种不用人工干预的方法的机会

Challenges

  1. 如何对文本进行语义表达
  2. 对不同考试下的不同题目的难度(错答率)对比没有意义,需要找到一种方法来训练模型

Framework

框架图如下所示:
-w1295

输入

  1. 题目的文本材料,以句子为单元,句子由词组成
  2. 学生的做题log

Sentence CNN Layer

这部分是通过CNN来encode文本中的句子。CNN能从local到global的捕捉文本中的语义信息。文中采用的 wide-CNN 和 p-max pooling 结合的方式。

不是很清楚为啥采用这种CNN结构,而不是如同textCNN一样的进行2-D卷积。

CNN的操作是:

将连续k个words的embedding拼接,然后与权重矩阵相同得到新的隐层向量。

Pooling的操作是:
将连续k个word的按维度进行pool, 公式如下:

整个示意图如下,经过多个卷积层最终将sentence编码成等长的向量
-w676

Attention Layer

这一层是将阅读材料和选项中的句子表示和问题表示做attention操作,之后得到阅读材料和选项的attentive的表达。

作者的解释是同一个材料对于不同的question的应该形成不同的表达。这一步应该是来对不同句子对解答问题做的贡献进行qualify? 感觉这个解释都不是很直觉。

attention操作文中使用的是cosine函数。

Loss function

这部分是文中的一个重点。文中首先在Figure 1(b)中展示了两道题目在不同的测试中的错答率是不同的,以此说明了不同题目在不同测验下得到的难度是不具有可比性的。因此不能直接将其拿来和predict的难度做loss。

作者观察到在同一个测验下会有多个题目,而同一测验代表了同一组学生,因此同一测验下的题目难度之间是有可比性的,以此作者提出了 test-dependent pairwise 训练策略。loss function的形式如下:

通过拟合同一test下两道题目的difficulty的差值来训练网络中的参数。

实验

数据

文中提到的数据集不是公开数据集。数据描述也有冲突(log数文中提到接近300万,表格中是2800万,不知道是多打了哪一位数),可能pdf是pre-print的吧。

Embedding

用的word2vec的预训练结果,OOV则random

模型setting

Sentence sequence length 25
Word sequence length 40
Feature map 200, 400, 600, 600
Kernel size(k) 3
Pool size(p) 3, 3, 2, 1
batch size 32
dropout 0.2

Metrics

  1. RMSE
  2. degree of agreement (DOA) ??
  3. person 相关系数
  4. t-test passing ratio ??

本文还和专家标注结果进行了对比。

挑选了12个测试中的4个阅读材料16到题目,以及7位专家进行评测。

然后将模型结果以及专家标注结果分别和真值(错答率)进行计算相关系数。结果表明有的模型由于所有的专家。也说明了专家有bias