Как использовать Трансформеры для классификации текста? - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть два вопроса о том, как использовать реализацию Transformers в Tensorflow для классификации текста.

  • Сначала , кажется, что люди в основном использовали только слой кодировщика для выполнения задачи классификации текста.Однако уровень кодера генерирует одно предсказание для каждого входного слова.Исходя из моего понимания трансформаторов, вход в кодировщик каждый раз представляет собой одно слово из входного предложения.Затем весовые коэффициенты внимания и результат вычисляются с использованием текущего входного слова.И мы можем повторить этот процесс для всех слов во входном предложении.В результате мы получим пары (вес внимания, выходные данные) для каждого слова во входном предложении.Это правильно?Тогда как бы вы использовали эти пары для классификации текста?
  • Секунда , основанная на реализации преобразователя Tensorflow здесь , они встраивают все входное предложение в один вектор и передают пакет этих векторов в Transformer.Тем не менее, я ожидал, что ввод будет набором слов вместо предложений, основанных на том, что я узнал от Иллюстрированного трансформатора

Спасибо!

1 Ответ

2 голосов
/ 27 сентября 2019

Существует два подхода, которые вы можете использовать:

  1. Просто усредните состояния, которые вы получаете от кодировщика;
  2. Заранее добавьте специальный токен [CLS] (или что вам нравитсяназовите его) и используйте скрытое состояние для специального токена в качестве входных данных для вашего классификатора.

Второй подход используется BERT .При предварительном обучении скрытое состояние, соответствующее этому специальному токену, используется для прогнозирования, являются ли два предложения последовательными.В последующих задачах он также используется для классификации предложений.Однако мой опыт показывает, что иногда усреднение скрытых состояний дает лучший результат.

Вместо обучения модели Transformer с нуля, возможно, более удобно использовать (и, в конечном итоге, точно настраивать) предварительно обученную модель (BERT, XLNet, DistilBERT, ...) из комплекта трансформаторов .Он имеет предварительно обученные модели, готовые к использованию в PyTorch и TensorFlow 2.0.

...