Weijie Liu

Results 63 comments of Weijie Liu

Yes, the mask is represented as the matrix M in our paper.

For English, please use: Model: https://share.weiyun.com/5hWivED Vocab: https://share.weiyun.com/5gBxBYD However, there is no English KG file suitable for K-BERT. What KG do you use?

> Hello, > > Thanks for your sharing! > The Model file can be successfully downloaded. > Any chance that you could upload the corresponding Vocab file? > > Thank...

> Hello, it is difficult to download the models if you don't have an account on wechat or QQ. Can you make it accessible without a login? thanks Sorry, we...

> Hello, > > Thanks for your sharing! > The Model file can be successfully downloaded. > Any chance that you could upload the corresponding Vocab file? > > Thank...

> Hi, > 您好,KBERT的构思非常巧妙,最近使用这套框架做了一系列的实验。中间有关于K-BERT的疑问,想向您探讨咨询一下: > 从代码看到,KBERT在训练和inference两个过程里都会将知识挂载到训练样本上,训练(或者说finetune)过程中把知识挂载上去,我理解有两种可能的作用: > 第一种是让模型“学习”这些带有知识的训练样本,从而让知识被模型学到。 > 第二种是让模型学习到可以在训练样本上挂在知识这件事情,从而在inference的时候,模型可以有效的handle这些挂载了知识的训练样本。 > > 从论文推断我理解作者应该是第一种情况。 > 那么,理论上因为模型已经通过样本学习到了知识,是否在inference时,不挂载知识而采用普通样本,模型也能inference出相对更好的效果? 这几种实验我们都做过哈,预训练、finetune、inference三个阶段分别是否挂载知识。最终发现finetune、inference都挂载比较好。 如你所说,在预训练和fintune阶段挂载三元组就可以使得模型通过训练学习到知识,但是实验表明,载inference阶段也注入知识效果会更好。我们认为inference注入知识会比训练获取知识的方式更高效吧。

QA任务被转化为Q和A匹配任务,即做QA的二分类,用分类代码即可。

> * 模型效果几乎没有下降(acc 0.1个百分 您的复现很不错,这些问题我们在研究过程中都有遇到哈,我根据自己的经验逐个回答哈,也不一定是对的,仅供参考: Q1. 当我训练子分类器时,得到的效果没有直接用true label训练效果好; A1. 您用的loss是hinton蒸馏论文中的经典公式,我们在子分类器蒸馏时使用的loss是KL散度(见原文公式6),是否是这里的区别呢? Q2: 最终推理时,我在CPU上得到了11x的速度提升,但是GPU上只有2x; A2: 这个问题在于GPU对Batch处理是有优化的,GPU处理batch_size=32的批数据耗时并不是batch_size=16批数据的两倍。因此,在GPU上如果有批处理优化的话,提速不明显。而在CPU上,由于没有批处理优化,提速明显。如果想GPU提速也明显的话,需要一些工程上的优化,在剔除低Uncertainty样本后batch_size会减小,可以考虑把多个bacth的样本合并为一个batch送入下一层,以充分使用GPU的批处理能力。 另外,需要注意一点,FLOPs与时间不是线性的。 我们马上会开源代码,方便对比哈。 再补充问一下,您是用Pytorch复现吗? 在根据Uncertainty筛选样本时是否使用了torch.nonzero()函数?

> 先回复您的问题,我用的是tensorflow1.13复现的。由于是静态图,推理时先计算得到uncertainty值,然后用if...else进行筛选。 > > ```python > uncertainty_value = sess.run(uncertainty_tensor, feed_dict={...}) > if uncertainty_value < speed: > stop() > ``` > > 下面是针对我的问题,说一下我的疑惑。 > > 根据维基上的公式,交叉熵和KL散度关系如下。在蒸馏时,前项只与老师的预测结果有关,所以交叉熵和KL散度在优化上是等效的。并且我再蒸馏时hinton蒸馏公式T参数设定为1,所以也排除T参数的影响。 > > ![kl](https://camo.githubusercontent.com/e50ee21e559cdcb74438ba234859f966d4f3aabc/68747470733a2f2f77696b696d656469612e6f72672f6170692f726573745f76312f6d656469612f6d6174682f72656e6465722f7376672f38306264313363373233646365353035366136663361613162323965323739666239306434306264) > >...