00:01 Введение
02:18 Современный прогноз
06:37 Вероятностное прогнозирование
11:58 До сих пор
15:10 Предполагаемый план на сегодня
17:18 Бестиарий прогнозов
28:10 Метрики - CRPS - 1/2
33:21 Метрики - CRPS - 2/2
37:20 Метрики - Монж-Канторович
42:07 Метрики - правдоподобие - 1/3
47:23 Метрики - правдоподобие - 2/3
51:45 Метрики - правдоподобие - 3/3
55:03 1D распределения - 1/4
01:01:13 1D распределения - 2/4
01:06:43 1D распределения - 3/4
01:15:39 1D распределения - 4/4
01:18:24 Генераторы - 1/3
01:24:00 Генераторы - 2/3
01:29:23 Генераторы - 3/3
01:37:56 Пожалуйста, подождите, пока мы игнорируем вас
01:40:39 Заключение
01:43:50 Предстоящая лекция и вопросы аудитории

Описание

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

Полный транскрипт

Slide 1

Добро пожаловать на эту серию лекций по цепям поставок. Я - Жоанн Верморель, и сегодня я буду представлять “Вероятностное прогнозирование для цепей поставок”. Вероятностное прогнозирование является одним из самых важных, если не самым важным, сдвигов парадигмы в более чем веке науки статистического прогнозирования. Однако, на техническом уровне, это в основном то же самое. Если мы рассматриваем вероятностные модели прогнозирования или их невероятностные альтернативы, это те же самые статистики, те же самые вероятности. Вероятностное прогнозирование отражает изменение в том, как мы должны мыслить о самом прогнозировании. Самое большое изменение, которое принесло вероятностное прогнозирование в цепях поставок, не связано с наукой о прогнозировании. Самое большое изменение заключается в том, как управляются и оптимизируются цепи поставок в присутствии прогностических моделей.

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

Slide 2

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

В этом более широком контексте, где некоторые науки были невероятно успешными, возникающая область прогнозирования в самом начале 20-го века взяла на себя задачу воспроизвести то, что эти точные науки достигли в области экономики. Например, если мы посмотрим на пионеров, таких как Роджер Бабсон, одного из отцов современного экономического прогнозирования, он создал успешную компанию экономического прогнозирования в Соединенных Штатах в начале 20-го века. Девиз компании был дословно: “На каждое действие есть равное и противоположное действие”. Видение Бабсона заключалось в том, чтобы перенести успехи ньютоновской физики в область экономики и в конечном итоге достичь таких же точных результатов.

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

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

Slide 3

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

Например, планирование продаж и операций (S&OP) основано на идее, что объединенное, количественное видение компании может быть достигнуто, если все заинтересованные стороны соберутся вместе и будут сотрудничать в создании прогноза. Аналогично, open-to-buy в основном является методом, основанным на идее того, что возможно создать произвольно точные прогнозы сверху вниз. Более того, даже когда мы смотрим на множество инструментов, которые очень распространены в области прогнозирования и планирования в сфере цепей поставок, таких как бизнес-аналитика и таблицы, эти инструменты в значительной степени ориентированы на прогнозирование временных рядов. В основном идея заключается в том, что вы можете продлить свои исторические данные в будущее, имея одну точку на каждый интересующий период времени. Эти инструменты, по своей сути, имеют огромное количество трения, когда речь идет о понимании расчетов, связанных с вероятностным прогнозом, где есть не только одно будущее, но и все возможные будущие события.

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

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

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

Слайд 5

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

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

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

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

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

Слайд 6

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

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

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

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

Слайд 7

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

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

