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

На рисунке 1 показана обычная ячейка LSTM, развернутая во времени. На каждом шаге через ячейку вводится вложение слова (с размерностью d), а состояние измерения s - исходящее. На выходе получается матрица формы n * d, где n - длина предложения.

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

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

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

Формула довольно проста, просто SoftMax поверх ut и uw. Что это?

Первый - это преобразованный ht, который рассчитывается как слой нейронной сети:

Это дает больше возможностей для сети. Второй - вектор контекста, который изучается другими параметрами. Будет выучено такое, что может похвастаться более важными словами, потому что каждый альфа-вес ut вычисляется как нормализованное подобие (скалярное произведение) этого и uw. Итак, теперь у нас есть обучаемый нежесткий альфа-канал, и мы вычисляем окончательное представление.

Теперь мы реализуем классификацию настроений с помощью Keras. Модели состоят из слоя внедрения, LSTM (и слоя внимания во втором), плотного слоя. Задача состоит в том, чтобы классифицировать каждый твит как положительный, отрицательный, нейтральный. обучаем модель 60 эпох. Если вам интересно, вы можете увидеть код в следующей записной книжке:



С вниманием результаты немного лучше; 0,7831 и 0,7875.

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

Мы видим, что слово «ужасный» имеет самое низкое значение. Кроме того, мы можем видеть, что «нет» и «часы» - более негативные слова. последнее из-за того, что это набор данных об настроениях авиакомпаний, и это слово относится к задержкам рейсов.

В этом посте я рассмотрел суть внимания к классификации текста. Я планирую публиковать следующие посты на более продвинутые темы, такие как GAT и Transformers.

Источники:

Кераматфар А., Амирхани Х., Джалалы Биджоли А. Многопоточная иерархическая глубокая модель для контекстно-зависимого анализа настроений. Журнал информатики. Февраль 2021 г. doi: 10.1177 / 0165551521990617

Ян З., Ян Д., Дайер С., Хе Х, Смола А., Хови Э. Иерархические сети внимания для классификации документов. Материалы конференции 2016 г. североамериканского отделения ассоциации компьютерной лингвистики: технологии человеческого языка, июнь 2016 г. (стр. 1480–1489).