K-BERT icon indicating copy to clipboard operation
K-BERT copied to clipboard

Target of soft position index and visible matrix

Open Julietnj opened this issue 4 years ago • 3 comments

Hi~ 通过soft position index和visible matrix来保持同质embedding空间,避免知识噪音的做法真的是巧妙,但是我有一个疑问,如果把input sentence里面的entity在知识库里找到之后不做soft position index和visible matrix的变换,而是直接转换为几个句子,其中包含原始的input sentence和找到的entity对应到知识库中的句子,然后一句一句的输入到bert中去fine tune的话,是不是也可以达到知识注入的效果呢?并且因为是每个知识都转换成了独立的句子,对应于bert里的hard position index, 这样做会有什么问题吗?请指教,谢谢~

Julietnj avatar Mar 23 '20 07:03 Julietnj

Hi~ 通过soft position index和visible matrix来保持同质embedding空间,避免知识噪音的做法真的是巧妙,但是我有一个疑问,如果把input sentence里面的entity在知识库里找到之后不做soft position index和visible matrix的变换,而是直接转换为几个句子,其中包含原始的input sentence和找到的entity对应到知识库中的句子,然后一句一句的输入到bert中去fine tune的话,是不是也可以达到知识注入的效果呢?并且因为是每个知识都转换成了独立的句子,对应于bert里的hard position index, 这样做会有什么问题吗?请指教,谢谢~

你说的这个做法是不是可以理解为使用知识库来对句子做数据扩充来fine-tune模型呢?这个想法我们还没做过哈,那在inference阶段该如何做呢?

autoliuweijie avatar Mar 25 '20 02:03 autoliuweijie

非常感谢给予及时的回复~ 是的,如果把数据库里包含的知识转化成一条一条的sentence然后再去继续训练pre-trained模型,这种方法得到的是一个注入了这个数据库知识的语言模型,接下来还需要在这个有知识的语言模型基础上针对下游任务再去训练一个模型用于预测,而不是直接拿没有知识的预训练模型用soft position index和visible matrix的方法装配上知识直接训练针对下游任务的模型,你提出的这个方法是不需要训练两次的。 另外如果像我提到的那种方法,在第一次训练过程中,应该是需要把整个知识库的知识都放入到语料中进行fine tune,得到一个有知识的LM,但是这样的话应该是需要一个能与之前LM比较对等的数据量才能让LM在无监督的过程中学到这些知识,同时也要求知识库的同一类型的知识足够多,所以这种方式对知识库要求很高,同时对算力也是很大的挑战。 对比来看,用你的这种方式,在下有任务训练过程中把知识装配进去,然后预测的时候用同样方式把知识加进去一起预测,避免了大知识库的嵌入和高算力的要求,确实是非常巧妙。 最后,我想再问一下,用你这种方式训练,对训练集大小要求应该远远低于我提到的那种方式,但是应该也不是没有要求的吧?那么,在Bert上最小的训练集在什么数量级可以让模型装配上这些知识关联呢?

Julietnj avatar Mar 25 '20 06:03 Julietnj

非常感谢给予及时的回复~ 是的,如果把数据库里包含的知识转化成一条一条的sentence然后再去继续训练pre-trained模型,这种方法得到的是一个注入了这个数据库知识的语言模型,接下来还需要在这个有知识的语言模型基础上针对下游任务再去训练一个模型用于预测,而不是直接拿没有知识的预训练模型用soft position index和visible matrix的方法装配上知识直接训练针对下游任务的模型,你提出的这个方法是不需要训练两次的。 另外如果像我提到的那种方法,在第一次训练过程中,应该是需要把整个知识库的知识都放入到语料中进行fine tune,得到一个有知识的LM,但是这样的话应该是需要一个能与之前LM比较对等的数据量才能让LM在无监督的过程中学到这些知识,同时也要求知识库的同一类型的知识足够多,所以这种方式对知识库要求很高,同时对算力也是很大的挑战。 对比来看,用你的这种方式,在下有任务训练过程中把知识装配进去,然后预测的时候用同样方式把知识加进去一起预测,避免了大知识库的嵌入和高算力的要求,确实是非常巧妙。 最后,我想再问一下,用你这种方式训练,对训练集大小要求应该远远低于我提到的那种方式,但是应该也不是没有要求的吧?那么,在Bert上最小的训练集在什么数量级可以让模型装配上这些知识关联呢?

我觉得这种方法就会引入作者提的知识噪声问题,比如苹果手机不错,如果单纯加入知识图谱苹果ceo库克,很有可能就变成了苹果ceo库克手机不错,会偏离句子意思?

Graduo avatar Apr 04 '20 14:04 Graduo