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

Мотивация

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

  • Цель: создать анализаторы тональности текста и изображений, чтобы изучить, как машинное обучение можно использовать для деэскалации ситуации. Соответствующие ответы на эмоции, извлеченные из текста и изображений, будут генерироваться с помощью ChatGPT.

Архитектура

Конвейер машинного обучения можно разбить на три части:

  1. Извлечение атрибута эмоции из изображения.
  2. Составьте диалог, который человек на картинке мог бы сказать в такой ситуации.
  3. Наряду с настроением из данных изображения определите настроение диалога и сгенерируйте соответствующий «положительный» ответ.

Первые две части предназначены для моделирования ситуаций, в которых можно протестировать наше решение. Сверточная нейронная сеть (CNN), созданная на основе MobileNet-v2, была обучена классифицировать изображения по семи различным эмоциям. Затем ChatGPT используется для создания диалога для изображения на основе атрибутов, извлеченных обученной CNN.

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

Данные

Набор данных для распознавания выражений лица от Kaggle использовался для обучения CNN распознавать семь различных эмоций на изображениях человеческих лиц: гнев, отвращение, страх, счастье, нейтральность, печаль и удивление. Набор данных содержит около 30 000 изображений для обучения CNN.

Набор данных эмоций для задач распознавания эмоций и Набор данных анализа настроений от Kaggle использовались для обучения анализатора текстовых настроений. Набор данных об эмоциях для задач распознавания эмоций содержит твиты из Twitter и метку эмоций для каждого из них. Ярлыки эмоций: гнев, страх, радость, любовь, печаль и удивление. Набор данных анализа настроений содержит твиты и метки полярности, а также дополнительные метаданные. Метки полярности были важны для этого приложения, которое включало три метки полярности: отрицательную, нейтральную и положительную.

Сверточная нейронная сеть

Трансферное обучение использовалось для модификации обученной архитектуры MobileNetV2 для конкретной задачи обнаружения эмоций. MobileNetV2 — это многоклассовая архитектура обнаружения объектов, обученная на наборе данных ImageNet, которая может классифицировать около 1000 объектов. Набор данных ImageNet, на котором он обучался, содержит более миллиона изображений и меток для обучения, что делает его мощным набором данных для классификации изображений.

MobileNetV2 был изменен путем добавления 5 слоев и переобучения последних 29 слоев модели. Оптимизатор стохастического градиентного спуска использовался со скоростью обучения 0,0004 вместе с категориальной функцией потерь перекрестной энтропии.

Добавлены слои:

  • Слой глобального среднего пула
  • Плотный слой с 128 узлами и активацией ReLU
  • Плотный слой с 64 узлами и активацией ReLU
  • Плотный слой с 32 узлами и активацией ReLU
  • Плотный слой с 7 узлами и активацией SoftMax (для вероятностей 7 целевых меток)

Модель показала точность 43,79% и точность трех лучших результатов 77,60%. Верхние 3 точности означают, что модель имеет вероятность 77,60%, что правильная метка находится в первых трех вариантах модели. Несмотря на то, что нормальная точность была очень низкой, 3 лучших результата по точности достаточно хороши для этого приложения.

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

Точность 43,79%, скорее всего, связана с тем, что модель очень хорошо классифицирует счастливые изображения, а счастливые изображения составляют около 30% набора данных. Из-за нехватки времени и того, сколько времени потребовалось для обучения модели, время, затраченное на настройку этой модели, было очень небольшим.

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

Логистическая регрессия

Для анализа тональности текста использовалась логистическая регрессия. Для простоты задача была преобразована в бинарную классификацию, где положительная метка «1» соответствует положительному настроению, а отрицательная метка «0» соответствует отрицательному настроению.

Этапы предварительной обработки данных:

  • Удалены нежелательные функции, такие как идентификатор твита, идентификатор пользователя и дата твита. Эти функции интуитивно не влияют на настроение твитов, поэтому, естественно, они были удалены.
  • В данных было намного больше твитов с отрицательным настроением, чем с положительным, поэтому выборка данных была уменьшена путем удаления выборок с отрицательным настроением. Было 799 996 отрицательных твитов и 248 576 положительных твитов.
  • Выполнена стандартная обработка текста: понижение регистра, удаление спецсимволов, токенизация, лемматизация и т.д.
  • Частота термина, обратная частоте документа (TF-IDF) — измеряет, насколько важен термин в документе по сравнению с набором документов.

