Тонкая настройка BERT для классификации текста (групповая классификация 20 новостей)
2018 год стал годом прорыва в области НЛП. BERT от Google, глубокое двунаправленное обучение с использованием трансформатора, дало отличные результаты для многих задач НЛП. Поэтому в этом руководстве мы научимся использовать Keras-Bert на TPU (рекомендуется совместная работа с Google) и на графическом процессоре. Это просто и удобно.
BERT предоставляет предварительно обученную модель для английского и китайского языков, и мы надеемся, что она будет доступна и для других языков. Кроме того, в этом руководстве мы будем дорабатывать предварительно обученную английскую модель, чтобы классифицировать набор данных группы 20news.
Что такое точная настройка ??
Это означает использование уже хорошо обученной модели для дальнейшего выполнения аналогичной задачи, немного подергивая ее. Например:
Давайте рассмотрим, что мы должны классифицировать изображения по фруктам. Итак, у нас есть модель, уже обученная для классификации тысяч классов изображений. Эта модель может использоваться для классификации фруктов.
Последний слой этой модели удаляется, а для обучаемого устанавливается значение false для более низкой скорости. Поскольку они уже являются обученным слоем (при обучении классификации классов 1000) Итак, часть извлечения признаков изображения взята из предыдущей модели. Теперь добавьте в модель требуемый слой и скомпилируйте его.
Как только это будет сделано, другие добавленные слои в модели могут быть установлены как «обучаемые = Истина», чтобы в последующих эпохах их веса можно было точно настроить для новой задачи классификации.
Следовательно, мы хотим классифицировать текст путем точной настройки BERT. Мы будем классифицировать новости, используя слой Берта. Для этого мы возьмем набор данных 20newsgroup.
давайте доработаем модель BERT с помощью Keras !!!!!!
Keras предлагает очень быстрый способ создания прототипов современных моделей глубокого обучения и поэтому является важным инструментом, который мы используем в нашей работе. Я поделился ссылкой на Kaggle и Collab, как используя TPU, так и используя GPU.
Помните, что в Keras-Bert вы должны установить для переменной TF_KERAS значение 1.
Установите Keras-Bert, а также Keras-rectified-Adam для точной настройки. И загрузите большую предварительно обученную модель Берта без корпуса с токенизацией WordPiece.
Импорт библиотек.
Параметры, необходимые для обучения.
SEQ_LEN - это количество длин последовательности после токенизации. Он установлен на 128. BERT работал с максимальной длиной последовательности 512.
LR - скорость обучения.
Помните, что для TPU размер партии 128 работает как шарм, быстро и легко обучается. В то время как для графического процессора он выдает ошибку исчерпания. Итак, уменьшите размер пакета для графического процессора.
Примечание: BERT в процессоре тяжелый и медленный, и мой код завис. Так что лучше использовать ядро Kaggle или Google Collab.
Теперь загрузите предварительно обученную модель BERT.
Извлечение словаря токенов из словаря предварительно обученной модели для обращения к входным данным, которые мы будем использовать.
Загрузите набор данных и извлеките его с помощью функции keras get_file.
Определение токенизатора.
Делаем этикетку, индексируем пару.
Разделение данных на поезд, тест, которому предшествует токенизация предложений и возврат данных тестового поезда.
Извлечение слоя из предварительно обученной модели Берта и добавление слоя с функцией softmax для классификации 20 классов новостей.
Инициализация переменных.
Наконец, обучение модели.
Делаем прогнозы для тестовых наборов данных.
Точность расчета.
Теперь давайте проверим отдельные данные.
Пожалуйста, перейдите по ссылке Kaggle, чтобы получить доступ к коду. Таким образом, проблемы классификации могут быть решены с помощью BERT. В следующей серии мы будем решать последовательную задачу. Спасибо, что прочитали эту статью.
ССЫЛКИ: