Как простые и быстрые проекты машинного обучения могут превзойти огромные инвестиции в технологии

(Не любите читать? Перейдите сразу к демонстрации и протестируйте модель самостоятельно!)

Этот пост написан в соавторстве с Джоэлом Верделлом, главным менеджером по продукту в T-Mobile.

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

Это сообщение в блоге - история одного такого проекта в T-Mobile.

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

Когда мы искали способы улучшить обмен сообщениями, мы заметили, что во многих разговорах было начальное сообщение от человека с таким вопросом, как: «Сколько нужно переключить 4 линии на T-Mobile?» или «как мне получить Netflix в моей учетной записи?» Наше программное обеспечение для обмена сообщениями отвечало бы клиентам, спрашивая: «Вы клиент?» Это было абсолютно абсурдно, поскольку текст вопроса клиента обычно отвечал на наш - например, кто-то, спрашивающий об изменении своего плана, явно является клиентом. Казалось, что компьютер должен уметь решать проблему, поэтому мы решили ее решить. Команда AI @ T-Mobile немедленно занялась этим.

К счастью, у нас был отличный набор обучающих данных для модели машинного обучения. У нас было множество исторических журналов разговоров, в которых люди обменивались сообщениями T-Mobile, а затем сразу же выбирались из нашего пользовательского интерфейса, были они клиентом или нет. Первое сообщение каждого человека будет входными данными для модели, а сделанный им выбор будет тем, что наша модель пытается предсказать. Поскольку у нас были исторические журналы разговоров и выбор клиентов (с удаленными данными о клиентах), мы были в отличной форме.

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

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

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

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

Затем мы развернули нашу нейронную сеть R как API в контейнере Docker. Благодаря использованию контейнеров Docker со стандартным конвейером разработки T-Mobile наша модель вскоре была запущена в производство и помогала людям быстрее ориентироваться. Чтобы познакомиться с R в производстве, ознакомьтесь с нашими сообщениями в блоге, GitHub repo и RStudio :: conf () video.

С помощью нашего инструмента мы смогли вдвое сократить количество людей, которые видели автоматизированный селектор «Вы клиент?». Это был большой бизнес-успех, поскольку он устранил точку трений в клиентском опыте и направил клиентов к экспертам, которые могут помочь им быстрее. В T-Mobile мы твердо убеждены в том, что клиент должен быть первым, и эта модель машинного обучения позволила нам двигаться в этом направлении.

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

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

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

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