JasonForJoy / SA-BERT

CIKM 2020: Speaker-Aware BERT for Multi-Turn Response Selection in Retrieval-Based Chatbots
75 stars 13 forks source link

关于论文中提到的技巧 #6

Closed rhyspang closed 4 years ago

rhyspang commented 4 years ago

您好,提问两个论文中提到的点

JasonForJoy commented 4 years ago

@rhyspang

  1. create_adaptation_data.py line 415- 420, create_finetuning_data.py line 181-189 等等 另外,Ubuntu V1只提供了分句信息,没有分轮信息,因此,我们在Ubuntu V1中只使用了 EOS Ubuntu V2提供了分句信息和分轮信息,因此我们在Ubuntu V2上使用了EOU 和 EOT
  2. modeling_switch.py line 496- 510,train.py line 133, 336, 346 等等
rhyspang commented 4 years ago

@JasonForJoy 好的,了解,感谢解答

rxc205 commented 3 years ago

@rhyspang

  1. create_adaptation_data.py line 415- 420, create_finetuning_data.py line 181-189 等等 另外,Ubuntu V1只提供了分句信息,没有分轮信息,因此,我们在Ubuntu V1中只使用了 EOS Ubuntu V2提供了分句信息和分轮信息,因此我们在Ubuntu V2上使用了EOU 和 EOT
  2. modeling_switch.py line 496- 510,train.py line 133, 336, 346 等等

@JasonForJoy 学长,这样的话,另外的两个中文数据集 Douban ECD 也是只用到 EOS 吗?这套代码,切换成两个中文数据集数据集适用的吗?

JasonForJoy commented 3 years ago

@rxc205 由于Douban和ECD都只有EOS的标签,没有更详细的EOU或者EOT,因此我们在实验种也是只用了EOS。 对于两个中文数据集也是适用的,只不过需要在相应的地方改一下分词符之类的。

rxc205 commented 3 years ago

@rxc205 由于Douban和ECD都只有EOS的标签,没有更详细的EOU或者EOT,因此我们在实验种也是只用了EOS。 对于两个中文数据集也是适用的,只不过需要在相应的地方改一下分词符之类的。

好的,感谢!

rxc205 commented 3 years ago

你好,学长,再打扰你一下?请教两个问题: 1.你基于google-research/bert修改做的预适应训练的,它使用的是默认英文,这样的话ubuntu数据集就可以天然适应了。我想问的是,对于豆瓣和ecd两个中文数据集,我在使用时需要将重新下载中文的权重吗?就是将english_L-12_H-768_A-12 更改到 chinese_L-12_H-768_A-12吗?

  1. 如果我使用中文做mlm和nsp,是直接喂入数据就好吗还是要修改什么配置? 麻烦学长解答
JasonForJoy commented 3 years ago

@rxc205 你好!

  1. 对于两个中文数据集,最好是用专门的中文语料库训练的BERT,效果会更好一些。具体的,可以用google官方的中文BERT,也可以用后续工作改进的中文BERT,例如全词掩码whole-word-masking(google BERT是单字掩码):https://github.com/ymcui/Chinese-BERT-wwm
  2. 用中文做NSP的时候无需更改配置。做MLM的时候有两种mask策略,分别是单字掩码和全词掩码,都可以尝试。
rxc205 commented 3 years ago

@rxc205 你好!

  1. 对于两个中文数据集,最好是用专门的中文语料库训练的BERT,效果会更好一些。具体的,可以用google官方的中文BERT,也可以用后续工作改进的中文BERT,例如全词掩码whole-word-masking(google BERT是单字掩码):https://github.com/ymcui/Chinese-BERT-wwm
  2. 用中文做NSP的时候无需更改配置。做MLM的时候有两种mask策略,分别是单字掩码和全词掩码,都可以尝试。

好的,也就是说初始化权重可以是任意更改的,代码还是同一套就行吧。

rxc205 commented 3 years ago

请问学长你那边产出一份adapted data(dupe_factor=10)需要花多久的时间呢? 我这边时间有点久哦,不知道合不合理。

JasonForJoy commented 3 years ago

@rxc205 生成adapted data的过程确实挺长的。 可以考虑将dupe_factor设为1,然后在fine-tune的时候将epoch设为10,以减少生成adapted data的过程。 当然这种做法由于是将一批数据重复用了十次,因此最终的结果会差一些。

rxc205 commented 3 years ago

@rxc205 生成adapted data的过程确实挺长的。 可以考虑将dupe_factor设为1,然后在fine-tune的时候将epoch设为10,以减少生成adapted data的过程。 当然这种做法由于是将一批数据重复用了十次,因此最终的结果会差一些。

感谢解答,我再询问学长最后一个问题:你是只使用了一张显存32G V100的卡吗?adapted pre-traing大概花了多久时间呢?我这边是Tesla p40,性能稍差一些,我做一些评估。麻烦学长了

JasonForJoy commented 3 years ago

@rxc205 我们所有的pre-train和fine-tune都是在一张32GV100上。 具体运行时间由于时间久远确实没什么印象了,抱歉! 我们的具体实验设定是:dupe_factor=10,epoch=1,32GV100,batch size=20。 你可以参考。