ymcui / MacBERT

Revisiting Pre-trained Models for Chinese Natural Language Processing (MacBERT)
https://www.aclweb.org/anthology/2020.findings-emnlp.58/
Apache License 2.0
639 stars 56 forks source link

關於繼續訓練pretrained model #8

Closed phc4valid closed 3 years ago

phc4valid commented 3 years ago

您好,首先非常感激 @ymcui 作者及團隊提供資源給大家做使用, 我是一位學生,想請教一些觀念,手上有一些醫療健康網上爬下來的文章, 想繼續訓練在由哈工大提供之全詞遮罩BERT-like系列and MacBERT上, 預計使用的程式碼為由huggingface提供之run_mlm.py 與run_mlm_wwm.py (來源:https://github.com/huggingface/transformers/tree/master/examples/research_projects/mlm_wwm https://github.com/huggingface/transformers/tree/master/examples/pytorch/language-modeling) 以下為問題: (1)非全詞遮罩的模型(bert-base-chinese)是否可以用全詞遮罩run_mlm_wwm.py 繼續訓練? (2)全詞遮罩的模型(BERT-wwm-ext,RoBERTa-wwm-ext-large)有無限制接續的訓練一定要使用全詞遮罩run_mlm_wwm.py?若繼續使用單詞遮罩run_mlm.py 進行訓練,是否會出現問題導致效果不好? (3)MacBERT是否可以使用上述兩者程式碼繼續訓練?因原文中提到會進行相似字替換,概念與上述兩者不符 (4)要如何判繼續訓練在特殊領域(ex:醫療,法律)之模型已收斂,以loss或以training steps ?

最後,謝謝作者珍貴的時間,撥冗閱讀,如有觀念上的指點,再麻煩作者回覆了,感激不盡 Stay safe

ymcui commented 3 years ago
  1. 可以的,两者的输入形式完全相同,只是在选择mask的位置上有所区别。
  2. 和上面的回答相同。mlm和wwm之间可以混合使用。但如果使用mlm继续训练的话效果可能不及wwm。
  3. 如果在MacBERT上继续训练的话,可以继承MacBERT中Transformer部分的权重继续进行训练。如果要继续训练MLM或者NSP的话,这些任务部分的权重需要全新初始化,可能需要一定的训练时间进行适配。
  4. 很难从train_steps估计是否收敛,这个和训练数据的大小也有关系。可以观察training loss的变化,如果降低到一定程度不再有大的变动,可认为基本收敛。另外一种更实用的方法是把各个阶段(train_steps)的checkpoint进行保存(比如每100k步验证一次),并且在下游任务上进行finetune,观察下游任务的效果。
phc4valid commented 3 years ago

首先謝謝作者的即時回覆, 思考後,想請問老師幾個部分, 關於回覆2:mlm和wwm之间可以混合使用。但如果使用mlm继续训练的话效果可能不及wwm。 想請問說這裡是指,全詞遮罩模型繼續使用mlm訓練效果會比繼續使用wwm訓練差,還是繼續使用mlm訓練效果會比原本全詞遮罩模型表現差? 關於回覆3:可以继承MacBERT中Transformer部分的权重继续进行训练。如果要继续训练MLM或者NSP的话,这些任务部分的权重需要全新初始化 想請問老師說,若使用 AutoModelForMaskedLM.from_pretrained()讀取MacBERT繼續訓練(但缺乏MLM及NSP的參數),跟Train from scratch的差別為何?這部份觀念想跟老師請教。最後想問說為何當初開源MacBERT時沒有選擇釋出這些參數?

非常感激老師珍貴的時間並撥冗閱讀,如能再得到老師的回覆與指點,會一樣非常珍惜與感激,謝謝老師。

ymcui commented 3 years ago
  1. 指的是前者,也就是全詞遮罩模型繼續使用mlm訓練效果會比繼續使用wwm訓練差。这里举个例子,比如说baseline模型的效果是80%(不区分是用mlm还是wwm预训练的),如果使用wwm继续进行预训练的话可能会达到85%,但如果说使用mlm的话可能只会达到83%。
  2. MacBERT的objective并不是严格意义上的MLM。如果用BertModelForMaskedLM读取的话,Transformer部分的权重是会保留的,也就是从input到transformer最后一层的output之间的权重,这部分是预训练模型的重要部分。而MLM/NSP这部分权重(从transformer output到mlm/nsp预测label的部分)属于task-specific权重。根据我们的经验,如果继续进行预训练(比如你要使用医疗数据继续训练),这部分权重是很容易被学习的,因此即便无法继承这部分权重也不会有太大问题。
stale[bot] commented 3 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

stale[bot] commented 3 years ago

Closing the issue, since no updates observed. Feel free to re-open if you need any further assistance.