骨架和参数的特点:



- 骨架与知识图谱本身是弱相关的,知识图谱一和知识图谱二的领域完全不一样,但在问题的骨架上有相似之处,比如问题一“AI行业哪家公司2021年融资最多?”与问题二“传染病领域哪家医院2021年病人最多?”提问的内容完全不一样,但骨架是类似的。所以我们认为骨架与问题是强相关的,比较容易在跨领域间进行迁移。
- 参数与知识图谱和问题都是强相关的,例如问题一中的参数均来自金融领域的知识图谱一,问题二中的参数则是来自医学领域的知识图谱二。
2. 骨架解析器

对于骨架部分的迁移,我们设计了一个带有注意力机制的Seq2Seq骨架解析器,选用BERT作为编码器,通过注意力机制选取BERT的编码结果,再输入到GRU解码器中,将骨架中的操作逐步解码出来。
3. 参数解析器

对于参数解析器,我们采取了不同的策略。由于参数与知识图谱是强相关的,所以我们需要对知识图谱中的元素也进行编码,这里使用BERT作为知识图谱元素的编码器。比如上图中,骨架解码器解码得到一个关于Concept的操作,我们将这个解码得到的特征向量与知识图谱中使用BERT编码的概念特征向量作相似度计算,选取相似度最高的概念。上图中相似度最高的是公司,所以最终选择公司作为参数。
4. 训练方法

我们将模型训练方法分为两个阶段:
- 阶段一,在领域一中进行有监督学习,通过标注好的推理过程数据训练骨架解析器和参数解析器。
- 阶段二,将阶段一训练好的两个解析器迁移到领域二上,采取强化学习的训练方法,在这个阶段中的训练数据是问答对的形式。对于一个问题,使用骨架解析器和参数解析器进行解析,解析过程中根据概率进行采样,得到不同的推理过程,再将这些不同的推理过程在相应的引擎上执行。比较执行结果与问题答案是否正确,给正确推理过程一个正向奖励,通过强化学习优化正确推理过程的概率,降低错误推理过程的概率。
5. 实验设定

下面介绍一下我们的实验设定: