Что показали наши эксперименты, и ваш шанс опробовать модель

Введение

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

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

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

Базовая модель

В качестве базовой модели мы использовали классификатор на основе RoBERTa, описанный в этой статье.

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

  • Позитивное настроение 😀
  • Нейтральное отношение 😐
  • Негативное настроение 🙁

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

Точная модель

Мы использовали набор данных FinancialPhraseBank. Он состоит из 4840 предложений на английском языке из финансовых новостей, классифицированных по настроению. И снова у нас было три класса:

  • Позитивное настроение 😀
  • Нейтральное отношение 😐
  • Негативное настроение 🙁

В нашем эксперименте мы только настроили головку классификации, используя скорость обучения 1e-2, запустив ее в течение пяти эпох и используя только половину данных. Настройка только головы (замораживание остальных весов) — необычный способ обучения моделей глубокого обучения. Этот подход обычно применяется в CV и значительно снижает сложность обучения. На меньших GPU это можно сделать, но процедура работает не всегда — для некоторых задач этого может быть недостаточно. К счастью, в нашем случае обученная таким образом модель дала нам впечатляющие результаты на тестовом наборе, и мы решили оценить ее, используя другой набор финансовых данных.

Набор данных для оценки

Набор данных, который мы использовали для оценки обеих моделей анализа настроений, взят с Kaggle и может быть загружен здесь. Это длинный список финансовых заголовков, аннотированных настроением относительно финансовых организаций в них. Вы можете увидеть первые несколько строк этого ниже.

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

  • Если все объекты, упомянутые в заголовке, имеют одинаковое настроение, мы можем предположить, что это настроение всего заголовка.
  • Если у объектов смешанные настроения, мы удаляем их из набора данных.

Это привело к уникальному общему настроению для каждого заголовка, как показано ниже.

Мы использовали только 1000 записей, полагая, что этого достаточно для надежной оценки. Вы можете проверить эту записную книжку colab, чтобы найти код, который мы использовали в эксперименте, и более подробную информацию о том, как мы проводили анализ настроений для каждой модели.

Результаты анализа тональности

После того, как мы собрали прогнозы анализа настроений для обеих наших моделей машинного обучения, мы могли бы провести их честное сравнение, взглянув на точность, воспроизводимость и f-оценку. Мы распечатали классификационные отчеты для обеих моделей, используя библиотеку scikit-learn.

На рисунках выше видно, что доработанная версия превзошла базовую версию по всем средним показателям:

  • Точность увеличилась с 0,73 до 0,77.
  • Отзыв увеличился с 0,41 до 0,76.
  • F-показатель увеличился с 0,27 до 0,77.

Отдельные результаты показывают, что отзыв положительных и отрицательных классов для базовой модели был очень низким: 0,01 и 0,12 соответственно. Точная настройка новой модели привела к отзыву 0,71 для положительного класса и 0,78 для отрицательного класса.

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

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

Матрицы путаницы иллюстрируют ситуацию.

Более пристальный взгляд выявляет проблемы, с которыми сталкивалась базовая модель с маркировкой положительных и отрицательных настроений. Он 331 раз ошибочно помечал положительные заголовки как нейтральные. Точно так же отрицательный класс был ошибочно помечен как нейтральный 258 раз. Это очень низкая производительность для классов, которые должны быть надежно обнаружены в таких задачах классификации настроений.

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

Сводка

Команда Toloka ML доказала, что модель настроений, обученную в другом домене, можно точно настроить для нового домена, создав собственную модель анализа тональности с относительной легкостью и небольшим объемом данных.

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

Вы можете прочитать код для эксперимента в этой блокноте colab.

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

PS: я пишу статьи, которые простым и понятным языком объясняют основные концепции Data Science на Medium и aboutdatablog.com. Вы можете подписаться на мой список адресов электронной почты, чтобы получать уведомления каждый раз, когда я пишу новую статью. А если вы еще не являетесь участником Medium, вы можете присоединиться здесь.

Ниже приведены некоторые другие публикации, которые могут вам понравиться: