#python #bert-language-model
Вопрос:
Я экспериментировал с точной настройкой модели BERT (например, BioBERT) с помощью моего собственного набора данных NER. Я делал это в библиотеке transformers (используя скрипт тонкой настройки классификации токенов), но по разным причинам я хотел бы использовать AllenNLP.
Мой набор данных находится в формате conll2000, поэтому я использовал pretrained_transformer_mismatched в качестве встраивателя, сквозного кодировщика и simple_tagger в качестве классификатора. Я экспериментировал с sub_token_mode как «средний» и «первый». Производительность была неизменно ниже, чем я мог получить с помощью библиотеки transformers с точными гиперпараметрами (такими как скорость обучения, размер пакета, оптимизатор, планировщик, отсев, эпохи).
Основное различие, которое я нахожу, заключается в том, что библиотека transformers работает на уровне фрагментов слов, в то время как предварительно обученный_трансформатор_mismatched работает на уровне токенов (либо первым, либо средним объединением фрагментов слов). Следовательно, входные данные для уровня классификации линейных тегов различаются между этими библиотеками.
Чтобы проверить эту теорию, я экспериментировал, изменив свой встраиватель на pretrained_transformer, который дает мне фрагменты слов, маркированные с помощью pretrained_transformer_tokenizer. Тем не менее, мне пришлось довольно много взламывать простую логику потери тегов и расчета метрик, чтобы игнорировать текстовые фрагменты. Благодаря этим изменениям моя производительность улучшилась и приблизилась к тому, чего я мог бы достичь с помощью библиотеки transformers.
Я прошу прощения, если я пропустил что-то основное, есть ли модель (например, simple_tagger), которая выполняет классификацию последовательностей в токенизированном состоянии wordpiece ?
Комментарии:
1. Этот вопрос мог бы быть лучше на datascience.stackexchange.com