Теперь есть прогноз множества, который возвращает набор точек вместо одной точки. Существует вариация в зависимости от того, как вы строите набор. Если мы рассмотрим прогноз PAC, PAC означает Probably Approximately Correct. Это, по сути, фреймворк, введенный Валиантом около двадцати лет назад, и он утверждает, что набор, который является вашим прогнозом, имеет определенную вероятность того, что наблюдается результат в пределах вашего прогноза с определенной вероятностью. Набор, который вы производите, на самом деле представляет собой все точки, которые попадают в область, характеризующуюся максимальным расстоянием до точки отсчета. В некотором смысле, перспектива PAC в отношении прогнозирования уже является прогнозом множества, потому что вывод уже не является точкой. Однако у нас все еще есть точка отсчета, центральный результат, и у нас есть максимальное расстояние до этой центральной точки. Мы просто говорим, что существует определенная указанная вероятность того, что результат в конечном итоге будет обнаружен в пределах нашего прогнозируемого набора.

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

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

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

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

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

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

Slide 8

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

Именно об этом и речь в метриках, посвященных вероятностному прогнозированию, и непрерывная приоритетная вероятность (CRPS) является обобщением абсолютной ошибки для одномерных вероятностных прогнозов. Мне искренне жаль за это ужасное название - CRPS. Я не придумал эту терминологию; она была передана мне. Формула CRPS приведена на экране. По сути, функция F - это функция кумулятивного распределения; это вероятностный прогноз, который делается. Точка x - это фактическое наблюдение, и значение CRPS - это то, что вы вычисляете между вашим вероятностным прогнозом и одним только что сделанным наблюдением.

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

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

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

Slide 9

В то время как CRPS может показаться довольно запутанным и сложным, реализация на самом деле довольно проста. На экране представлен небольшой скрипт Envision, иллюстрирующий, как CRPS может использоваться с точки зрения языка программирования. Envision - это предметно-ориентированный язык программирования, посвященный предиктивной оптимизации цепей поставок, разработанный Lokad. В этих лекциях я использую Envision для ясности и краткости. Однако, обратите внимание, что в Envision нет ничего уникального; те же результаты можно получить на любом языке программирования, будь то Python, Java, JavaScript, C#, F# или любой другой. Мой поинт в том, что это просто потребует большего количества строк кода, поэтому я придерживаюсь Envision. Все фрагменты кода, приведенные здесь в этой лекции и, кстати, в предыдущих, являются автономными и полными. Вы теоретически можете скопировать и вставить этот код, и он будет работать. Здесь нет никаких модулей, скрытого кода и необходимости настройки среды.

Итак, вернемся к фрагменту кода. В строках один и два мы определяем одномерные распределения. Я вернусь к тому, как эти одномерные распределения работают на самом деле в Envision, но здесь у нас есть два распределения: одно - это распределение Пуассона, которое является одномерным дискретным распределением, и второе на второй строке - это то же самое распределение Пуассона, но сдвинутое на две единицы вправо. Вот что означает “+2”. В третьей строке мы вычисляем расстояние CRPS между распределением и значением 3, которое является числом. Таким образом, мы находим эту асимметрию в терминах типов данных, о которой я говорил. Затем результаты отображаются внизу, как вы можете видеть внизу экрана.

В четвертой строке мы вычисляем CRPS между распределением A и распределением B. Хотя классическое определение CRPS относится к распределению и одной точке, совершенно очевидно обобщить это определение на пару распределений. Вам просто нужно взять ту же самую формулу для CRPS и заменить функцию Хевисайда на функцию распределения второго распределения. “show” операторы с третьей по шестую строку приводят к отображению, которое вы можете видеть внизу экрана, что является буквально снимком экрана.

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

Slide 10

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

Проблема Монжа-Канторовича, изначально не связанная с вероятностным прогнозированием, была представлена французским ученым Гаспаром Монжем в мемуаре 1781 года под названием “Mémoire sur la théorie des déblais et des remblais”, что можно перевести как “Мемуар о теории перемещения земли”. Один из способов понять проблему Монжа-Канторовича - это представить ситуацию, когда у нас есть список шахт, обозначенных как M на экране, и список фабрик, обозначенных как F. Шахты производят руду, а фабрики потребляют руду. Мы хотим создать план транспортировки, T, который отображает всю руду, производимую шахтами, в потребление, необходимое фабрикам.

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

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

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

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

