#python #nlp #bert-language-model #transformer
#питон #nlp #bert-язык-модель #трансформатор
Вопрос:
Я хочу точно настроить BERT для определенного языкового домена, используя следующее репозиторий git:
https://github.com/cedrickchee/pytorch-pretrained-BERT/blob/master/examples/lm_finetuning/README.md
Что касается формата ввода, то в нем говорится:
Сценарии в этой папке ожидают, что в качестве входных данных будет использоваться один файл, состоящий из нетокенизированного текста, с одним предложением в строке и одной пустой строкой между документами. Причина разделения предложений заключается в том, что часть обучения БЕРТА включает в себя задачу следующего предложения, в которой модель должна предсказать, являются ли две последовательности текста смежными текстами из одного и того же документа или нет, и, чтобы не усложнять задачу, точка разделения между последовательностями всегда находится в конце предложение. Поэтому разрывы строк в файле необходимы для обозначения точек, в которых текст может быть разделен.
Что они подразумевают под документами в этом отношении? Насколько я понимаю, .txt
файл, используемый для точной настройки, просто содержит много текста, специфичного для конкретного домена, по одному предложению в строке. Просто чтобы быть уверенным, правильно ли использовать этот репозиторий, если я хочу точно настроить BERT для определенного языкового домена?
Спасибо вам за вашу помощь!
Ответ №1:
Сценарий, о котором вы говорите, является правильным для продолжения предварительной подготовки. Оригинальный BERT использует предсказание следующего предложения в качестве вспомогательной цели. Когда предоставляется пара предложений (разделенных [SEP]
маркером), встраивание [CLS]
(самого первого) токена используется в качестве входных данных для классификатора, сообщающего, являются ли предложения смежными в связном тексте или нет.
Для этого и предназначены пустые строки: на границе документа предложения не могут быть смежными.
Тем не менее, вклад цели следующего предложения является спорным. Например, RoBERTa считает это излишним и использует только цель моделирования с замаскированным языком, которая по-прежнему обеспечивает лучшее качество представления, чем исходный BERT.