赞
踩
这是EMNLP 2017年的一篇会议论文,创新点在于将强化学习应用在实体关系路径推理上,在此论文之前,该方向常用的方法是PRA(Path Ranking Algorithm)或者基于知识图谱的编码方法。
下面介绍该论文算法的主要思路:
目标:训练一个神经网络,将实体对的状态映射为关系,在知识图谱中的表现就是将节点对的信息映射为它们之间的路径,从而实现路径推理。
训练过程:
一、随机生成一个三层全连接神经网络,如图:
其中输入向量200维,编码着要推理的源节点和目标节点的知识图谱上下文信息(编码方法是TransR模型,引用自
输出向量400维,每个维度代表一个关系的概率,400是关系空间的大小,即KG中共有400种关系。
神经网络初始的参数是随机生成的。
二、采用监督信息训练神经网络
1. 监督信息:三元组(E1, E2, relation);
2. 在知识库KB中使用BFS算法搜索(E1, Emid),(Emid, E2)之间的路径. ① Emid在KB中随机选择,加快搜索速度; ② KB中提前删除E1, E2之间的路径; ③ 每个实体对,最多搜索5条路径;
3. 删除搜索结果的路径中的回路;
4. 使用预训练向量表TransR (Lin et al., 2015)编码路径,例如,对于路径
{([(Esrc,E2),(E2,E3),(E3,E4),....,(Ek,Etarget)],
[relation1, relation2,relation3, ...., relationk] )},
编码为 :
{([(EsrcVEC,EtarVEC), (E2VEC,EtarVEC), ..., (EkVEC, EtarVEC)],
[r1id, r2id, ..., rkid] )}
5. 将路径输入神经网络,
输入:路径节点(EiVEC, EtarVEC),
输出:动作概率[p1, p2, ..., pk]
期望输出:对应动作[0,0,...1,..,0]
层数:3层
损失函数:L2正则损失
优化方法:Adam梯度下降
三、使用强化学习算法训练神经网络
使用与“一”中相同的监督信息,对于实体对(Esrc, Etar):
1. 以E1为起点;
2. 将(EiVEC, EtarVEC)输入神经网络;
3. 将神经网络的输出用softmax函数处理,取最大概率对应的动作作为下一步动作;
4. 重复步骤2.3.,若在最大步数范围(50步)内找到了Etar,认为成功;若在最大步数范围内没有找到,认为失败;
5. 若成功,则使用找到的路径结果更新神经网络,给予+1的reward;若失败,则给予-1的reward来更新神经网络。(reward作用于loss函数)。
四、结果
论文代码提供的训练是分任务的,一个任务对应一个关系,即经过一个任务训练的神经网络只可以推理单一的关系,并没有提及综合训练的效果。
NELL数据集说明:
文章采用的数据集是NELL数据集(第995次迭代结果),如图:
其中,kb_env_rl.txt是全部的知识图谱信息,其中有75,492个实体,200个关系, 154,213个三元组。论文研究中将200个关系的反转关系也加入进了数据集,所以是400个关系。
数据集下设有12个任务,文件名即为关系名称,各个任务文件夹下的数据都是为训练该关系路径推理模型而设置的。
任务文件夹内,graph.txt文件中存储着知识图谱三元组,但相比kb_env_rl.txt,这里面将任务需要推理的关系路径对应的三元组删除掉了。
train.pos文件是训练集,也就是对神经网络做监督训练时的使用的监督信息,其中的三元组都是相同的关系,都是该任务对应的要推理的关系。
test.pairs文件是测试集,其中的三元组也都是任务对应要推理的关系。
其余的***2id、***2vec等文件都是编码关系或者实体所需要的信息,论文的实验中比较了多种编码方式,不同的文件存储着不同的编码表。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。