Слайд 11

Перспектива Байеса состоит в рассмотрении серии наблюдений с точки зрения априорного предположения. Перспектива Байеса обычно понимается в противоположность частотистской перспективе, которая оценивает частоту результатов на основе фактических наблюдений. Идея заключается в том, что частотистская перспектива не сопровождается априорными предположениями. Таким образом, перспектива Байеса дает нам инструмент, известный как правдоподобие, чтобы оценить степень удивления при рассмотрении наблюдений и заданной модели. Модель, которая является в основном вероятностной моделью прогнозирования, является формализацией наших априорных предположений. Перспектива Байеса дает нам способ оценить набор данных относительно вероятностной модели прогнозирования. Чтобы понять, как это делается, мы должны начать с правдоподобия для одной точки данных. Правдоподобие, когда у нас есть наблюдение x, является вероятностью наблюдать x в соответствии с моделью. Здесь предполагается, что модель полностью характеризуется тета, параметрами модели. Перспектива Байеса обычно предполагает, что модель имеет некоторую параметрическую форму, и тета - это полный вектор всех параметров модели.

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

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

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

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

Слайд 12

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

В строках один и два мы генерируем фиктивный набор данных. Мы создаем таблицу с 2 000 строками, а затем на строке два генерируем 2 000 отклонений, наши наблюдения из распределения Пуассона с средним значением два. Итак, у нас есть 2 000 наблюдений. На строке три мы начинаем блок автодифференцирования, который является частью парадигмы дифференцируемого программирования. Этот блок будет выполнять стохастический градиентный спуск и многократно итерировать по всем наблюдениям в таблице наблюдений. Здесь таблица наблюдений - это таблица T.

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

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

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

Slide 13

Функция log_likelihood.poisson, которую мы использовали ранее, является частью стандартной библиотеки Envision. Однако здесь нет никакой магии. Давайте посмотрим, как эта функция на самом деле реализована. Первые две строки вверху дают нам реализацию логарифмической функции правдоподобия распределения Пуассона. Распределение Пуассона полностью характеризуется своим одним параметром, лямбда, и функция логарифмической функции правдоподобия принимает только два аргумента: один параметр, который полностью характеризует распределение Пуассона, и фактическое наблюдение. Фактическая формула, которую я написал, является буквально учебным материалом. Это то, что вы получаете, когда реализуете учебную формулу, которая характеризует распределение Пуассона. Здесь нет ничего особенного.

Обратите внимание на то, что эта функция помечена ключевым словом autodiff. Как мы видели в предыдущей лекции, ключевое слово autodiff гарантирует, что автоматическое дифференцирование может правильно протекать через эту функцию. Логарифмическая функция правдоподобия распределения Пуассона также использует другую специальную функцию, log_gamma. Функция log_gamma - это логарифм гамма-функции, которая является обобщением факториальной функции на комплексные числа. Здесь нам нужно только обобщение факториальной функции на действительные положительные числа.

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

Slide 14

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

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

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

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

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

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

Slide 15

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

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

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

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

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

Slide 16

Чтобы проиллюстрировать, что означает работа с ranvars, рассмотрим ситуацию прогнозирования времени выполнения заказа, а именно, вероятностного прогнозирования времени выполнения заказа. На экране показан короткий скрипт Envision, который показывает, как построить такой вероятностный прогноз. В строках 1-5 мы вводим таблицу T, которая содержит четыре времени выполнения заказа с вариацией, со значениями 11 дней, 10 дней, 13 дней и 90 дней. Хотя четыре наблюдения очень мало, к сожалению, очень часто имеется очень ограниченное количество точек данных, касающихся времени выполнения заказа. Действительно, если мы рассматриваем зарубежного поставщика, который получает два заказа в год, то для сбора этих четырех точек данных потребуется два года. Поэтому важно иметь техники, которые могут работать даже с крайне ограниченным набором наблюдений.

