Прогнозирование с помощью Deep Learning (2018)

Прогностическое моделирование в Lokad теперь осуществляется с помощью дифференцируемого программирования вместо глубокого обучения. Дифференцируемое программирование является потомком глубокого обучения, лучше приспособленным для решения задач цепочек поставок. В частности, дифференцируемое программирование более пригодно для whiteboxing чем глубокое обучение.

От вероятностного прогнозирования к глубокому обучению

мощные облака
Дизайн движка опирается на относительно недавний подход в машинном обучении, называемый глубоким обучением. Для цепочек поставок существенное улучшение точности прогнозирования может обернуться столь же значительными выгодами: обслуживать больше клиентов, делать это быстрее и сталкиваться с меньшими рисками запасов. Примерно 18 месяцев назад мы анонсировали 4-е поколение нашей прогностической технологии. Четвёртое поколение было первым, кто предоставил истинные вероятностные прогнозы. Вероятностные прогнозы имеют решающее значение для цепочек поставок, потому что затраты сосредоточены на статистических крайностях, когда спрос оказывается неожиданно высоким или низким. В противоположность этому, традиционные методы прогнозирования — такие как ежедневные, еженедельные или ежемесячные прогнозы, которые фокусируются только на предоставлении медианных или средних значений — не учитывают проблему. В результате эти методы, как правило, не приносят удовлетворительной прибыли для компаний. Пятое поколение не отрицает своих истоков; оно также использует вероятностные прогнозы и основывается на опыте, накопленном в предыдущем поколении.

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

В случае с цепочками поставок оказывается, что основы глубокого обучения полностью соответствуют реальным бизнес-требованиям!

За пределами шумихи вокруг искусственного интеллекта

Искусственный интеллект — на практике работающий на основе глубокого обучения — был модным словом 2017 года. Утверждения смелы, захватывающи и, ну, расплывчаты. С точки зрения Lokad, мы наблюдаем, что большинство этих корпоративных технологий ИИ не оправдывают ожидания. Очень немногие компании могут привлечь финансирование свыше полумиллиарда долларов, как, например, Instacart, чтобы собрать команду мирового уровня по глубокому обучению для успешного решения задач цепочек поставок.

С этим релизом Lokad делает технологию прогнозирования уровня ИИ доступной для любой достаточно «цифровой» компании. Очевидно, что всё это по-прежнему основано на исторических данных цепочек поставок, поэтому данные должны быть доступны для Lokad, но наша технология не требует никаких знаний в области глубокого обучения. В отличие от практически всех «корпоративных» технологий ИИ, Lokad не полагается на ручное проектирование признаков. С точки зрения наших клиентов переход от предыдущих вероятностных прогнозов к глубокому обучению пройдет безболезненно. Lokad — первая софтверная компания, предоставляющая комплексное решение прогнозирования уровня ИИ, доступное как для крошечных интернет-магазинов на одного человека, так и для масштабных сетей цепочек поставок, включающих тысячи локаций и миллион товарных позиций.

Эра вычислений на GPU

мощные облака Глубокое обучение оставалось нишевым направлением, пока сообщество не сумело обновить свой программный блок для использования GPU (графических процессоров). Эти GPU существенно отличаются от CPU (центральных процессоров), которые по-прежнему обеспечивают работу подавляющего большинства приложений, за исключением компьютерных игр, в которых интенсивно используются как CPU, так и GPU. Вместе с полной переработкой нашего прогностического движка для этого 5-го поколения мы также значительно модернизировали низкоуровневую инфраструктуру Lokad. Действительно, для обслуживания компаний платформа Lokad теперь использует как GPU, так и CPU. Lokad теперь использует машины с поддержкой GPU, которые можно арендовать на Microsoft Azure — облачной платформе, поддерживающей Lokad. Благодаря огромной вычислительной мощности GPU мы не только делаем наши прогнозы более точными, но и значительно ускоряем их выполнение. С использованием сети GPU мы теперь, как правило, получаем прогнозы примерно в 3–6 раз быстрее для любых значительных наборов данных (*).

(*) Для ультра-малых наборов данных наш прогностический движок 5-го поколения на самом деле работает медленнее и занимает несколько дополнительных минут — что в реальности практически не имеет значения.

Запуск продуктов и акции

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

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

Часто задаваемые вопросы по прогнозированию

Какие модели прогнозирования вы используете?

Наш продвинутый прогностический движок использует единственную модель, основанную на принципах глубокого обучения. В отличие от классических статистических моделей, эта модель включает десятки миллионов обучаемых параметров, что примерно в 1000 раз больше, чем в нашей предыдущей, самой сложной модели машинного обучения без глубокого обучения. Глубокое обучение значительно превосходит старые методы машинного обучения (случайные леса, градиентный бустинг деревьев). Однако стоит отметить, что эти старые методы машинного обучения уже превосходили все классические подходы к анализу временных рядов (Box-Jenkins, ARIMA, Холт-Уинтерс, экспоненциальное сглаживание и т.д.).

Извлекаете ли вы уроки из ошибок прогнозирования?

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

Обрабатывает ли ваш прогностический движок сезонность, тренды, дни недели?

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

Какие данные вам нужны?

Как и в случае с предыдущим поколением прогностической технологии, для прогнозирования спроса движку необходимо предоставлять, по крайней мере, ежедневные исторические данные о спросе, а еще лучше — подробную историю заказов. Что касается продолжительности истории, то чем она длиннее, тем лучше. Хотя при истории менее 2 лет сезонность определить невозможно, мы считаем 3 года хорошими, а 5 лет — отличными. Для прогнозирования сроков поставки движок обычно требует, чтобы заказы на покупку содержали как даты заказа, так и даты доставки. Указание атрибутов вашего продукта или артикулов также помогает значительно уточнить прогнозы. Кроме того, предоставление данных о ваших запасах очень полезно для составления первичного информативного анализа запасов.

Можете ли вы сделать прогноз по моему Excel-файлу?

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

А как насчет отсутствия товаров и акций?

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

Прогнозируете ли вы новые продукты?

Да, мы прогнозируем новые продукты. Однако чтобы прогнозировать новые продукты, движок требует даты запуска для других «старых» продуктов, а также их исторический спрос на момент запуска. Также рекомендуется указать некоторые из категорий ваших продуктов и/или их иерархию. Действительно, движок прогнозирует новые продукты, автоматически определяя «старые» продукты, которые можно считать сопоставимыми с новыми. Однако поскольку для новых позиций спрос ещё не наблюдался, прогнозы полностью зависят от связанных с ними атрибутов.

Используете ли вы внешние данные для уточнения прогнозов?

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