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

Например, мы бы классифицировали продукт Panasonic 35–100mm f/2.8 X OIS в категорию Электроника и аксессуары › Камеры и фото › Объективы для фотоаппаратов и бренд Панасоник

С категоризацией мы теперь можем ответить на некоторые действительно интересные вопросы, например, как Apple и Samsung сравниваются друг с другом в этом квартале по сравнению с прошлым кварталом в пространстве мобильных телефонов, или насколько лояльны пользователи Apple iPhone по сравнению с пользователями Samsung Galaxy.

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

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

Хотя машины великолепны (они быстры, масштабируемы, стабильны), есть несколько проблем, которые могут усложнить их работу.

Во-первых, двигатель должен постоянно развиваться. Каждый месяц продаются новые продукты («Pokemon Go», наушники с костной проводимостью и т. д.), и если машина не адаптируется к новым продуктам, она по ошибке поместит любимую игру «Angry Birds» в «Товары для домашних животных». категория. Данные обучения могут быстро стать нерепрезентативными и устаревшими без постоянной адаптации.

Кроме того, есть длинный хвост пограничных случаев — например, если у вас есть категория юбок и категория шорт, как вы классифицируете шорты? Обучить машину всем этим крайним случаям и ловушкам может быть довольно сложной задачей. Вот почему относительно легко заставить классификатор машинного обучения достичь точности 80% или даже 90%, но очень сложно добиться точности 95% и выше. Прежде чем вы это узнаете, машина погибнет от тысячи порезов бумаги.

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

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

  1. аналитики с предметной специализацией
  2. краудсорсинговые работники
  3. аутсорсинговые работники

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

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

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

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

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

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

Теперь конкретный краудсорсинговый работник может не быть на 100% точным в своих ярлыках. В конце концов, эти работники не являются экспертами в предметной области. Мы заметили, что метки данного работника в среднем точны примерно на 80%. Способ, которым мы повышаем точность меток воркеров, заключается в отправке одной и той же задачи нескольким воркерам и использовании голосования для триангуляции правильной метки. Это позволило нам повысить точность с 80% до 95%.

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

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

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

Эту и другие записи в блоге Slice Engineering можно найти на странице engineering.slice.com.

Если вы заинтересованы в решении этих сложных задач по обработке данных для построения крупнейшего в мире графика покупок, мы нанимаем!

Первоначально опубликовано на сайте engineering.slice.com 23 февраля 2017 г.