Авторы: Карина Хуанг, Дайан Ли, Абхиманью Васишт и Фиби Вонг (в алфавитном порядке по фамилии)

Взгляды, выраженные в этом сообщении, принадлежат авторам, а не Associated Press.

Введение

Это сообщение в блоге демонстрирует часть нашего проекта Capstone в классе Harvard AC297r в сотрудничестве с Associated Press (AP). Мы создали систему рекомендаций по преобразованию текста в изображение для изображений для любого заголовка новостной статьи. Цель этого проекта:

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

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

В разделах ниже мы обсуждаем наши подходы с использованием двух разных типов встраиваний: 1) средние вложения слов GloVe и 2) универсальный кодировщик предложений (USE) для кодирования заголовков статей и подписей к изображениям, а затем процесс рекомендаций и примеры.

Данные

Поскольку данные, которые мы использовали для нашего проекта, являются собственностью нашего отраслевого партнера, мы использовали общедоступный набор данных, содержащий новостные статьи и связанные с ними изображения, для целей этого сообщения в блоге, чтобы сделать наши методы воспроизводимыми. Мы загрузили данные, предоставленные Biten, A. F., Gomez, L., Rusinol, M., & Karatzas, D. (2019). Затем мы использовали следующий фрагмент кода для извлечения заголовков статей и подписей к изображениям. Изображения также предоставлены авторами оригинала здесь.

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

Мы использовали библиотеку Python WordCloud для создания словесных облаков из слов в заголовках статей (слева) и подписи к изображениям (справа).

Вот некоторая визуализация сводной статистики набора данных.

Вложения слов в перчатке

Из Стэнфордского веб-сайта НЛП о встраивании перчаток:

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

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

В этом примере вложение слова «вода» будет [0,1,0,0,…, 0], а вложение слова «стол» будет [0,0,0,1,…, 0 ]. Но сразу видно, что это не лучшая идея по нескольким причинам »:

  1. Вектор такой длинный! В английском языке есть сотни тысяч слов (включая имена собственные), и сохранение каждого слова в виде такого длинного вектора потребует огромного количества памяти и сделает любой алгоритм машинного обучения очень медленным.
  2. Семантическая информация не сохраняется. Это означает, что указатель, соответствующий слову, на самом деле не передает никакого значения. «Воздушный шар» и «вода» - это одна позиция, но это очень разные слова.
  3. Аналогичным образом, расстояние между двумя словами не дает вам представления о том, насколько семантически похожи эти два слова.

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

От создателей эмбеддингов GloVe:

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

Мы загружаем предварительно обученные вложения слов Wikipedia 2014 + Gigaword 5 GloVe, словарный запас которых превышает 400000 слов. Предварительно обученные вложения можно скачать с Stanford NLP Website. Он называется glove.6B.zip. После распаковки В этой папке вы найдете несколько файлов. Они содержат вложения в 50 измерениях, 100d, 200d и 300d и имеют размер для загрузки 822 МБ. Чтобы загрузить загруженные вложения GloVe, следуйте приведенному ниже коду:

Среднее количество встроенных слов в перчатке для создания встроенных предложений

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

Интуитивное ожидание от внедрения предложения состоит в том, что оно должно улавливать скрытые особенности всех слов в предложении. Следовательно, мы можем генерировать вложения для данного предложения, объединяя или усредняя вложения слов его слов. Однако конкатенация может быть нежелательной в зависимости от размерности встраивания слов. Размер вложения предложения будет увеличиваться мультипликативно на количество слов. Кроме того, конкатенация потребует, чтобы все входные предложения содержали одинаковое количество слов, что может привести к потере важной информации из-за сокращения количества слов.

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

  1. Преобразование всех слов в предложении в нижний регистр
  2. Удаление ненужных знаков препинания из предложения
  3. Удаление стоп-слов из предложения. К ним относятся такие слова, как «the», «not», «my» и т. Д. Список запрещенных слов был загружен из библиотеки WordCloud, когда мы ранее создавали облака слов.

Для реализации см. Код ниже:

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

Универсальный кодировщик предложений

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

Среднее значение GloVE для предложения «тигр ест человека» такое же, как и для предложения «человек ест тигра»!

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

Универсальный кодировщик предложений (USE), представленный Google Research в 2017 году (см. Полный документ здесь), был обучен как универсальная модель понимания языка. На блок-схеме ниже показан процесс обучения USE, обученного с помощью Deep Average Network (DAN), которая представляет собой серию нейронных сетей с прямой связью. Учитывая входное предложение, DAN обучается кодировать среднее вложение всех слов в предложении в вектор размером 1 x N, который фактически является последним слоем softmax в DAN. Веса сети обновляются путем оценки вектора встраивания предложения в другой языковой задаче (например, анализ тональности).

Фактически сеть может научиться захватывать как синтаксическую, так и семантическую информацию исключительно из средних вложений слов.

Мы встроили заголовки статей и подписи к изображениям с помощью предварительно обученного USE. Модель с открытым исходным кодом на tenorflow hub. Для входного текста любой длины USE выводит вложение предложения размером 1 x 512. Код ниже показывает, как получить доступ к модели. На стороне пользователя не требуется никакой предварительной обработки!

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

Обратите внимание, что существуют разные модели USE и разные версии моделей USE, доступные на тензорном концентраторе. Модели обновляются с обновлениями версии tensorflow и оптимизированы для различных языковых задач. Используемая нами версия - версия 4. Кроме того, вы также можете изучить вариант USE, обученного с помощью кодировщика Transformer (версия 5). Сообщается, что кодировщик Transformer лучше справляется с задачами обучения передачи, чем кодировщик DAN, но требует значительных затрат памяти и вычислительных ресурсов.

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

Чтобы рекомендовать изображения, мы вычисляем косинусное сходство между встраиванием подписи к изображению и встраиванием заголовка статьи. Затем изображения были рекомендованы на основе вычисленного косинусного сходства, ранжированного в порядке убывания. Чем выше косинусное сходство, тем семантически заголовок изображения похож на заголовок статьи. Со страницы Википедии о косинусном сходстве:

Мы нормализовали векторы вложения к единичной норме, так что сравнение будет просто скалярным произведением. В приведенном ниже коде показан процесс рекомендации с использованием вложений GloVe и USE:

Результаты

Вот изображения, рекомендованные моделями встраивания GloVe и USE. Поскольку этот набор данных состоит из реальных новостных статей, мы предоставили URL-адрес соответствующей новостной статьи.

Заголовок статьи 1: Новое изобретение винной страны Уолла Уолла.

Прогнозы GloVe:

Прогнозы использования:

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

Заключение

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

Благодарности

Мы хотели бы поблагодарить наших наставников Павлоса Протопапаса и Исаака Славитта из Гарварда за их руководство в течение семестра. Мы также хотели бы поблагодарить наших сотрудников Веронику Зелинску и Дэвида Фокса из Associated Press за их поддержку.

использованная литература

Битен, А. Ф., Гомес, Л., Русинол, М., и Каратзас, Д. (2019). Хорошие новости всем! Субтитры для изображений новостей с учетом контекста. В Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (pp. 12466–12475).

Cer, D., Yang, Y., Kong, S. Y., Hua, N., Limtiaco, N., John, R. S.,… & Sung, Y.H. (2018). Универсальный кодировщик предложений. Препринт arXiv arXiv: 1803.11175.