PS! Я ни в коей мере не являюсь экспертом в области искусственного интеллекта и не утверждаю, что им являюсь. Я увлечен преимуществами ИИ / машинного обучения для повышения продуктивности, поэтому постоянно учусь и пытаюсь применить это в различных проектах. Мне повезло, что я работаю в Microsoft, где у меня есть доступ к множеству ресурсов, которые помогают мне учиться. Я также много инвестирую в курсы Udacity, так как считаю их очень практичными.

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

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

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

Когда есть молоток, все проблемы - гвозди

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

Урок 1. Не начинайте свою стратегию внедрения ИИ с толчка инвестиций в ИИ, ИИ должен стать важнейшим ингредиентом серверных технологий.

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

1. Можем ли мы найти для этого талант?

2. Есть ли у нас своевременные и качественные данные для эффективной поддержки?

3. Конкурирующие приоритеты

4. Риск нематериальных результатов

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

Никакая волшебная модель ИИ не решит вашу проблему

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

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

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

Например:

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

  1. Инвестируйте в модель обучения с подкреплением: это может быть соблазнительным, особенно если вес возможностей искусственного интеллекта Майкрософт позади вас. Однако это лучший способ потерпеть неудачу. Построение модели глубокого обучения с подкреплением является сложной задачей, потребует времени и глубоких навыков, а также будет сложно получить необходимый уровень навыков для этого проекта.
  2. Превратите это в проблему контролируемого обучения: поэтому в MSFT Payments мы вернулись к старомодной эвристике , анализу данных, статическим правилам и AB-тестированию, чтобы собрать нужные нам данные. чтобы начать путь к разработке нашей модели машинного обучения для динамической маршрутизации. Итак, первая возможность, которую мы добавили, - это возможность проводить A / B-тестирование, чтобы мы могли собирать данные. Таким образом, мы превратили результаты эвристики и экспериментов в функции.

Урок 3. Обязательно протестируйте свою модель на производстве, чтобы убедиться, что вы получаете хорошие результаты

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

Например:

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

Машинное обучение = хорошая инженерия данных.

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

Урок 4. Сделайте свою первую модель простой и оптимизируйте конвейер данных.

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

Создавая конвейер данных в команде Microsoft Payments, мы сосредоточились на следующих основных областях:

  1. Разработайте надежный конечный конвейер.
  2. Убедитесь, что вы устраняете сложность в получении типичных функций, необходимых для разработки модели машинного обучения.
  3. Разработайте процесс и командную культуру, которые обеспечат стабильную работу конвейера. Конвейеры данных могут выйти из строя, если их оставить без присмотра.
  4. Разработайте не более шести контрольных метрик для нашего конвейера и назначьте владение одной из них члену команды, чтобы сохранить чистоту.
  5. Хотя мы не хотели перегружать команду показателями контроля конвейера, мы хотели убедиться, что у нас достаточно данных и аналитики для обнаружения и устранения проблем. Мы применили жадный подход и добавили детальную телеметрию на каждом микроэтапе конвейера - это настоящий спасательный круг при устранении производственных проблем.

Урок 5. Ваша первая модель станет вашей лучшей моделью.

Даже модель, которая является слабым предсказателем, будет лучшей моделью, которую вы придумаете, поскольку вы обычно начинаете с нуля. Поэтому запустите простую модель после оценки риска или ложных прогнозов и внедрения процессов для управления этими рисками. Если у вас есть модель, которая верна в 90 раз из 100, и вы начали, не имея возможности предсказать это событие, вы добились значительного успеха. Начните с этой модели, так как вы оптимизируете ее в будущем. Первоначально вы должны сосредоточиться на процессе управления риском неверных прогнозов и на уроках, которые ваша команда получит от запуска своей первой простой модели AI / ML в производственной среде. Вы хотите, чтобы ваша команда развивала свои навыки, поскольку отладка модели машинного обучения и управление ею в производственной среде является сложной задачей.

Измерьте это, если хотите этого добиться. Начните с одной цели и развивайтесь

Урок 6. Начните с простой цели, которую вы хотите оптимизировать, чтобы развиваться позже.

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

Даже самые лучшие намерения нуждаются в искуплении

Урок 7. Предоставьте своей команде инструменты для простого экспериментирования с преобразованием данных.

В начале статьи мы сосредоточились на создании надежного конвейера данных для функций. Однако вы обнаружите, что вам нужно поэкспериментировать со своими данными, чтобы получить оптимальный набор функций. Так что дайте своей команде инструменты для этого. В Mirocsoft Payment мы решили не инвестировать в возможности платформы. Мы просто использовали предложения AI-aaS (машинное обучение Azure) и инструменты с открытым исходным кодом (anaconda), чтобы дать нашей команде возможность играть с данными и экспериментировать с разработкой моделей. Эти инструменты позволили команде быстро узнать о различных моделях машинного обучения и процессе обучения.

Урок 8. На раннем этапе инструменты машинного обучения не нуждаются в такой гибкости.

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

  1. Если вы пытаетесь реализовать модель компьютерного зрения, подумайте о том, чтобы начать с такой возможности, как Microsoft Cognitive Services - Vision API, Amazon, Google и другие предлагают аналогичные предложения. Боритесь с соблазном использовать CNTK, Tensorflow и т. Д. И сверточную нейронную сеть, которую вы разрабатываете с нуля. Вы можете получить от этого массу удовольствия, в конце концов, вы обнаружите, что потратили много времени и денег, а ваша производительность будет далеко от возможностей Ai-aaS. Если вы не являетесь Google, Microsoft и у вас есть команды экспертов по искусственному интеллекту, работающие над созданием следующего прорыва в этой области. То же верно и для обработки естественного языка. У Google впечатляющее предложение НЛП, если вы хотите это проверить. Предложение Microsoft NPL уже здесь.
  2. В Microsoft Payments мы используем Машинное обучение Azure и Anaconda для экспериментов с нашими моделями. Однако у нас есть собственная платформа для больших данных, на которой мы обрабатываем все наши производственные данные, и в ней есть библиотеки машинного обучения для разработки и запуска нашего конвейера машинного обучения. Это те же библиотеки, которые мы предлагаем внешним клиентам в рамках нашего предложения Машинное обучение Azure.

Достаточно хорошо - достаточно хорошо, запускайте и повторяйте.

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

Урок 9. Вам необходимо научиться запускать несколько конвейеров машинного обучения параллельно.

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

Урок 10: не вносите в модель свой собственный уклон

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

В заключение

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