Дифференцируемое программирование
Дифференцируемое программирование является потомком глубокого обучения и представляет собой слияние двух алгоритмических направлений: машинного обучения и численной оптимизации. Дифференцируемое программирование открывает возможности для реализации ряда сценариев в цепочке поставок, которые ранее считались практически неразрешимыми: совместная оптимизация цен и запасов, оптимизация ассортимента с учетом лояльности, прогнозирование спроса на нестандартные товары (например, драгоценные камни, произведения искусства), оптимизация многослойных потоков в крупномасштабном масштабе, совместная оптимизация для нескольких каналов, оптимизация запасов при частично некорректных электронных данных запасов, максимизация потоков в крупномасштабном масштабе при наличии множества ограничений и т.д. Для многих других сценариев, для которых альтернативные методы уже были применимы, дифференцируемое программирование обеспечивает превосходные численные результаты при минимальных затратах, как с точки зрения усилий специалистов по данным, так и вычислительных ресурсов.
Применение в цепочках поставок
В своей основе дифференцируемое программирование (DP) предлагает путь к объединению проблем, которые слишком долго оставались разрозненными, и их совместному решению: ассортимент, ценообразование, прогнозирование, планирование, мерчандайзинг. Хотя такое объединение может показаться нереалистично амбициозным, на самом деле компании уже используют массу временных решений для борьбы с бесконечными проблемами, возникающими вследствие того, что эти задачи изначально были разделены в рамках организации. Например, ценообразование, очевидно, влияет на спрос, и при этом и планирование, и прогнозирование почти всегда проводятся, полностью игнорируя цены.
DP открывает огромные возможности для принятия приблизительно правильных решений с целостной точки зрения бизнеса, вместо того чтобы быть абсолютно неправильными, перемещая проблемы внутри организации, а не решая их.
Как показывает практика, стремление к приблизительной корректности с учетом бизнеса в целом — это именно то, на чем строятся большинство организаций, использующих электронные таблицы; и из-за отсутствия такой технологии, как DP, способной охватить весь бизнес, электронные таблицы остаются наименее ужасным вариантом.
Электронная коммерция
Возможность привязать 100% проданных единиц к известным клиентам представляет собой огромный скрытый потенциал информации о рынке; тем не менее, когда речь заходит о ценообразовании и оптимизации запасов, информация о лояльности в наши дни зачастую не используется вовсе. DP предоставляет возможность перейти от прогнозирования на основе временных рядов к прогнозированию с помощью временных графов, где каждая пара клиент-продукт, когда-либо наблюдавшаяся, имеет значение, что приводит к более разумным решениям как для запасов, так и для цен.
Бренды класса люкс
Оптимизация ценообразования и ассортиментов – вплоть до уровня отдельных магазинов – давно считалась практически неразрешимой из-за разреженности данных, то есть чрезвычайно низкого объема продаж каждого товара в каждом магазине – вплоть до одной единицы в год. DP предлагает подходы, позволяющие создавать классы решений, работающих в условиях ультра-разреженности, поскольку они сконструированы для обеспечения значительно большей эффективности использования данных по сравнению с традиционными методами глубокого обучения.
Модные бренды
Совместная оптимизация запасов и цен является очевидной необходимостью — поскольку спрос на многие товары может быть чрезвычайно чувствителен к цене — однако совместная оптимизация закупок и ценообразования не могла быть реализована из-за отсутствия инструмента, способного учесть эту взаимосвязь, то есть тот, который позволил бы: закупать больше по более низкой цене порождая больший спрос (и наоборот). DP предоставляет выразительные возможности для решения этой задачи.
Производство
Численная оптимизация крупных многоуровневых сетей рушится при попытках применить классические численные решатели (см. раздел “За пределами оптимизации методом ветвей и отсечений” ниже). Действительно, такие решатели становятся практически непригодными при работе с миллионами переменных или при наличии стохастического поведения. К сожалению, производство характеризуется как большим количеством переменных, так и стохастическим поведением. DP предлагает практичный подход к работе с многоуровневостью без утраты сложности реальных потоковых схем в сети.
Техобслуживание (ремонт, обслуживание, капитальный ремонт)
Если для ремонта системы не хватает хотя бы одной детали, то вся система — например, самолет — остается вне строя. Первым шагом для работы с такими непредсказуемыми и прерывистыми моделями спроса являются вероятностные прогнозы, но выяснение деталей совместного появления необходимых запчастей и превращение этого анализа в действенные рекомендации по управлению запасами оказалось слишком сложным для практического применения. DP упрощает решение подобных задач.
Розничные сети
Каннибализация внутри розничных сетей — обычно между продуктами, а иногда и между магазинами — давно признается проблемой первостепенной важности. Эта проблема усугубляется акциями, специально направленными на переманивание клиентов с одного бренда на другой. DP предоставляет возможность решать проблему каннибализации даже при проведении акций. Вместо простого «прогнозирования акций» DP предлагает оптимизировать сами акции как прибыльные сделки, осуществляемые совместно дистрибьюторским каналом и брендом.
За пределами шумихи вокруг искусственного интеллекта
Искусственный интеллект (ИИ) безусловно был модным технологическим направлением 2018 года, и ажиотаж вокруг него сохраняется и в 2019 году. Однако, несмотря на то, что Lokad широко использует техники, обычно относящиеся к ИИ, например, глубокое обучение, мы не стремились делать акцент на «ИИ»-составляющей технологий Lokad. Действительно, если говорить о количественной оптимизации цепочек поставок, готовые решения на основе ИИ просто не работают. Цепочки поставок вовсе не похожи, скажем, на задачи компьютерного зрения: данные, метрики и задачи здесь крайне разнородны. В результате компании, купившие так называемые «готовые» ИИ-решения, начинают понимать, что эти решения просто никогда не сработают, за исключением, возможно, самых простых случаев, когда «глупые» системы, основанные на правилах, также могли бы работать вполне удовлетворительно. В своей основе цепочки поставок представляют собой сложные, созданные человеком системы, и обычно неразумно ожидать, что система ИИ, основанная исключительно на данных, самостоятельно заново откроет фундаментальные принципы данной области, такие как:
- проведение акций для бренда класса люкс категорически недопустимо.
- отрицательные заказы продаж в ERP на самом деле являются возвратами товаров.
- скоропортящиеся продукты должны транспортироваться в рамках заданных температурных диапазонов.
- варианты по цвету могут служить хорошей заменой одежде, но не варианты по размеру.
- техническое обслуживание самолётов определяется количеством полётных часов и циклов.
- продажи в Великобритании фактически проводятся в фунтах стерлингов, даже если в ERP указана валюта евро.
- люди покупают автозапчасти для своих транспортных средств, а не для себя.
- каждый бриллиант уникален, но цены в основном зависят от каратности, чистоты, цвета и огранки.
- любая отказная деталь, отсутствующая в самолёте, приводит к тому, что самолёт выводится из эксплуатации.
- многие химические заводы требуют недель для перезапуска после остановки.
В этом отношении глубокое обучение оказалось чрезвычайно успешным, поскольку, в отличие от многих предыдущих подходов в машинном обучении, оно обладает глубокой композиционностью: позволяет детально настраивать структуру модели для более эффективного обучения в конкретной ситуации. Настройка структуры модели отличается от настройки входных данных — задачи, известной как инженерия признаков, которая зачастую была единственным доступным вариантом для большинства недиповых алгоритмов машинного обучения, таких как случайные леса.
Однако, поскольку фреймворки глубокого обучения появились из «больших задач» машинного обучения, а именно компьютерного зрения, распознавания голоса, синтеза голоса, автоматизированного перевода, они были глубоко оптимизированы и настроены для сценариев, которые буквально не похожи на те, с которыми сталкиваются цепочки поставок. Таким образом, хотя возможно использовать эти фреймворки для задач оптимизации цепочек поставок, это оказалось не простым и не легким делом. В заключение, с помощью фреймворков глубокого обучения можно добиться многого в цепочках поставок, но рассогласование между цепочками поставок и существующими фреймворками глубокого обучения велико, что ведет к увеличению затрат, задержкам и ограничению реальной применимости этих технологий.
За пределами оптимизации методом ветвей и отсечений
Большинство проблем в цепочках поставок имеют как обучающую составляющую — вызванную несовершенным знанием будущего, текущего состояния рынка, а иногда даже самой системы цепочки поставок (например, неточности в учете запасов) — так и числовую оптимизацию. Решения необходимо оптимизировать с учетом экономических факторов, удовлетворяя множеству нелинейных ограничений (например, минимальные объемы заказа при закупках или размеры партий при производстве).
В области численной оптимизации целочисленное программирование и связанные с ним методы, такие как branch-and-cut, доминировали в этой сфере десятилетиями. Однако эти алгоритмы branch-and-cut и сопутствующие программные решения в основном не смогли обеспечить ту гибкость и масштабируемость, которые необходимы для создания операционных решений для многих, если не для большинства, задач цепочек поставок. Целочисленное программирование является фантастически мощным инструментом для решения узких задач с небольшим количеством переменных (например, размещение компонентов в потребительском электронном устройстве), но показывает значительные ограничения при решении крупномасштабных задач, где присутствует случайность (например, ребалансировка запасов между 10 миллионами артикулов с учетом как вероятностного спроса, так и вероятностных времён транспортировки).
Один из наиболее недооцененных аспектов глубокого обучения заключается в том, что его успех обусловлен не только прорывами в области обучения, но и достижениями в области оптимизации. Научное сообщество обнаружило, что чрезвычайно эффективные алгоритмы способны выполнять оптимизацию в крупных масштабах. Эти оптимизационные алгоритмы «глубокого обучения», основанные на стохастическом градиентном спуске, не только значительно эффективнее своих аналогов из метода ветвей и отсечений, но и гораздо лучше подходят для современного вычислительного оборудования, а именно для SIMD-CPU и (GP)GPU, что на практике обеспечивает ускорение в два или три порядка. Эти прорывы в чистой численной оптимизации имеют огромное значение для цепочек поставок при оптимизации решений. Однако, если фреймворки глубокого обучения уже были несколько неподходящими для решения задач обучения в цепочках поставок, то для задач оптимизации они еще менее пригодны. Действительно, эти оптимизационные задачи еще сильнее зависят от выразительности фреймворка, чтобы специалисты по цепям поставок могли реализовать необходимые ограничения и метрики для оптимизации.
В направлении дифференцируемого программирования
На теории разницы между теорией и практикой не существует. Но, на практике разница есть. Уолтер Дж. Сэвич, Pascal: введение в искусство и науку программирования (1984)
Дифференцируемое программирование (DP) — это ответ на задачу привнести в цепочки поставок лучшее, что может предложить глубокое обучение как в области обучения, так и в области численной оптимизации. Благодаря DP учёные по цепочкам поставок могут максимально использовать свои человеческие интуиции для создания числовых рецептов, глубоко согласованных с бизнес-целями. Нет абсолютного разграничения между глубоким обучением и дифференцируемым программированием: это скорее континуум от самых масштабируемых систем (глубокое обучение) до самых выразительных систем (дифференцируемое программирование) с множеством программных конструкций, которые постепенно становятся доступными — за счёт сырой масштабируемости — при переходе к дифференцируемому программированию. Однако наш опыт в Lokad показывает, что переход от инструментов, созданных преимущественно для компьютерного зрения, к инструментам, разработанным для задач цепочек поставок, и вправду определяет разницу между «интересным» прототипом, который так и не выходит в продакшн, и промышленной системой, развернутой в широком масштабе.
| Глубокое обучение | Дифференцируемое программирование | |
|---|---|---|
| Primary purpose | Обучение | Обучение+Оптимизация |
| Typical usage | Один раз обучение, многократная оценка | Один раз обучение, один раз оценка |
| Input granularity | Объекты с избыточной информацией (изображения, голосовые последовательности, лидарные сканы, полные текстовые страницы) | Объекты с минимальной информацией (продукты, клиенты, артикулы, цены) |
| Input variety | Однородные объекты (например, изображения со стабильным соотношением высоты и ширины) | Разнородные объекты (реляционные таблицы, графы, временные ряды) |
| Input volume | От мегабайт до петабайт | От килобайт до десятков гигабайт |
| Hardware acceleration | Аппаратное ускорение | Хорошо |
| Expressiveness | Статические графы операций с тензорами | (Почти) произвольные программы |
| Stochastic numerical recipes | Встроенные | То же самое |
Типичное использование — это тонкий, но важный момент. С точки зрения «Большого ИИ» время обучения может быть (почти) произвольно долгим: нормально, если вычислительная сеть обучается неделями, а то и месяцами. Позже полученную вычислительную сеть обычно необходимо оценивать в режиме реального времени (например, распознавание образов для автономного вождения). Этот подход принципиально отличается от цепочек поставок, где лучшие результаты достигаются за счёт переобучения сети каждый раз. Более того, с точки зрения DP обученные параметры зачастую и являются тем результатом, который мы стремимся получить, что делает требование к оценке в реальном времени неактуальным. Ожидания к входным данным по таким параметрам, как гранулярность, разнообразие и объём, также существенно различаются. Обычно перспектива «Большого ИИ» делает акцент на почти бесконечном объёме обучающих данных (например, всех текстовых страницах Интернета), где главная задача — найти крайне масштабируемые методы, способные эффективно работать с такими огромными наборами данных. В отличие от этого, задачи цепочек поставок решаются с использованием ограниченного количества высокоструктурированных, но разнообразных данных. Это направляет глубокое обучение к тензорным фреймворкам, которые могут быть значительно ускорены за счёт специализированного аппаратного обеспечения, первоначально GPU, а теперь всё чаще TPU. Дифференцируемое программирование, основанное на стохастическом градиентном спуске, также обладает многими хорошими свойствами для аппаратного ускорения, но в меньшей степени по сравнению со статическими графами операций с тензорами. Важность стохастических числовых рецептов двояка. Во-первых, эти рецепты играют важную роль с точки зрения обучения. Вариационные автоэнкодеры или dropout являются примерами таких рецептов. Во-вторых, эти рецепты важны и с точки зрения моделирования, поскольку позволяют учесть вероятностные аспекты в системах цепочек поставок (например, изменчивость сроков поставки). Напротив, между дифференцируемым программированием и смешанным целочисленным программированием существует огромная пропасть — доминирующим подходом в последние несколько десятилетий оставалась сложная численная оптимизация.
| Смешанное целочисленное программирование | Дифференцируемое программирование | |
|---|---|---|
| Primary purpose | Оптимизация | Обучение+Оптимизация |
| Input granularity and variety | Объекты с минимальной информацией, разнородные | То же самое |
| Input volume | От байтов до десятков мегабайт | От килобайт до десятков гигабайт |
| Hardware acceleration | Плохо | Хорошо |
| Expressiveness | Неравенства по линейным и квадратным формам | (Почти) произвольные программы |
| Stochastic numerical recipes | Нет | Встроенные |
В защиту инструментов смешанного целочисленного программирования можно сказать, что эти инструменты — когда им удаётся справиться с задачей — иногда могут доказать (в математическом смысле), что они нашли оптимальное решение. Ни глубокое обучение, ни дифференцируемое программирование не предоставляют никаких формальных доказательств в этом отношении.
Выводы
Дифференцируемое программирование является прорывом для цепочек поставок. Оно построено на основе глубокого обучения, которое показало свою исключительную эффективность при решении многих задач «Большого ИИ», таких как задачи компьютерного зрения, но было переработано в своей основе для того, чтобы соответствовать реальным вызовам, с которыми сталкиваются практические цепочки поставок. Lokad строит свои технологии прогнозирования, используя глубокое обучение, и переходит к дифференцируемому программированию — следующему поколению нашей предиктивной технологии. Однако DP — это не просто предсказание, оно объединяет оптимизацию и обучение, открывая решения для огромного количества задач, для которых ранее не существовало жизнеспособных методов.