В строке 7 мы создаем ranvar, непосредственно агрегируя четыре наблюдения. Здесь термин “ranvar”, который появляется в строке 7, на самом деле является агрегатором, который принимает серию чисел в качестве входных данных и возвращает одно значение типа данных ranvar. Результат отображается в верхнем правом углу экрана, который является эмпирическим ranvar.

Однако этот эмпирический ranvar не является реалистичным отображением фактического распределения. Например, хотя мы можем наблюдать время выполнения заказа в 11 дней и время выполнения заказа в 13 дней, кажется нереалистичным не иметь возможности наблюдать время выполнения заказа в 12 дней. Если мы интерпретируем этот ranvar как вероятностный прогноз, то он будет говорить, что вероятность когда-либо наблюдать время выполнения заказа в 12 дней равна нулю, что кажется неверным. Это, очевидно, проблема переобучения.

Для исправления этой ситуации, на строке 8 мы сглаживаем исходный ranvar, вызывая функцию “smooth”. Функция smooth в основном заменяет исходный ranvar смесью распределений. Для каждого интервала исходного распределения мы заменяем интервал распределением Пуассона с средним значением, сосредоточенным в этом интервале, взвешенным в соответствии с соответствующей вероятностью интервалов. Через сглаженное распределение мы получаем гистограмму, которая отображается в середине справа на экране. Это уже выглядит намного лучше; у нас больше нет странных пробелов, и у нас нет нулевой вероятности посередине. Более того, при рассмотрении вероятности наблюдения времени выполнения заказа в 12 дней, эту модель дает нам ненулевую вероятность, что звучит гораздо более разумно. Она также дает нам ненулевую вероятность превышения 20 дней, и учитывая, что у нас было четыре точки данных и мы уже наблюдали время выполнения заказа в 19 дней, идея о том, что время выполнения заказа в 20 дней возможно, кажется очень разумной. Таким образом, с этим вероятностным прогнозом у нас есть хорошее распределение, которое представляет ненулевую вероятность для этих событий, что очень хорошо.

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

Таким образом, на строке 9 мы вводим условно скорректированный ranvar, говоря, что он должен быть больше самого малого времени выполнения заказа, когда-либо наблюдаемого. У нас есть “min_of(T, x)”, который берет наименьшее значение среди чисел в таблице T, а затем мы используем “max”, чтобы сделать максимум между распределением и числом. Результат должен быть больше этого значения. Скорректированный ranvar отображается справа в самом низу, и здесь мы видим наш окончательный прогноз времени выполнения заказа. Последний прогноз кажется очень разумным вероятностным прогнозом времени выполнения заказа, учитывая, что у нас есть крайне ограниченный набор данных всего из четырех точек. Мы не можем сказать, что это отличный вероятностный прогноз, однако я бы утверждал, что это прогноз, пригодный для производства, и такие методы будут работать нормально в производстве, в отличие от среднего точечного прогноза, который значительно недооценивает риск изменения времени выполнения заказа.

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

Slide 17

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

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

Слайд 18

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

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

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

На второй строке мы получаем отклонение из распределения Пуассона с математическим ожиданием три, а затем добавляем единицу к отклонению. По сути, мы получаем случайное число из этого распределения Пуассона, а затем добавляем единицу. На третьей строке мы собираем это отклонение в L1, который действует как аккумулятор для агрегатора ranvar. Это точно такой же агрегатор, как тот, который мы ранее вводили для нашего примера времени выполнения. Здесь мы собираем все эти наблюдения в L1, что дает нам одномерное распределение, полученное с помощью процесса Монте-Карло. На пятой строке мы конструируем то же самое одномерное дискретное распределение, но на этот раз мы делаем это с помощью алгебры случайных величин. Таким образом, мы просто используем Пуассон минус три и добавляем единицу. На пятой строке здесь не происходит процесса Монте-Карло; это чисто вопрос дискретных вероятностей и сверток.

