Мы гордимся объявлением о немедленной доступности Lokad private beta для дифференцируемого программирования, предназначенного для оптимизации количественной цепи поставок. Дифференцируемое программирование является потомком глубокого обучения и представляет собой слияние двух алгоритмических областей: машинное обучение и численная оптимизация.

Timeline of differentiable programming at Lokad

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

Применение к цепям поставок

В основе Дифференцируемого программирования (DP) лежит путь к объединению проблем, которые долгое время оставались разобщенными, и разрешению их совместно: ассортимент, ценообразование, прогнозирование, планирование, мерчандайзинг. Хотя такое объединение может показаться нереалистично амбициозным, на самом деле компании уже применяют невероятное количество “скотча” к своим процессам, чтобы справиться с бесконечными проблемами, вызванными тем, что эти задачи были изначально изолированы внутри организации. Например, ценообразование очевидно влияет на спрос, но планирование и прогнозирование, как правило, выполняются, не принимая во внимание цены вообще.

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

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

Бренды класса “люкс”: оптимизация ценообразования и ассортимента - до уровня магазина - долгое время считалась в значительной степени неразрешимой из-за разреженности данных, то есть очень низкого объема продаж на одну единицу товара в магазине - до одной проданной единицы товара в магазине в год. DP предоставляет возможность доставки классов решений, которые работают с такой ультра-разреженностью, потому что они разработаны для достижения гораздо большей эффективности данных по сравнению с обычными методами глубокого обучения.

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

Производство: численная оптимизация масштабных многоэшелонных сетей распадается, когда пытаются использовать классические численные решатели (см. “За пределами оптимизации методом ветвей и границ” ниже). Действительно, эти решатели становятся практически непригодными при работе с миллионами переменных или стохастическими явлениями. К сожалению, производство обладает и тем, и другим - множеством переменных и стохастическими явлениями. DP предлагает практический подход к работе с многоэшелонными сетями, не нарушая сложности фактических потоков внутри сети.

ТО (техническое обслуживание, ремонт, капитальный ремонт): Если одна деталь, необходимая для ремонта системы, отсутствует, то вся система - которая может быть самолетом - остается неработоспособной. Вероятностные прогнозы - это первый шаг для работы с такими непостоянными и прерывистыми шаблонами спроса, но выяснение деталей совместного появления необходимых деталей и превращение этого анализа в действенные рекомендации по запасам было слишком сложно для практического использования. DP упрощает решение таких проблем.

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

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

Искусственный интеллект (ИИ) безусловно стал технологическим модным словом 2018 года, и интерес к нему продолжается и в 2019 году. Однако, хотя Lokad широко использует техники, которые обычно соответствуют модному слову ИИ - например, глубокое обучение, мы были несколько сдержаны в отношении уделять особое внимание “ИИ” в технологии Lokad. Действительно, что касается количественной оптимизации цепей поставок, упакованный ИИ просто не работает. Цепи поставок ничего общего не имеют с, скажем, компьютерным зрением: данные, метрики и задачи крайне разнородны. В результате компании, которые покупали предполагаемые “готовые” решения ИИ, начинают понимать, что эти решения просто никогда не будут работать, кроме, возможно, самых простых ситуаций, где “глупые” системы на основе правил также работали бы нормально.

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

  • проведение промо-акций для бренда класса “люкс” - большая ошибка.
  • отрицательные заказы на продажу в ERP на самом деле являются возвратами товаров.
  • свежие продукты питания должны транспортироваться в определенном температурном диапазоне.
  • варианты цветов могут быть хорошими заменителями одежды, но не варианты размеров[^дети].
  • техническое обслуживание самолетов определяется налетом и циклами полетов.
  • продажи в Великобритании фактически производятся в фунтах стерлингов, даже если в ERP отображается евро как валюта.
  • люди покупают автозапчасти для своих автомобилей, а не для себя.
  • каждый алмаз уникален, но цены в основном зависят от каратов, чистоты, цвета и огранки.
  • отсутствие любой запрещенной детали на самолете приводит к его наземной стоянке.
  • многие химические заводы требуют нескольких недель для повторного запуска после выключения.

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

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

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

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

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

