Классификация текста с помощью ULMFIT с кодом

Языковая модель (LM) - это распределение вероятностей по последовательностям слов. Эти языковые модели используются в качестве базовой модели [как в трансферном обучении] для различных задач обработки естественного языка, включая классификацию текста, обобщение, генерацию текста и многое другое.

Перед тем, как продолжить этот блог, рекомендуется иметь базовые представления о глубоком обучении и трансфертном обучении.

LM упрощают отображение контекста. Сопоставление мужчины с женщиной эквивалентно сопоставлению дяди с тетей и короля с королевой. Эти отображения преобразуются в совместное распределение вероятностей по словарю. Это известно как статистическая LM.

Для такой последовательности, скажем, длины m, LM присваивает вероятность P {w1, w2,…, wm} всей последовательности.

Статистические LM сталкиваются с проблемой разреженности данных из-за длины словаря. В то время как модель нейронного языка (NLM) будет принимать только последовательность слов в качестве входных данных, что решает проблему разреженности данных.

Не углубляясь в математику языковых моделей, позволяет понять, как работает ULMFIT, что даст представление о нейронных языковых моделях.

Универсальная языковая модель FIne-Tuning (ULMFIT) - это метод трансферного обучения, который может помочь в различных задачах НЛП. Долгое время это была современная техника НЛП, но затем она была свергнута BERT [который недавно был свергнут XLNet в классификации текста]. Мы подробно рассмотрим BERT в следующей части блога.

Плюсы ULMFiT

Для глубокого обучения требуется большой набор данных. В частности, при переносе обучения у нас есть большой набор данных, на котором строится наша базовая модель, и мы передаем изученные параметры нейронной сети в наш набор данных для конкретной предметной области. Когда у нас есть меньший набор данных для конкретной предметной области, модели лучше подходят. Чтобы решить эту проблему, Джереми Ховард и Себастьян Рудер предлагают в своей статье 3 различных метода Тонкая настройка универсальной языковой модели для классификации текста для точной настройки LM трансферного обучения для конкретных задач NLP.

  • Дискриминационная тонкая настройка
  • Скорость обучения с наклонным треугольником
  • Постепенное размораживание

Давайте разберемся с этапами создания классификатора текста с помощью ULMFiT, с помощью которых мы поймем 3 новых метода, предложенных авторами.

ULMFiT включает 3 основных этапа: предварительное обучение LM, тонкая настройка LM и тонкая настройка классификатора.

Метод универсален в том смысле, что соответствует следующим практическим критериям:

  1. Он работает с задачами, различающимися по размеру документа, количеству и типу этикетки.
  2. В нем используется единая архитектура и единый тренировочный процесс.
  3. Он не требует разработки или предварительной обработки специальных функций.
  4. Это не требует дополнительных внутренних документов или этикеток.

AWD-LSTM - это современная языковая модель, обычная LSTM (без внимания, сокращенных соединений или других сложных дополнений) с различными настроенными гиперпараметрами исключения. Авторы используют AWD-LSTM как LM в своей архитектуре.

(а) Предварительная подготовка LM

LM обучается на корпусе общей предметной области, чтобы фиксировать общие особенности языка на разных уровнях.

Мы предварительно обучаем LM на большом корпусе общей предметной области и настраиваем его под целевую задачу, используя новые методы. Итак, авторы использовали Wikitext-103 набор данных из 28 тысяч предварительно обработанных статей, состоящих из 103 миллионов слов. В общем, набор данных должен быть настолько огромным, чтобы LM изучал все свойства языка. Это самый дорогой с точки зрения вычислительных ресурсов и времени. Следовательно, мы делаем это только один раз.

(б) Тонкая настройка LM

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

Поскольку разные слои охватывают разную информацию, автор предлагает настроить каждый слой в разной степени.

В стохастическом градиентном спуске мы обновляем θ на каждом временном шаге t.

При отличительной тонкой настройке мы используем θ1, θ2,… θL вместо одиночного значения θ для соответствующих L слоев.

Использование одинаковой скорости обучения (LR) или отожженной скорости обучения на протяжении всего обучения - не лучший способ добиться такого поведения. Вместо этого мы предлагаем наклонные треугольные скорости обучения (STLR).

В STLR авторы предлагают линейно увеличивать скорость обучения и снижать ее следующим образом.

Где,

  • T - количество итераций обучения
  • cut_frac - доля итераций.
  • cut - это итерация, когда мы переключаемся с увеличения на уменьшение LR.
  • p - это доля от количества итераций, которые мы увеличили или уменьшим LR соответственно.
  • ratio указывает, насколько наименьшее LR меньше максимального LR ηmax.
  • ηt - скорость обучения на итерации t

STLR использовался для достижения самых современных результатов в резюме

(c) Тонкая настройка классификатора

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

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

BPTT для классификации текста (BPT3C). Языковые модели обучаются с обратным распространением во времени (BPTT), чтобы обеспечить распространение градиента для больших входных последовательностей. Чтобы сделать возможной точную настройку классификатора для больших документов, авторы предлагают BPTT для классификации текста (BPT3C): Разделите документ на пакеты фиксированной длины размером b. В начале каждого пакета модель инициализируется конечным состоянием предыдущего пакета; Следите за скрытыми состояниями для среднего и максимального пула; градиенты распространяются обратно на пакеты, скрытые состояния которых способствовали окончательному прогнозу. На практике авторы предлагают использовать последовательности обратного распространения переменной длины.

Итак, теперь мы закончили с подавляющими теориями. Давайте погрузимся в код !!

Мы внедрим классификацию текста в тексте вопроса Quora, чтобы выявить неискренние вопросы. Набор данных доступен по адресу kaggle.

Код скоро появится. А пока попробуйте сами.