Когда мы визуально сравниваем два распределения на строках семь и восемь, мы видим, что они почти идентичны. Я говорю “почти”, потому что, хотя мы используем 2 000 итераций, что много, это не бесконечность. Отклонения между точными вероятностями, которые вы получаете с помощью ranvar, и приближенными вероятностями, которые вы получаете с помощью процесса Монте-Карло, все еще заметны, хотя и не большие.

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

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

Слайд 19

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

Во-первых, генераторы должны быть быстрыми. Метод Монте-Карло всегда является компромиссом между количеством итераций, которые вы хотели бы иметь, и количеством итераций, которые вы можете себе позволить, учитывая доступные вычислительные ресурсы. Да, современные компьютеры имеют много вычислительной мощности, но процессы Монте-Карло могут потреблять невероятное количество ресурсов. Вам нужно что-то, что по умолчанию работает очень быстро. Если мы вернемся к компонентам, представленным во второй лекции четвертой главы, у нас есть очень быстрые функции, такие как ExhaustShift или WhiteHash, которые являются неотъемлемыми для создания примитивов, позволяющих генерировать элементарные случайные генераторы, которые работают очень быстро. Вам это нужно, иначе у вас будут проблемы. Во-вторых, вам нужно распределить выполнение. Наивная реализация программы Монте-Карло заключается в том, чтобы иметь цикл, который выполняется последовательно. Однако, если вы используете только один процессор для решения ваших требований Монте-Карло, по сути, вы возвращаетесь к вычислительной мощности, которая характеризовала компьютеры двадцать лет назад. На этот момент было сказано в самой первой лекции четвертой главы. За последние два десятилетия компьютеры стали мощнее, но это произошло в основном за счет добавления процессоров и степеней параллелизации. Поэтому вам нужно иметь распределенную перспективу для ваших генераторов.

Наконец, выполнение должно быть детерминированным. Что это значит? Это означает, что если один и тот же код запускается дважды, он должен давать вам точно такие же результаты. Это может показаться противоречивым, потому что мы имеем дело с случайными методами. Тем не менее, необходимость в детерминизме возникла очень быстро. Это было обнаружено в мучительной форме в 90-х годах, когда финансы начали использовать генераторы Монте-Карло для своей ценообразования. Финансы давно перешли к вероятностному прогнозированию и широко использовали генераторы Монте-Карло. Они узнали, что если у вас нет детерминизма, становится практически невозможно воспроизвести условия, которые привели к ошибке или сбою. С точки зрения поставочной цепи, ошибки в расчетах заказов на закупку могут быть чрезвычайно дорогостоящими.

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

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

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

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

Представленный на экране скрипт моделирует возникновение дефицита товара, чтобы мы могли иметь правильную оценку уровня запаса для этого SKU в конце периода. Строки с 1 по 10 определяют фиктивные данные, характеризующие нашу модель. Строки с 3 по 6 содержат параметры модели ISSM. Мы уже видели модель ICSM в самой первой лекции этой пятой главы. По сути, эта модель генерирует траекторию спроса с одной точкой данных на каждый день. Период интереса определен в таблице дней, и у нас есть параметры для этой траектории в самом начале.

В предыдущих лекциях мы представили модель AICSM и необходимые методы для обучения этих параметров с помощью дифференцируемого программирования. Сегодня мы используем модель, предполагая, что мы уже все выучили. В строке 7 мы определяем начальный запас на складе, который обычно получается из ERP или WMS. В строках 9 и 10 мы определяем количество и дату пополнения. Эти точки данных обычно получаются в виде предполагаемого времени прибытия, указанного поставщиком и сохраненного в ERP. Мы предполагаем, что дата доставки известна точно; однако, заменить эту одну дату на вероятностный прогноз времени выполнения будет несложно.

