Насколько последние модели НЛП превосходят традиционные модели - от подхода Lexicon до BERT для задачи анализа тональности финансовых текстов

Глубокое обучение в компьютерном зрении было успешно применено во множестве приложений с момента появления в 2012 году новаторской CNN под названием AlexNet на ImageNet. Напротив, НЛП отстает с точки зрения использования глубоких нейронных сетей. Многие приложения, заявляющие об использовании ИИ, часто используют какой-то алгоритм на основе правил и традиционное машинное обучение, а не глубокие нейронные сети. В 2018 году современная модель (STOA) под названием BERT превзошла человеческие оценки в некоторых задачах НЛП. Здесь я применяю несколько моделей для задачи анализа настроений, чтобы увидеть, насколько они полезны на финансовом рынке, откуда я родом. Код находится в блокноте jupyter и доступен в git repo.

1. Введение

Задачи НЛП можно условно разделить на следующие категории.

  1. Классификация текста - фильтрация спама, категоризация документов.
  2. Последовательность слов - перевод слов, теги POS, распознавание именованных объектов
  3. Значение текста - тематическое моделирование, поиск, ответы на вопросы
  4. От последовательности к последовательности - машинный перевод, обобщение текста, вопросы и ответы
  5. Системы диалога

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

Для этого есть веская причина. В языке есть грамматика и порядок слов, с которыми можно было бы лучше справиться с помощью подхода, основанного на правилах, в то время как подход машинного обучения может лучше изучать словосочетания и сходство слов. Методы векторизации, такие как word2vec, bag-of-word, помогают модели выразить текст математическим способом. Самые известные примеры:

King - Man + Woman = Queen
Paris - France + UK = London

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

В 2017 году появился новый подход к решению проблемы без повторяющейся или сверточной архитектуры. Внимание - это все, что вам нужно предлагает архитектуру преобразователя, представляющую собой стек кодировщика-декодера, основанный на механизме внимания. Двунаправленные представления кодировщика от трансформаторов (BERT) - это языковая модель с маскировкой и множественным стеком кодировщика, разработанная Google в 2018 году, которая значительно улучшила результаты тестов STOA в тестах GLUE, SQuAD и SWAG. Есть ряд статей и блогов, объясняющих архитектуру, например, Статья Джея Аламмара.

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

Здесь сравниваются следующие модели:

  1. Подход на основе правил с использованием Lexicon
  2. Традиционный подход к машинному обучению с использованием Tfidf
  3. LSTM как архитектура рекуррентной нейронной сети
  4. БЕРТ (и АЛЬБЕРТ)

2. Входные данные

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

  1. Финансовые заголовки как более формальный стиль
  2. Твиты Stocktwits в качестве неформальной беседы трейдера

Я напишу еще один пост для последнего, поэтому сосредоточимся здесь на первых данных. Это пример текстов, содержащих более формальные языки, специфичные для финансовой области, и я использовал FinancialPhraseBank Malo et al. (2014) », которые состоят из 4845 текстов заголовков, размеченных вручную 16 людьми и снабженных согласованным уровнем. Я использовал 75% согласованных этикеток с 3448 текстами в качестве обучающих данных.

## Input text samples
positive "Finnish steel maker Rautaruukki Oyj ( Ruukki ) said on July 7 , 2008 that it won a 9.0 mln euro ( $ 14.1 mln ) contract to supply and install steel superstructures for Partihallsforbindelsen bridge project in Gothenburg , western Sweden."
neutral "In 2008 , the steel industry accounted for 64 percent of the cargo volumes transported , whereas the energy industry accounted for 28 percent and other industries for 8 percent."
negative "The period-end cash and cash equivalents totaled EUR6 .5 m , compared to EUR10 .5 m in the previous year."

Обратите внимание, что все данные принадлежат источникам, и люди должны соблюдать свои авторские права и условия лицензии.

3. Модели

Вот четыре модели, которые я сравнивал по производительности.

A. Подход, основанный на лексике

Создание словарей для конкретных предметных областей - это традиционный подход, простой, но эффективный в некоторых случаях, когда источником является конкретный человек или носитель. Списки слов Лафрана и Макдональда. Этот список содержит более 4 тысяч слов, которые появляются в финансовой отчетности с метками настроения. Примечание. Для использования этих данных в коммерческих целях требуется лицензия. Пожалуйста, проверьте их веб-сайт перед использованием.

## Sample
negative: ABANDON
negative: ABANDONED
constraining: STRICTLY

