Кристофер Боннетт - выпускник программы Insight в рамках стипендии New York Data Science Fellowship летом 2016 года, где он использовал Deep Learning и NLP для классификации продуктов электронной коммерции для Lynks. Сейчас он исследователь машинного обучения в Alpha-I.

Хотите узнать о науке о данных или прикладном искусственном интеллекте от ведущих профессионалов Кремниевой долины или Нью-Йорка? Узнайте больше о программах Наука о данных и Искусственный интеллект.

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

За исключением пары дней, в течение которых продукты проходят через склад Lynks, Lynks не хранит запасы, поэтому его теоретический список продуктов представляет собой комбинацию всех магазинов электронной коммерции в США. Все заказанные продукты в настоящее время классифицируются вручную. Чтобы помочь в автоматизации этой задачи, я построил прототип конвейера для Lynks.

Копаться в данных

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

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

Цель этого проекта проста: имея изображение и краткое описание, предсказать, какой ярлык присвоит команда Lynks. Однако не совсем понятна иерархическая структура метки элемента. В принципе, построение модели, которая может понимать и использовать эту структуру, должно привести к повышению производительности. Поскольку мы создаем прототип, я решил проигнорировать эту структуру и предположить независимость от ярлыков. Другими словами, наша модель попытается спрогнозировать «Одежда ›› Women ›› Top», не зная, что она тесно связана с «Clothing ›› Men ›› Top». Хотя это и не идеально, но это значительно упрощает подход и позволяет проводить более быструю итерацию.

Всего в результате такого подхода получается 99 уникальных меток классов. Эти классы довольно несбалансированы, многие метки имеют лишь несколько примеров. Для этого прототипа я буду работать только с топ-10 классами, охватывающими 50% количества продуктов. В отличие от других, эти 10 лучших классов имеют множество примеров и более равномерно распределены, что позволяет нам легко создавать эффективное решение.

Выбор подходящей модели

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

Извлечение информации: изображения

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

Обучение архитектуре CNN сложно - обычно для обучения хорошей модели требуется много вычислительной мощности и огромные объемы данных. Хотя наш набор данных не мал (~ 5000 изображений в обучающей выборке), его трудно сравнить с набором данных Image-Net, содержащим 1,2 миллиона изображений по 1000 классам. По этой причине имеет смысл использовать мощность предварительно обученной сети, которая была обучена в Image-Net, поскольку она уже имеет возможность извлекать полезные функции для естественных изображений.

Использование предварительно обученной модели машинного обучения называется трансферным обучением. Идея, лежащая в основе трансферного обучения, довольно проста. Каждый берет хорошо обученную модель из одного набора данных или домена и применяет ее к новому. Я не буду вдаваться в подробности о том, как использовать трансферное обучение на практике, но Франсуа Шоле написал очень исчерпывающее руководство по трансферному обучению. Как и в его посте, я использовал библиотеку глубокого обучения Франсуа Керас, для которой доступна предварительно обученная сверточная сеть VGG-16. Это разумный выбор, поскольку архитектура VGG CNN выиграла конкурс Image-Net в 2014 году и должна обеспечивать хорошую производительность.

Извлечение информации: текст

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

Однако информативность текста варьируется довольно широко. В некоторых случаях товар можно точно классифицировать, используя только текст (например, «мужская рубашка»), в то время как в других (более редких) случаях текст не будет таким информативным. Например, такое описание, как «bronx 84 graphic t», может быть трудно классифицировать как продукт, ориентированный на мужчин или женщин, поскольку текст не содержит никакой информации о поле. Сказав это, в большинстве случаев мы можем ожидать, что текст будет очень информативным, и вместе с изображениями хорошая общая производительность кажется разумной.

Связывая это вместе

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

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

Представление

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

Это довольно интересно. Анализ только текста немного лучше, чем анализ только изображений (и в то же время его намного дешевле вычислять). Однако поразительно, что сами по себе изображения также могут обеспечить хорошую классификацию. Учитывая, что они конкурентоспособны по производительности, ясно, что комбинация изображений и текста должна привести к повышению производительности, поскольку они, по-видимому, улавливают разные вещи. Действительно, когда мы смотрим на производительность комбинированной модели, мы видим значительное повышение точности.

Чтобы прийти к окончательному решению для Lynks, я исследовал возможность изменения количества слоев и скрытых единиц в модели. Кроме того, последний способ оптимизировать нашу модель - это попытаться найти сверточные фильтры, которые лучше подходят для поставленной задачи. Используемая здесь предварительно обученная сеть VGG была обучена на 1000 классах изображений в Image-Net, ни один из которых не является предметами одежды или моды. Чтобы настроить это для данных электронной коммерции, имеет смысл настроить последние несколько сверточных слоев, чтобы привязать изученные функции к обучающему набору. Этот процесс называется точной настройкой. Я выбрал тонкую настройку последних 3 сверточных слоев, вот результаты.

Точная настройка повысила точность еще на 1%, в результате наша лучшая модель показала точность 94%:

Последние мысли

Было действительно интересно изучить различные способы комбинирования графических и текстовых данных в пространстве электронной коммерции. Я обнаружил, что разнообразие качества данных (размер / форма изображений) и контекста (вариации текстовых описаний и изображений) сложно обрабатывать и включать в конвейер анализа. В конце концов, созданная мною модель помогла значительно сократить количество рабочих рук, необходимых для рабочего процесса Lynk. В сочетании с советами по работе с классами, не входящими в топ-10 (здесь не обсуждаются), Lynks остался доволен результатами и в настоящее время включает их в свой производственный конвейер.

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