Если вы когда-нибудь думали, что машинное обучение — это сложно, прочтите эту статью.

вступление

Анализ тональности используется для прогнозирования настроения текста. Сегодня мы поговорим о построении архитектур нейронных сетей и поиске лучшей для нашей цели. Как вы, наверное, знаете, существует несколько классов искусственных нейронных сетей, например RNN и CNN. Здесь мы сосредоточимся на рекуррентной нейронной сети, которая лучше всего подходит для текстовых операций.

Я предполагаю, что вы, вероятно, знаете, как ускорить процесс обучения. Для этого сценария мы используем вычисления на GPU. К сожалению, на моем ПК нет такой мощной видеокарты, только 1660 Ti. Ничего страшного, но есть некоторые ограничения, поэтому я решил воспользоваться сервисом colab. Для этого я хочу обучить нашу модель на всех данных. К сожалению, обычный colab имеет ограничение на использование его максимум 12 часов подряд. Принимая это во внимание, я решил инвестировать в colab pro. По крайней мере, это стоило всего 9,99 долларов в месяц.

Библиотеки и настройка

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

Установка

Если вы решите использовать в обучении собственный GPU, есть несколько требований. У меня была такая настройка, и я не заметил никаких проблем (в отличие от более новых версий CUDA).

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

Лучшая архитектура

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

Простая архитектура

Если вы раньше не создавали собственную модель с помощью TensorFlow, вы можете быть удивлены, насколько это просто. TensorFlow построен как высокоуровневый API, что позволяет нам использовать всего несколько строк для подготовки модели. Вот такая у вас простая модель (и такая же неэффективная, в силу своей простоты).

Как видите, наш первый слой — это Embedding. Этот слой преобразует наши целые числа GloVe в векторы GloVe.

После этого у нас есть несколько базовых плотныхслоев с функцией активации tanh для увеличения глубины архитектуры. В конце модели у нас есть один плотный слой, который отвечает за оценку прогноза. От 0 как отрицательное до 1 как положительное.

Сравнение архитектур

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

- batch size = 64
- epochs = 30
- learning rate = 0.0002
- loss function = mean absolute error
- optimizer = adam

Все модели, которые вы можете найти в проекте GitHub, добавить ССЫЛКУ. Вот несколько многообещающих графиков, например: Charts 3/7/9/10. Чтобы выбрать лучшую модель в нашем учебном проекте, я решил обучить их на одном файле целиком, содержащем 2 миллиона строк. В тренировке я буду использовать 75 эпох, чтобы иметь возможность сделать правильный выбор модели.

Как мы видим, эти модели очень перспективны. К сожалению, мы вынуждены отказаться от модели 3, она снижает точность. Модели 7/9/10 очень похожи, но есть и нюансы. На графиках 7 и 10 мы видим некоторую нестабильность процесса обучения. Однако, чтобы быть уверенным, давайте посмотрим на значения в таблице около 20-й эпохи, потому что после этой эпохи модели начинают мягко переобучать и уменьшать кривую обучения.

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

Прогнозы данных

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

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

Скоро я запущу эту модель на свой веб-сайт, если вы хотите протестировать ее самостоятельно, следите за обновлениями или напишите мне по электронной почте [email protected] как только я добавлю это на свой сайт, я пришлю вам ссылку на это :).

Однако теперь давайте посмотрим на некоторые прогнозы, которые дает модель.

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

Вывод

В этой статье мы познакомились с анализом настроений. Я почти уверен, что это не ответит на все ваши вопросы, однако я надеюсь, что это поможет вам вникнуть в тему и создать свою первую собственную модель. Даже если будет так же, как у меня, ничего страшного. Первые шаги самые важные :).

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

Как всегда буду рад вашим отзывам и комментариям. Оставайтесь с нами и ждите следующих статей :)

Мой сайт
Этот проект на Github