1.一种融合多头注意力机制和相对位置编码的知识库问答方法,其特征在于:包括以下步骤:S1:对输入的自然语言进行预训练,得到300维词向量glove,作为词嵌入层;
S2:利用所述词嵌入层将给定问题集合 转换成词嵌入序列;
S3:使用引入了相对位置编码信息的TransformerEncoder模块对所述词嵌入序列进行Q编码得到问题向量H;所述引入了相对位置编码信息的TransformerEncoder模块为:在原TransformerEncoder模块中,使用的是绝对位置编码,其直接将词向量和位置向量相加作为输入,绝对位置编码计算attention score的表达式为:其中Wq,Wk分别是多头注意力给每个注意力头加的query和key参数,xi和xj表示句子中的两个词, 和 是xi和xj的词嵌入,Ui和Uj是第i个位置和第j个位置的位置向量,T表示转置矩阵;
展开后即对应的第i个词和第j个词之间的attention score表达式为:引入相对位置编码信息的TransformerEncoder模块,是将上式改写为:其中,Wk,E和Wk,R是由前面Wk矩阵生成的两组矩阵,分别代表基于内容的key向量和基于T T位置的key向量,Ri‑j表示相对位置编码,u和v 表示u和v的转置,u和v是通过学习训练得来的参数;
改写逻辑为将所有的Uj改为Ri‑j,表示对key来说将绝对位置转换成相对query的位置,T T将每个head对应的 使用与位置i无关的向量u和v来表示,u和v为可训练的参数;
S4:对候选答案集合 的三种类型信息进行编码,所述三种类型信息为答案类型、答案路径和答案上下文相关信息;
S5:将候选答案的实体类型的文本描述用BiLSTM编码成d维的向量表示
S6:将从候选答案到问句的主题实体词的关系序列定义为答案路径,使用BiLSTM将其编码成向量表示S7:通过一个关系嵌入层计算 的关系嵌入的平均值作为向量表示
S8:将候选答案的周围节点定义为候选答案的上下文,将所述候选答案的上下文使用BiLSTM编码成向量表示S9:使用key‑value记忆网络来存储候选答案信息;所述使用key‑value记忆网络来存储候选答案信息,对其进行如下线性投影:其中, 和 是答案类型的d维key值表示和value值表示, 和 是答案路径的相应d维key值表示和value值表示, 和 是答案上下文相应的d维key值表示和value值表示;
S10:利用主注意力网络增进问题信息和候选答案信息的交互,使用副注意力网络进一步增强问题信息和候选答案信息的交互,得到增强的问题向量表示 和候选答案信息表示S11:通过注意力机制使用问题表示向量查询键值存储器,提取最相关的信息用以更新问题表示向量得到S12:对问题Q的表示 和候选答案集合 的表示 进行匹配度打分
根据分数对候选答案排序,分数越高的被认为越接近正确答案。
2.根据权利要求1所述的融合多头注意力机制和相对位置编码的知识库问答方法,其特征在于:所述TransformerEncoder模块为Transformer模型中的编码器小单元块,其包括多头注意力机制层Multi‑head Attention和前馈神经网络层Feed Forward,在每一层后都有一个残差连接&归一化层Add&Normalize,TransformerEncoder模块的输入是由词向量token embedding加位置向量positional embedding组成,所述positional embedding的计算公式如下:其中,pos表示单词的位置,i是指单词的维度,在偶数位置,使用正弦编码,在奇数位置,使用余弦编码。
3.根据权利要求2所述的融合多头注意力机制和相对位置编码的知识库问答方法,其特征在于:在多头注意力机制中,一个输入向量x经过h组权重矩阵得到h组query、key和value三个向量,每一个词都有h组query、key和value向量,将一个词的query向量和其他每个词的key向量相乘,计算出当前词与所有词的注意力得分attention score,对attention score除以权重矩阵的第一个维度dk的平方根,再进行softmax操作,得到每个词的一个权重值,再将每个词得到的权重值与自身的value向量相乘,并相加,最后计算得到h个输出矩阵Z1、Z2、...Zh,将h个输出矩阵进行拼接在一起,得到最终的输出矩阵Z。
4.根据权利要求3所述的融合多头注意力机制和相对位置编码的知识库问答方法,其特征在于:Add&Normalize层的实质是将输入向量和输出向量做残差连接后,通过LayerNorm进行归一化,将结果传给下一层。
5.根据权利要求4所述的融合多头注意力机制和相对位置编码的知识库问答方法,其特征在于:前馈神经网络层FeedForward包含两层,第一层是ReLU激活函数,第二层是一个线性激活函数。