Dense Passage Retrieval for Open-Domain Question Answering

模型结构

E P ( ⋅ ) E_P(·) EP()将文本映射为 d d d维向量,并用它为文档集构建索引。
E Q ( ⋅ ) E_Q(·) EQ()将问题映射为 d d d维向量,并用它检索 k k k个对应的文章。
定义相似性 s i m ( q , p ) = E Q ( q ) T E P ( p ) sim(q,p)=E_Q(q)^TE_P(p) sim(q,p)=EQ(q)TEP(p)

如何选择相似性?
实际上有很多种相似度量函数,但我们为了能够预先计算文档的表示,相似函数必须是可分解的。(可分解函数 f ( x , y ) f(x,y) f(x,y)可以表示为一些列函数的和: f ( x , y ) = ∑ i I u i ( x ) ∗ v i ( y ) f(x,y)=\sum^I_i{u_i(x)*v_i(y)} f(x,y)=iIui(x)vi(y))。
内积现在有很好的工具支持(FAISS)。
再经过实验搜索,发现内积几乎是最优解。因此确定了内积函数。

编码器 \quad 使用后两个独立的BERT模型分别表示问题编码器和文档编码器。
推理 \quad 在推理阶段用 E P E_P EP将文章编码并用FAISS建立索引。

3.2 训练

将编码器训练为一个度量函数是度量学习的范畴(参考Metric learning: A survey.),它让相关的问题-文档对具有相近的表示。记文档为在这里插入图片描述,其中q为问题,p为段落;带+表示正例,-表示负例。损失函数为
Dense Passage Retrieval for Open-Domain Question Answering_第1张图片
正负例 \quad 通常正例很容易选取,负例的选取是容易被人忽视的。好的负例对训练索引器至关重要。论文采用以下方法选择负例。

  • 随机
  • BM25
    由BM25计算而来,不包含答案但能很好匹配问题的文章。
  • Gold
    训练集中其他问题对应的文章。

实验给出的最优结果是使用batch内的gold负例和一个BM25负例。

batch内负例的计算 \quad Q Q Q P P P表示一个batch中的问题嵌入和文章嵌入。 S = Q P T S=QP^T S=QPT表示相似矩阵,每一行都是一个问题与文章集的相似性向量。这样,在矩阵元素 S ( i , j ) S_{(i,j)} S(i,j)中,当 i = j i=j i=j时为正例,否则为负例。这样可以方便处理。

实验参数

大数据上40轮,小数据集上100轮。 1 0 − 5 10^{-5} 105的学习率,Adam,预热线性调度,与0.1的dropout率。

transformers

  • DPRContextEncoder
    文档编码器。
  • DRPQuestionEncoder
    问题编码器。
  • DPRReader
    在DPR的基础上推出了一个端到端的检索、问答模型。输入问题、标题、文档,输出答案的首尾指针。

你可能感兴趣的:(论文简读,人工智能,python)