Дифференцируемое программирование

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

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

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

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

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

Электронная коммерция

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

Бренды класса “люкс”

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

Бренды моды

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

Производство

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

MRO (техническое обслуживание, ремонт, модернизация)

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

Розничные сети

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

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

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

  • проведение акций для роскошного бренда - большая ошибка.
  • отрицательные заказы на продажу в ERP на самом деле являются возвратами товаров.
  • свежие продукты питания должны транспортироваться в определенном температурном диапазоне.
  • варианты цветов могут быть хорошими заменителями одежды, но не варианты размеров.
  • техническое обслуживание самолетов осуществляется на основе налета и циклов полетов.
  • продажи в Великобритании фактически осуществляются в фунтах стерлингов, даже если в ERP отображается евро как валюта.
  • люди покупают автозапчасти для своих автомобилей, а не для себя.
  • каждый алмаз уникален, но цены в основном зависят от каратов, чистоты, цвета и огранки.
  • отсутствие любой запрещенной детали на самолете приводит к его наземной стоянке.
  • многие химические заводы требуют нескольких недель для перезапуска после выключения.
power-clouds В отдаленном будущем может наступить время, когда машинное обучение сможет эмулировать человеческий интеллект и давать результаты при решении сложных проблем, однако до сих пор результаты были получены только в относительно узких задачах. Технологии машинного обучения постоянно расширяют границы того, что считается "узкой" задачей, и после десятилетий усилий важные проблемы, такие как безопасное автономное вождение и качественные автоматические переводы, решены или очень близки к решению. Тем не менее, как показано выше, цепи поставок остаются слишком разнообразными для прямого применения упакованных алгоритмов машинного обучения. Даже если глубокое обучение обеспечивает наиболее сильные возможности обобщения на сегодняшний день, для того, чтобы алгоритмы работали вообще, требуется вклад специалиста по цепям поставок.

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

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

За пределами оптимизации методом “разветви и отсечения”

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

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

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

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

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

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

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

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

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

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

Выводы

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