O melhor artigo da ACL2020 tem um prêmio de nomeação em papel, "Não pare de pré -treinamento: adapte os modelos de idiomas a domínios e tarefas". Este artigo fez muitas experiências no modelo de idioma pré-treinamento e analisou sistematicamente a melhoria do modelo de idioma pré-treinamento nas subtarefas. Existem várias conclusões principais:
Continuar o pré-treinamento (DAPT) no conjunto de dados do campo de destino pode melhorar o efeito; Quanto mais não relacionado o corpus do campo alvo é para o corpus pré-treinamento original de Roberta, mais óbvio será o efeito DAPT.
Continuar o pré-treinamento (TAPT) no conjunto de dados de tarefas específicas pode melhorar o efeito muito "barato".
Combinar os dois (DAPT primeiro, depois o TAPT) pode melhorar ainda mais o efeito.
O efeito é melhor se você puder obter mais dados não marcados relacionados à tarefa e continuar a pré-treinar (TAPT com curadoria).
Se você não puder obter mais dados não marcados relacionados à tarefa, adote uma estratégia de seleção de dados muito leve e simples e o efeito também será aprimorado.
Embora o pré-treinamento do Modelo de Idioma na BET já seja uma operação de ponto estável em competições de algoritmo. Mas o que é louvável no artigo acima é que ele analisa sistematicamente esta operação. A maioria dos modelos de idiomas chineses é treinada no Tensorflow, e um exemplo comum é o projeto Roberta Chinês. Você pode se referir a https://github.com/brightmart/roberta_zh
Existem menos exemplos de modelos de idiomas chineses pré-treinamento usando Pytorch. Em Transformers do Huggingface, algum código suporta o pré-treinamento do modelo de idioma (não muito rico, e muitas funções não suportam como o WWM). Para concluir o pré-treinamento do modelo de idioma Bert com custo mínimo de código, este artigo empresta algum código pronto para ele. Tente também compartilhar algumas experiências no uso do Pytorch para o pré-treinamento do modelo de idioma. Existem três modelos de língua chinesa comuns
(https://huggingface.co/bert-base-chinese)
Este é o modelo de idioma de apostas chinês mais comum, pré-treinado com base no corpus chinês relacionado à Wikipedia. É fácil pré-treinar modelos de idiomas como linha de base sem dados de supervisão no domínio. Basta usar os exemplos oficiais.
https://github.com/huggingface/transformers/tree/master/examples/language-modeling (os transformadores usados neste artigo são atualizados para 3.0.2)
python run_language_model_bert.py --output_dir=output --model_type=bert --model_name_or_path=bert-base-chinese --do_train --train_data_file=train.txt --do_eval --eval_data_file=eval.txt --mlm --per_device_train_batch_size=4
(https://github.com/ymcui/chinese-bert-wwm)
O modelo de idioma pré-treinado divulgado pelo Laboratório Conjunto do Instituto de Tecnologia Harbin. O método de pré-treinamento é usar métodos semelhantes de Roberta, como máscara dinâmica, mais dados de treinamento etc. Em muitas tarefas, esse modelo é melhor que Bert-Base-Chinese. Porque os arquivos de configuração da classe roberta chinesa, como vocab.txt, são todos projetados usando o método Bert. O formato padrão do arquivo de configuração de leitura do modelo Roberta inglês é vocab.json. Para alguns modelos ingleses Roberta, eles podem ser lidos automaticamente no Automodel. Isso explica por que o código de amostra de Roberta chinês da Biblioteca de Modelos de Huggingface não pode ser executado. https://huggingface.co/models?
Se você deseja continuar o pré-treinamento Roberta com base no código acima run_language_modeling.py. Mais duas mudanças são necessárias.
Supondo que o config.json tenha sido modificado, você pode executar o seguinte comando.
python run_language_model_roberta.py --output_dir=output --model_type=bert --model_name_or_path=hflroberta --do_train --train_data_file=train.txt --do_eval --eval_data_file=eval.txt --mlm --per_device_train_batch_size=4
https://github.com/nghuyong/ernie-pytorch)
Ernie é um modelo pré-treinado divulgado pelo Baidu baseado em corpus chinês, como o Baidu Zhitieba, combinado com a previsão de entidades e outras tarefas. A precisão desse modelo é melhor que a de Bert-Base-Chinese e Roberta em algumas tarefas. Se você fizer o pré-treinamento de dados de campo com base no modelo ERNIE1.0, você só precisará modificá-lo em uma etapa.
python run_language_model_ernie.py --output_dir=output --model_type=bert --model_name_or_path=ernie --do_train --train_data_file=train.txt --do_eval --eval_data_file=eval.txt --mlm --per_device_train_batch_size=4