Я использовал 2355 отрицательных слов и 354 положительных слова. Он включает словоформу, поэтому не выполняйте выделение корней и лемматизацию во входных данных. При таком подходе важно учитывать отрицание. Такие слова, как «не», «нет», «не» и т. Д. Изменяют значение отрицательных слов на положительное, и здесь я просто переворачиваю тональность, если одно из отрицательных слов встречается в трех словах, предшествующих положительному слову.

Затем оценка тона определяется следующим образом и вводится в классификаторы по положительным / отрицательным счетам.

tone_score = 100 * (pos_count — neg_count) / word_count

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

Б. Традиционное машинное обучение на векторе Tfidf

Входные данные были токенизированы NLTK word_tokenize (), затем лемматизированы, и стоп-слова были удалены. Затем загружается в TfidfVectorizer и классифицируется с помощью логистической регрессии и классификатора случайных лесов.

C. LSTM - рекуррентная нейронная сеть

Поскольку LSTM предназначен для запоминания долговременной памяти, которая выражает контекст, используется специальный токенизатор для извлечения букв алфавита в том виде, в котором они есть, без лемматизации или удаления стоп-слов. Затем входные данные были введены в слой встраивания, затем в два слоя lstm. Чтобы избежать переобучения, примените dropout, как это часто бывает, затем полностью подключите слои и, наконец, возьмите log softmax.

В качестве альтернативы также попробовал GloVe word embedding from Stanford, который представляет собой алгоритм обучения без учителя для получения векторных представлений для слов. Здесь взял предварительно обученный на Википедии и Gigawords с токенами 6B, размером словаря 400k и размерными векторами 300. Около 90% слов в нашем словаре были найдены в этом словаре GloVe, а остальные инициализируются случайным образом.

Д. БЕРТ (а также АЛЬБЕРТ как альтернатива модели БЕРТ)

Я использовал pytorch реализацию модели BERT от трансформеров от Huggingface. Теперь (v3) они предоставляют токенизатор, а также кодировщик, которые генерируют текстовые идентификаторы, маски пэдов и идентификаторы сегментов, которые можно напрямую использовать в их модели BertModel, и для стандартного процесса обучения не требовалось специальной реализации.

Подобно модели LSTM, выходные данные BERT затем передаются на выпадающие, полностью подключенные слои, а затем применяются log softmax. Обучение модели с нуля - не вариант без достаточного бюджета для вычислительных ресурсов, а также без достаточного количества данных, поэтому я использовал предварительно обученные модели и настроил их. Предварительно обученные модели использовались следующим образом:

  • BERT: берт-цоколь-без оболочки
  • АЛЬБЕРТ: albert-base-v2

Тренировочный процесс с заранее подготовленным бертом выглядит так.

4. Оценка

Во-первых, входные данные разделяются на обучающий набор и тестовый набор с соотношением сторон 8: 2. Набор тестов остается нетронутым до тех пор, пока все параметры не будут зафиксированы и не будут использоваться только один раз для каждой модели. Поскольку набор данных невелик, для оценки наборов параметров используется перекрестная проверка. Кроме того, чтобы решить проблему несбалансированного и меньшего набора данных, для настройки гиперпараметров применяется стратифицированная перекрестная проверка K-Fold.

Оценка основана на балле F1, поскольку входные данные несбалансированы, а точность также упоминается.

Перекрестная проверка поиска по сетке используется для моделей A и B, тогда как настраиваемая перекрестная проверка выполняется для моделей глубокой нейронной сети для моделей C и D.

5. Результат

Точно настроенные модели на основе BERT явно превосходят другие модели после того, как потратили примерно такое же время на настройку гиперпараметров.

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

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

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

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

Модель D показала неплохие результаты с более чем 90% как по точности, так и по шкале f1 при перекрестной проверке, а также в итоговом тесте. Он правильно классифицирует отрицательные тексты на 84%, а положительные - на 94%, что может быть связано с количеством вводимых данных, но лучше внимательно присмотреться, чтобы улучшить производительность. Это указывает на то, что точная настройка предварительно обученной модели хорошо работает на этом небольшом наборе данных благодаря трансферному обучению и языковой модели.

5. Вывод

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

Также стоит отметить, что в практическом применении получение правильных входных данных также весьма важно. Модель не может быть хорошо обучена без данных хорошего качества, которые часто называют «мусор на входе, мусор на выходе».

Я расскажу об этих моментах в следующий раз. Весь используемый здесь код доступен в git repo.