Строки с 12 по 21 содержат модель ISSM, которая генерирует траекторию спроса. Мы находимся внутри цикла Monte Carlo, и для каждой итерации Monte Carlo мы перебираем каждый день периода интереса. Итерация дней начинается со строки 13. У нас происходит механика ESSM, но в строках 19 и 20 мы обновляем переменную “наличие на складе”. Переменная “наличие на складе” не является частью модели ISSM; это что-то дополнительное. В строке 19 мы говорим, что запас на складе - это запас на складе от вчера плюс входящая поставка, которая будет равна нулю для большинства дней и пяти единицам для 13 сентября. Затем, в строке 20, мы обновляем запас на складе, говоря, что определенное количество единиц потребляется спросом дня, и у нас есть это максимальное значение 0, чтобы сказать, что уровень запаса не может стать отрицательным.

Наконец, мы собираем конечный запас на складе в строке 21, а в строке 23 этот конечный запас на складе отображается. Это гистограмма, которую вы видите справа на экране. Здесь мы видим распределение с очень нерегулярной формой. Эту форму нельзя получить с помощью алгебры случайных величин. Генераторы невероятно выразительны; однако не следует путать выразительность этих генераторов с точностью. Хотя генераторы невероятно выразительны, оценить точность таких генераторов не тривиально. Не ошибайтесь, каждый раз, когда у вас есть генератор или симулятор, в игре у вас есть вероятностный прогноз, и симуляции могут быть крайне неточными, как и любой прогноз, вероятностный или нет.

Slide 20

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

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

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

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

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

Slide 21

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

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

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

Slide 22

Это завершает лекцию на сегодня. В следующий раз, 6 апреля, я буду рассказывать о принятии решений в розничной торговле и увидим, как вероятностные прогнозы, которые были представлены сегодня, могут быть полезны для принятия базового решения в цепи поставок, а именно пополнение запасов в розничной сети. Лекция состоится в тот же день недели, в среду, в то же время, в 15:00, и это будет первая среда апреля.

Вопрос: Можем ли мы оптимизировать разрешение по точности по отношению к объему ОЗУ для Envision?

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

Конечно, при проектировании алгоритма сжатия есть множество компромиссов, которые нужно учитывать. Например, корзины, которые очень близки к нулю, должны иметь идеальное разрешение. Если вы хотите иметь вероятность наблюдения нулевого спроса, вы не хотите, чтобы ваше приближение объединяло корзины для нулевого спроса, одной единицы и двух единиц. Однако, если вы смотрите на корзины для вероятности наблюдения 1 000 единиц спроса, объединение 1 000 и 1 001 единиц спроса, вероятно, будет приемлемым. Таким образом, есть множество трюков для разработки алгоритма сжатия, который действительно соответствует требованиям цепи поставок. Это на порядки проще по сравнению с тем, что происходит при сжатии изображений. Я считаю, что правильно разработанный инструментарий в основном абстрагирует проблему для специалистов по цепям поставок. Это слишком низкоуровнево, и в большинстве случаев вам не нужно микрооптимизировать. Если вы Walmart и у вас не только 1 миллион SKU, а несколько сотен миллионов SKU, тогда микрооптимизация может иметь смысл. Однако, если речь идет о чрезвычайно больших цепях поставок, я считаю, что можно иметь нечто, что будет достаточно хорошим, чтобы производительность, вызванная отсутствием полной оптимизации, была в основном незначительной.

Вопрос: Какие практические соображения следует учитывать с точки зрения цепи поставок при оптимизации этих параметров?

Когда речь идет о вероятностном прогнозировании в цепи поставок, иметь точность более одной части из 100 000 обычно несущественно, просто потому что у вас никогда не бывает достаточно данных, чтобы иметь точность в оценке вероятностей, которая более детализирована, чем одна часть из 100 000.

Вопрос: Какая отрасль больше всего выигрывает от вероятностного подхода к прогнозированию?

