Вход Контакты

Deep Learning для прогнозирования

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

От вероятностного прогнозирования к Deep Learning

Иллюстрация deep learning, погружающегося под поверхность паттернов спроса

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

Пятая генерация не отказалась от этой основы. Напротив, она унаследовала вероятностное прогнозирование и опиралась на опыт предыдущей генерации. Ее дизайн строился на тогда еще сравнительно новой ветви machine learning, то есть на deep learning. В supply chain более высокая точность прогноза напрямую означает лучший сервис, более быстрое исполнение и меньшие риски по запасам.

Отчасти случайно deep learning оказался по своей конструкции очень хорошо согласован с вероятностным прогнозированием. Эта ориентация возникла не из мира supply chain, но совпадение оказалось весьма удачным. Методы deep learning тяготеют к вероятностным и байесовским подходам к оптимизации, используя метрики вроде кросс-энтропии, которые дают большие градиенты, необходимые для stochastic gradient descent, то есть алгоритмического фундамента современного deep learning.

В случае supply chain математические основания deep learning удивительно хорошо согласуются с реальными бизнес-требованиями.

По ту сторону хайпа вокруг искусственного интеллекта

Искусственный интеллект, который на практике в основном опирался на deep learning, стал главным модным словом 2017 года. Обещания были смелыми, захватывающими и часто расплывчатыми. С точки зрения Lokad, большинство корпоративных AI-решений не оправдывали ожиданий. Лишь немногие компании могли одновременно собрать команду мирового уровня по deep learning и обеспечить финансирование, необходимое для решения задачи supply chain с нуля.

С этим релизом Lokad сделал технологию прогнозирования уровня AI доступной для любой достаточно цифровизированной компании. Система по-прежнему зависела от исторических данных supply chain, которые нужно было предоставить Lokad, но не требовала от клиента никакой экспертизы в deep learning. В отличие от многих корпоративных AI-предложений, Lokad не опирался на ручной feature engineering. Для клиентов, уже работавших с Lokad, переход от предыдущего вероятностного движка к deep learning должен был пройти прозрачно.

Таким образом, Lokad стал одним из первых поставщиков программного обеспечения, предложивших turnkey-технологию прогнозирования уровня AI, пригодную как для небольших ecommerce-компаний, так и для крупных сетей supply chain с тысячами точек и миллионами SKU.

Эпоха GPU computing

Графические процессоры, ускоряющие крупномасштабные прогнозные вычисления Deep learning долго оставался нишевой технологией, пока его программные основы не были переработаны так, чтобы использовать GPU, то есть graphic processing units. GPU сильно отличаются от CPU, центральных процессоров, которые до сих пор обеспечивают работу большинства программ. Исторически видеоигры были одной из немногих массовых областей, активно использовавших оба типа процессоров. Вместе с этим прогнозным движком пятого поколения Lokad также обновил свою низкоуровневую инфраструктуру, чтобы платформа могла использовать оба типа. Lokad начал применять GPU-машины на Microsoft Azure. Благодаря огромной вычислительной мощности GPU прогнозы стали не только точнее, но и значительно быстрее. На крупных наборах данных GPU-сетка обычно давала результаты в три-шесть раз быстрее.

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

Запуски новых продуктов и промоакции

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

Для fashion-брендов deep learning был особенно перспективен, потому что запуски новых товаров доминируют в продажах, а варианты по цвету и размеру резко увеличивают число SKU, которые нужно прогнозировать.

FAQ по прогнозированию

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

Наш deep forecasting engine опирался на единую модель, построенную по принципам deep learning. В отличие от классических статистических моделей, она содержала десятки миллионов обучаемых параметров, примерно в 1 000 раз больше, чем наша самая сложная на тот момент не-deep модель machine learning. Deep learning заметно превосходил более ранние подходы, такие как random forests и gradient-boosted trees. Эти методы уже превосходили классические инструменты временных рядов, включая Box-Jenkins, ARIMA, Holt-Winters и экспоненциальное сглаживание.

Учится ли система на своих ошибках прогнозирования?

Да. Статистический процесс обучения, который создает модель deep learning, использует все исторические данные, доступные Lokad. Эта история используется через ретроспективное тестирование. Чем больше доступной истории, тем больше возможностей у модели учиться на собственных ошибках.

Обрабатывает ли ваш движок сезонность, тренды и эффекты дня недели?

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

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

Как минимум, движку требуется дневная история спроса. Еще лучше, если есть детализированная история заказов. Общее правило простое: чем длиннее история, тем лучше результат. При истории менее двух лет трудно обнаружить сезонность; три года это уже хорошо, а пять лет отлично. Для прогноза lead times движку обычно нужны заказы на закупку с датой заказа и датой поставки. Атрибуты товара или SKU также существенно повышают качество прогноза. Уровни запасов тоже полезны, потому что позволяют Lokad построить первый содержательный анализ запасов.

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

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

Что насчет stock-outs и промоакций?

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

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

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

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

Да, если такие данные доступны и надежны. Например, Lokad может использовать данные о ценах конкурентов, собранные специализированными третьими сторонами, а также данные о web-трафике. На практике главный bottleneck находится не в самом прогнозном движке, а в усилиях, необходимых для построения и поддержки качественного data pipeline вокруг таких внешних источников.

Ask Lokad