Skip to content

QANet

📅 发表于 2018/08/30
🔄 更新于 2018/08/30
👁️ 次访问
📝 0 字
0 分钟
机器阅读理解
#Self-Attention
#可分离卷积

常年SQuAD榜单排名第一的模型。QANet: Combining Local Convolution with Global Self-Attention for Reading Comprehension

论文模型

概览

机器阅读任务就不说了。这个模型的主要创新点在于

  • 卷积(可分离卷积)捕捉局部信息 (并行计算,加速)
  • Self-Attention捕捉全局信息
  • 数据扩增

一个Encoder Block主要是,其中Transformer的EncoderBlock只有Attention和FFN,没有卷积。

Input Embedding

词向量

Glove 300维,Fix;UNK词向量可以训练

字向量

  • CNN字符向量,200维,可以训练
  • 每个单词的字符最多16个
  • 对单词的16个字符的向量过卷积(可分离卷积)
  • 选择所有字符中最大的向量作为单词的最终字符向量

拼接

对词向量和字符向量拼接起来,[xw;xc]Rdw+dc。再过两层的HighwayNetwork,得到最终的单词向量表示。

Embedding Encoder

每一个Encoder块是由卷积、Self-Attention、全连接层组成,一共有4个Encoder块。输入向量维数是d=500(200+300),输出是d=128

  • 可分离卷积:kernal size=7d = 128。变成128维向量
  • Self-Attention:8头注意力,键值对注意力
  • 全连接:输出也是128
  • QANet:层归一化+残差连接:f(LayerNorm(x))+x
  • Transformer 是Add&NormLayerNorm(f(x)+x)

Attention Layer

Context: n个单词,Question:m个单词。CRn×dQRm×d

关联性矩阵

采用的是BiDAF的计算策略:

S=f(q,c)=W0[q,c,qc]Rn×m

DCN: S=CQTRn×m

Context2Query Attention

C2Q的attention weights,对行做softmax

AQ=softmax(S)Rn×m

C2Q Attention(Context)

SC=AQQRn×d

Query2Context Attention

Q2C Attention weights,对列做Softmax

AC=softmax(ST)Rm×n

Q2C Attention(Query)

SQ=ACCRm×d

Context的Coattention,参考自DCN的Coattention

CC=AQSQRn×d

最终得到两个对Context的编码

  • 普通Attention:A=SCRn×d
  • Coattention:B=CCRn×d

Model Encoder

输入是3个关于Context的矩阵信息:

  • 原始ContextCRn×d
  • Context的AttentionARn×d
  • Context的CoattentionBRn×d

每个单词的编码信息为上面三个矩阵的一个拼接:

f(w)=[c,a,ca,cb]

一个有7个Encoder-Block,每个Encoder-Block:2个卷积层、Self-Attention、FFN。其它参数和Embedding Encoder一样。

一共有3个Model-Encoder,共享所有参数。输出依次为M0,M1,M2

Output Layer

这一层是和特定任务相关的。输出各个位置作为开始和结束位置的概率:

p1=softmax(W1[M0;M1]),p2=softmax(W1[M0;M2])

目标函数

L(θ)=1NiN[log(pyi11)+log(pyi22)]
总访客数:   ·   总访问量:
PLM's Blog @ 2016 - 2025