Краткий ответ: чем более неустойчивы и неправильны ваши паттерны, тем больше выгоды. Если у вас есть прерывистый спрос, вы получаете большую выгоду; если у вас непостоянный спрос, вы получаете большую выгоду; если у вас разнообразные сроки поставки и непостоянные потрясения в вашей цепи поставок, вы получаете наибольшую выгоду. В крайнем случае, допустим, если мы рассматриваем цепь поставок водоснабжения, потребление воды является крайне плавным и практически никогда не имеет больших потрясений - только микро-потрясения в лучшем случае. Это такая проблема, которая не выигрывает от вероятностного подхода. Идея в том, что есть несколько ситуаций, когда классические точечные прогнозы дают вам очень точные прогнозы. Если вы находитесь в ситуации, когда ваши прогнозы для всех ваших продуктов имеют ошибку менее пяти процентов при прогнозировании вперед, тогда вам не нужны вероятностные прогнозы; вы находитесь в ситуации, когда иметь действительно точный прогноз действительно работает. Однако, если вы, как многие компании, находитесь в ситуации, когда точность вашего прогноза очень низкая, с расхождением в 30% или более, тогда вы получаете большую выгоду от вероятностного прогнозирования. Кстати, когда я говорю о 30% ошибке прогнозирования, я всегда имею в виду очень детализированный прогноз. Многие компании скажут вам, что их прогнозы точны на 5%, но если вы все объедините, это может быть очень вводящим в заблуждение восприятием точности вашего прогнозирования. Точность вашего прогнозирования имеет значение только на самом детализированном уровне, обычно на уровне SKU и ежедневно, потому что ваши решения принимаются на уровне SKU и ежедневно. Если на уровне SKU и ежедневно вы можете получить свои самые детализированные прогнозы с точностью до 5%, тогда вам не нужны вероятностные прогнозы. Однако, если вы наблюдаете двузначные неточности в процентах, тогда вы получите большую выгоду от вероятностного прогнозирования.

Вопрос: Поскольку сроки поставки могут быть сезонными, вы бы разложили прогнозы сроков поставки на несколько, каждый для каждого отдельного сезона, чтобы избежать рассмотрения многомодального распределения?

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

Вопрос: Является ли вероятностное прогнозирование хорошим подходом, когда вы хотите прогнозировать прерывистый спрос?

Абсолютно. Фактически, я считаю, что когда у вас есть прерывистый спрос, вероятностное прогнозирование не только является хорошим методом, но классический точечный прогноз просто абсолютно бессмысленный. С классическим прогнозом вы обычно сталкиваетесь со всеми этими нулями. Что вы делаете с этими нулями? Вы получаете значение, которое очень низкое и дробное, что на самом деле не имеет смысла. С прерывистым спросом вопрос, на который вы действительно хотите ответить, звучит так: достаточно ли моего запаса для обслуживания тех всплесков спроса, которые возникают время от времени? Если вы используете средний прогноз, вы никогда не узнаете об этом.

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

Вопрос: Если мы заменим время выполнения заказа на распределение, будет ли всплеск, представленный гладкой колоколообразной кривой на первом слайде для генератора?

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

Введение распределения для замены времени выполнения заказа не обязательно сглаживает результаты, которые вы получаете в конце; это зависит от того, на что вы смотрите. Например, если вы рассматриваете самый экстремальный случай избыточного запаса, изменчивое время выполнения заказа может даже усугубить риск наличия мертвого инвентаря. Почему так? Если у вас очень сезонный продукт и изменчивое время выполнения заказа, и продукт приходит после окончания сезона, у вас остается продукт, который не в сезоне, что увеличивает риск наличия мертвого инвентаря в конце сезона. Так что это сложно. Факт, что вы заменяете переменную на ее вероятностную замену, не будет естественным образом сглаживать то, что вы будете наблюдать; иногда это может сделать распределение еще более резким. Так что ответ: это зависит.

Отлично, я думаю, это все на сегодня. Увидимся в следующий раз.