Для модели была выполнена перекрестная проверка Grid Search, чтобы найти параметры для логистической регрессии.

Наилучшие параметры:{‘C’: 0,5, ‘штраф’: ‘l2’, ‘tol’: 0,01}

Эффективность модели:

  • Точность обучения: 83%
  • Точность теста: 78%
  • Тренировочная оценка AUC: 0,82
  • Показатель AUC теста: 0,78

Модель показала себя относительно хорошо с указанными выше оценочными показателями.

Калибровочные кривые:

Модель не идеально откалибрована, но достаточно хорошо откалибрована для этой цели.

Матрицы путаницы:

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

В целом, после анализа всех вышеперечисленных показателей логистическая регрессия показала хорошие результаты в анализе тональности текста.

Собираем все вместе

Чтобы продемонстрировать две построенные модели, был построен конвейер, моделирующий ситуацию, требующую анализа настроений. Как объяснялось в разделе «Архитектура», CNN отправляет метку эмоции с изображения в ChatGPT. ChatGPT будет генерировать диалог на основе этой эмоции, а модель настроения текста классифицирует диалог. Целый разговор будет строиться так.

Использовано изображение:

Созданная беседа:

Пользователь: «Почему ты такой злой?»
злой человек: «Я злюсь, потому что жизнь была несправедлива ко мне. Я много работал и делал все, что мог, чтобы добиться чего-то самого себя, но что бы я ни делал, этого никогда не бывает достаточно. Мне надоело чувствовать, что я застрял на одном месте и ничего не меняется».
[ОТЧЕТ О НАСТРОЙКАХ]: отрицательная вероятность = 0,9928400605947049, положительная вероятность = 0,0071599394052951374.

Пользователь: «Могу ли я чем-нибудь помочь?»
злой человек: сердитый 41-летний мужчина: «Я не знаю. Мне просто нужно проветрить и вывести это из моей системы. Тем не менее, я ценю ваше предложение».
[ОТЧЕТ О НАСТРОЙКАХ]: отрицательная вероятность = 0,7464109977017981, положительная вероятность = 0,2535890022982019.

Пользователь: «Нет проблем. Пожалуйста, успокойтесь и дайте мне знать, если я могу что-то сделать, чтобы вам стало лучше».
злой человек: сердитый мужчина, 41 год: «Я ценю ваше предложение, хотя .”
[ОТЧЕТ О НАСТРОЙКАХ]: отрицательная вероятность = 0,5967532060520189, положительная вероятность = 0,4032467939479811

Пользователь: «Вы кажетесь отличным человеком!»
злой человек: «Спасибо. Приятно это слышать, но я все еще чувствую себя очень расстроенным».
[ОТЧЕТ О ОТНОШЕНИИ]: отрицательная вероятность = 0,41387422730583756, положительная вероятность = 0,5861257726941624.

Пользователь: «Не беспокойтесь о своих проблемах, думайте о хороших сторонах вещей».
сердитый человек: «Я знаю, что должен попытаться сосредоточиться на положительные стороны, но это тяжело, когда я чувствую себя таким подавленным».
[ОТЧЕТ О НАСТРОЙКАХ]: отрицательная вероятность = 0,40845089763699993, положительная вероятность = 0,5915491023630001

Пользователь: «Хорошо, надеюсь, тебе лучше!»
сердитый человек: «Спасибо. Я постараюсь иметь это в виду».
[ОТЧЕТ О НАСТРОЙКАХ]: отрицательная вероятность = 0,011477125314201087, положительная вероятность = 0,9885228746857989.

Заключение

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

Рекомендации

  1. MobileNetV2: инвертированные остатки и линейные узкие места, Сандлер М., Ховард А., Чжу М., Жмогинов А., Чен Л.С. Препринт arXiv. arXiv:1801.04381, 2018 г.