关于BERT训练的一些疑问

换工作之后从CV跳到了NLP的坑里,最近两个月开始利用BERT处理文本数据,产生了一些炼丹上的疑惑。:disappointed_relieved:

我们组里的工作流大概是:

  • 大语料库、内部数据语料两遍pretrain,数据量大概几T级别
  • 业务数据上finetune

pretrain的设置和BERT原文差不多,只是词表比较大;finetune是根据具体业务设计一些优化目标。

第1个问题,我们在pretrain阶段只跑了1~2 epoch,经验上看是不是更多的epoch是更好的做法呢?跟组里同学讨论,可能计算资源和时间都不充裕的情况下,只跑一轮效果也还不错。但是图像任务里经常会跑1、200 epoch,在这里形成了鲜明的对比。

第2个问题,不同语料库的doc质量有差别,有什么清洗数据的方法么,随便看了下,内部数据语料质量还是挺差的;原来跑人脸任务的时候,已经深切感受到了数据集对模型的影响,NLP的任务里有工作做过类似的分析吗

第3个问题,我自己目前主要是拿组里同学pretrain的模型finetune,发现了一个不能理解的现象,训练只能跑1 epoch,跑多了模型马上过拟合,这是因为我数据量太少了,还是说有什么freeze再整体train的操作。
finetune有什么常见的套路可以分享么,盲目的看了一些资料,还是来做伸手党吧,感觉代码库里的细节比较多,刚入坑NLP不太好抓重点。

大佬们,救救孩子吧:sob:
@eric-haibin-lin @fiercex

半年过去了,大佬有什么心得体会更新一下吗?我也刚从CV如NLP坑。