программирование с дифференцируемостью

За пределами оптимизации методом ветвей и границ

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

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

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

Не только эти алгоритмы оптимизации “глубокого обучения”, основанные на стохастическом градиентном спуске, гораздо более эффективны, чем их аналоги на основе ветвления и отсечения, но они также гораздо лучше соответствуют вычислительному оборудованию, которое у нас есть, а именно SIMD CPU и (GP)GPU, что на практике приводит к ускорению в два или три порядка.

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

К дифференцируемому программированию

В теории нет разницы между теорией и практикой. Но на практике есть. Уолтер Дж. Савич, Паскаль: Введение в искусство и науку программирования (1984)

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

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

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

Глубокое обучение Дифференцируемое программирование
Основная цель Обучение Обучение+Оптимизация
Типичное использование Обучение один раз, оценка много раз Обучение один раз, оценка один раз
Гранулярность ввода Толстые объекты (изображения, голосовые последовательности, сканирование лидара, полные текстовые страницы) Тонкие объекты (продукты, клиенты, SKU, цены)
Разнообразие ввода Однородные объекты (например, изображения с одинаковым соотношением высоты/ширины) Разнородные объекты (реляционные таблицы, графы, временные ряды)
Объем ввода От мегабайт до петабайт От килобайт до десятков гигабайт
Аппаратное ускорение Исключительно хорошее Хорошее
Выразительность Статические графы тензорных операций (Почти) произвольные программы
Стохастические численные методы Встроенные То же самое

Типичное использование - это тонкая, но важная точка. С точки зрения “Большого ИИ”, время обучения может быть (почти) произвольно долгим: нормально, если вычислительная сеть обучается в течение недель, если не месяцев. Позже, полученную вычислительную сеть обычно необходимо оценивать в реальном времени (например, распознавание образов для автономного вождения). Этот подход полностью отличается от цепей поставок, где лучшие результаты достигаются путем повторного обучения сети каждый раз. Более того, с точки зрения ДП, обученные параметры часто являются самими результатами, которые мы стремимся получить, что делает ограничение на оценку в реальном времени несущественным.

Ожидания, связанные с входными данными, как по гранулярности, так и по разнообразию и объему, также сильно различаются. Обычно, с точки зрения “Большого ИИ”, акцент делается на бесконечном количестве обучающих данных (например, все текстовые страницы веб-сайта), где основной проблемой является поиск методов, которые могут эффективно использовать эти массивные наборы данных. В отличие от этого, проблемы цепей поставок должны решаться с ограниченным количеством высокоструктурированных, но разнообразных данных.

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

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

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

Программирование смешанных целых чисел Дифференцируемое программирование
Основная цель Оптимизация Обучение+Оптимизация
Гранулярность и разнообразие ввода Тонкие объекты, разнообразные То же самое
Объем ввода От байтов до десятков мегабайт От килобайт до десятков гигабайт
Аппаратное ускорение Плохое Хорошее
Выразительность Неравенства над линейными и квадратичными формами (Почти) произвольные программы
Стохастические численные методы Нет Встроенные

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

Выводы

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

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

Заинтересованы принять участие в нашей закрытой бета-версии? Напишите нам на contact@lokad.com


  1. Программное обеспечение для оптимизации, такое как CPLEX, Gurobi и их аналоги с открытым исходным кодом, доступны уже более 3 десятилетий. В теории, каждая ситуация с закупками, сталкивающаяся с MOQ (минимальным заказным количеством) или скидками на цену, должна была быть решена с помощью программного обеспечения, обладающего подобными возможностями. Однако, за последнее десятилетие я имел возможность контактировать с более чем 100 компаниями во многих секторах, и нигде не видел, чтобы какой-либо отдел закупок использовал какие-либо из этих инструментов. Мой собственный опыт работы с такими инструментами показывает, что немногие проблемы действительно подходят для набора статических неравенств, включающих только линейные и квадратичные формы. ↩︎

  2. Алгоритм Adam (2015), вероятно, является лучшим представителем тех простых, но чрезвычайно эффективных алгоритмов оптимизации, которые привели к существенному прогрессу в области машинного обучения. ↩︎