20210318总结
论文《Graph Convolutional Network with Sequential Attention for Goal-Oriented Dialogue Systems》(应用顺序注意力的图神经网络在任务型对话系统中)
单领域的对话系统有三种输入:
- 该领域相关的知识库
- 对话历史,这是一系列的自然语言表达
- 用户最新的回复,这也是自然语言表达,通常叫做Query因为要根据这个条件来生成系统回复
本篇文章关注的两个亮点
- 知识库中实体之间的关系,这是一张知识图谱
- 对话自然语言表达的依赖解析结果,是一棵树,将对话历史以及Query,dependency parse的结果当做一个知识图谱来处理,从而得到word的向量表示
本篇文章结构的输入
- 对话历史
- Query
- 实体和关系
对于code-mixed之类不存在依赖关系的自然语言
其不存在依赖关系,导致得不到依赖关系树,本文通过在corpus范围内建立共现矩阵的方式来解决这一问题,windows选择为一个句子,即只要两个词在同一个句子中出现过频率就可以相应的增加,当频率超过一定的阈值的时候,我们就认为这两个词之间存在依赖关系。同时这里的frequency也可以是PPMI
PPMI
Positive Pointwise mutual information点互信息可以用来表示两个点之间的相关性
P P M L ( x , y ) = l o g p ( x , y ) p ( x ) ∗ p ( y ) = l o g p ( x ∣ y ) p ( x ) = l o g p ( y ∣ x ) p ( y ) PPML(x, y) = log \frac{p(x, y)}{p(x) * p(y)} = log\frac{p(x|y)}{p(x)} = log\frac{p(y|x)}{p(y)} PPML(x,y)=logp(x)∗p(y)p(x,y)=logp(x)p(x∣y)=logp(y)p(y∣x)
对后边的两个等式可以这么理解,在y出现的条件下x出现的概率除以x出现的概率,这个值越大表示x和y越相关。
该值一定是负数,一般情况下还要取负,或者取绝对值图神经网络中可以通过迭代多次来获取node最终的向量表示
本文将图神经网络从无向图推广到了有向图
- 无向图中超参矩阵仅仅维护一对
- 对于自然语言的依赖分析形成的图结构,由于单词之间的依赖关系有很多种,所以实际上应该为每一种关系建立一组单独的参数矩阵。可这样导致参数规模巨大,后期处理比较麻烦。本文基于信息流动的方向来设置超参,总共可以分为三种,u->v, v->u, u = v.
- 为了满足两个两个方向的参数都能得到更新,本文对所有的依赖关系添加了一个反向的关系,from dependents to heads.
整体框架
- Query encoder BiRNN + GCN
- 对话历史 encoder BiRNN + GCN
- KB encoder GCN
- sequential attention
- Decoder
遗留问题
- 想出了一个图结构,或许还可以优化
- 配置环境,跑一下师兄给的代码 https://github.com/DSKSD/DeepNLP-models-Pytorch 和 https://github.com/graykode/nlp-tutorial