00:21 Введение
01:53 От прогнозирования к обучению
05:32 Машинное обучение 101
09:51 До сих пор
11:49 Мои прогнозы на сегодня
13:54 Точность на данных, которых у нас нет 1/4
16:30 Точность на данных, которых у нас нет 2/4
20:03 Точность на данных, которых у нас нет 3/4
25:11 Точность на данных, которых у нас нет 4/4
31:49 Слава шаблонному сопоставителю
35:36 Глубина обучения 1/4
39:11 Глубина обучения 2/4
44:27 Глубина обучения 3/4
47:29 Глубина обучения 4/4
51:59 Иди крупным или иди домой
56:45 За пределами потерь 1/2
01:00:17 За пределами потерь 2/2
01:04:22 За пределами метки
01:10:24 За пределами наблюдения
01:14:43 Заключение
01:16:36 Предстоящая лекция и вопросы аудитории

Описание

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

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

Slide 1

Добро пожаловать на серию лекций по цепям поставок. Я - Жоанн Верморель, и сегодня я буду рассказывать о «Машинном обучении для цепей поставок». Мы не можем печатать товары в 3D в режиме реального времени, и мы не можем телепортировать их туда, где они должны быть доставлены. Фактически, практически все решения в цепях поставок должны быть приняты с учетом будущего, предвидя будущий спрос или изменения цен, отражая неявно или явно предполагаемые будущие рыночные условия, как с точки зрения спроса, так и с точки зрения предложения. В результате прогнозирование является неотъемлемой и несократимой частью цепей поставок. Мы никогда не знаем будущего наверняка; мы можем только догадываться о будущем с разной степенью уверенности. Цель этой лекции - понять, что машинное обучение приносит на стол в отношении предвидения будущего.

Slide 2

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

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

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

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

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

Slide 3

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

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

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

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

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

Slide 4

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

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

Slide 5

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

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

Slide 6

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

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

Slide 7

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

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

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

Slide 8

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

По сути, эта формула, прямо из теории VC, говорит нам, что реальный риск ограничен сверху эмпирическим риском, который является риском, который мы можем измерить на имеющихся у нас данных, плюс еще одно слагаемое, часто называемое структурным риском. У нас есть количество наблюдений, n, и эта, которая является вероятностью ошибки, так же, как в теории PAC. У нас также есть h, который является измерением VC-размерности модели. VC-размерность отражает способность модели к обучению; чем больше способность модели к обучению, тем больше VC-размерность.

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

Прорыв в 1995 году произошел благодаря реализации Кортесом и Вапником того, что позже стало известно как Метод опорных векторов (SVM). Эти SVM являются прямой реализацией этой математической теории. Суть в том, что благодаря наличию теории, которая дает нам это неравенство, мы можем создать модель, которая балансирует количество ошибок, которые мы делаем на данных (эмпирический риск) и VC-размерность. Мы можем прямо построить математическую модель, которая точно балансирует эти два фактора, чтобы сделать равенство как можно более точным и как можно ниже. Вот в чем суть Метода опорных векторов (SVM). Эти результаты были настолько потрясающими, операционно, что они дали очень хорошие результаты и оказали значительное влияние на сообщество машинного обучения. Впервые точность на данных, которых у нас нет, не была послесловием; она была непосредственно получена самим математическим дизайном самого метода. Это было настолько потрясающе и мощно, что оно отвлекло всё сообщество машинного обучения на десятилетие, следуя этому пути. Как мы увидим, этот путь оказался в основном тупиковым, но были веские причины для этого: это был абсолютно потрясающий результат.

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

Slide 9

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

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

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

Интересно, что Gradient Boosted Trees доминируют в высоких баллах практически всех соревнований по машинному обучению уже десять и более лет. Если вы посмотрите на около 80-90% соревнований Kaggle, вы увидите, что первое место занимает именно Gradient Boosted Tree. Однако, несмотря на эту невероятную доминирование в соревнованиях по машинному обучению, применение Gradient Boosted Trees к проблемам в сфере поставок практически не привело к прорыву. Основная причина заключается в том, что Gradient Boosted Trees имеют очень мало механического сочувствия; их конструкция совсем не дружественна к вычислительному оборудованию, которое у нас есть.

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

Что касается истории Gradient Boosted Trees, здесь был ряд реализаций, начиная с GBM (Gradient Boosted Machines) в 2007 году, который действительно популяризировал этот подход в пакете R. С самого начала были проблемы с масштабируемостью. Люди быстро начали параллелизировать выполнение с помощью PGBRT (Parallel Gradient Boosted Regression Trees), но это все равно было очень медленно. XGBoost стал вехой, потому что он получил порядок большей масштабируемости. Основная идея в XGBoost заключалась в принятии столбцового дизайна данных для ускорения построения деревьев. Позже LightGBM переиспользовал все идеи XGBoost, но изменил стратегию построения деревьев. XGBoost строил дерево по уровням, в то время как LightGBM решил строить дерево по листьям. В результате LightGBM сейчас работает на несколько порядков быстрее, при том же вычислительном оборудовании, чем GBM когда-либо работал. Однако с практической точки зрения в сфере поставок использование Gradient Boosted Trees обычно является непрактично медленным. Их можно использовать, просто это такое препятствие, что обычно не стоит этого делать.

Slide 10

Загадочно то, что Gradient Boosted Trees достаточно мощны, чтобы выигрывать практически все соревнования по машинному обучению, и тем не менее, по моему скромному мнению, эти модели являются технологической тупиковой ветвью. Метод опорных векторов, Random Forests и Gradient Boosted Trees имеют общую черту - они являются не более чем шаблонными соответствиями. Они очень хорошие шаблонные соответствия, заметьте, но больше ничего. То, что они делают исключительно хорошо, это выбор переменных, и они в этом очень хороши, но в этом мало что есть. В частности, в их способности преобразовывать входные данные во что-то, кроме прямого выбора или фильтрации входных данных, нет никакой выразительности.

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

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

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

Slide 11

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

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

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

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

Slide 12

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

Что мы делаем в середине? Давайте займемся линейной алгеброй, а точнее, умножением матриц. Почему именно так? Ответ на вопрос, почему умножение матриц было дано в самой первой лекции этой четвертой главы. Это связано с тем, как современные компьютеры спроектированы; по сути, можно достичь относительно значительного ускорения обработки, если придерживаться линейной алгебры. Итак, линейная алгебра. Теперь, если я возьму свои входные данные и применю линейное преобразование, которое представляет собой просто умножение матрицы на матрицу с именем W (эта матрица содержит параметры, которые мы хотим изучить позже), как мы можем сделать его более сложным? Мы можем добавить второе умножение матрицы. Однако, если вы помните свои курсы по линейной алгебре, когда вы умножаете линейную функцию на другую линейную функцию, то получаете линейную функцию. Так что, если мы просто составим умножение матриц, у нас все равно будет умножение матриц, и оно все равно будет полностью линейным.

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

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

То, что я строю здесь, называется плотными слоями. Плотный слой - это в основном умножение матрицы с нелинейностью (выпрямленная линейная единица). Мы можем их стекать. На экране вы можете увидеть сеть, которая обычно называется многослойным перцептроном, и у нас есть три слоя. Мы могли бы продолжать стекать их, и у нас могло бы быть 20 или 2000 слоев; это не имеет значения. Реальность в том, что, несмотря на свою простоту, если вы возьмете такую ​​сеть с несколькими слоями и поместите ее в вашу систему дифференцируемого программирования, которая даст вам параметры, дифференцируемое программирование в качестве базового слоя сможет обучить параметры, которые изначально выбраны случайным образом. Если вы хотите инициализировать его, просто инициализируйте все параметры случайным образом. Вы получите довольно приличные результаты для очень широкого спектра проблем.

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

Slide 13

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

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

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

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

Slide 14

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

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

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

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

Slide 15

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

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

Два года назад статья “Deep Double Descent”, опубликованная OpenAI, пролила свет на эту ситуацию. Команда показала, что у нас есть своего рода “долина странностей” в области машинного обучения. Идея заключается в том, что если взять модель и иметь всего несколько параметров, у вас будет много смещения, и качество ваших результатов на невидимых данных не будет таким хорошим. Это соответствует классическому видению машинного обучения и классическому статистическому видению также. Если вы увеличиваете количество параметров, вы улучшаете качество вашей модели, но в какой-то момент вы начнете переобучаться. Это именно то, что мы видели в предыдущем обсуждении недообучения и переобучения. Нужно найти баланс.

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

Это также помогает понять, почему глубокое обучение было относительно поздним на вечеринке машинного обучения. Чтобы глубокое обучение преуспело, нам сначала нужно было преуспеть в создании моделей, которые могли бы обрабатывать десятки тысяч или даже сотни тысяч параметров, чтобы преодолеть эту “долину странностей”. В 80-х и 90-х годах не было возможности достичь прорыва в глубоком обучении, просто потому что вычислительные ресурсы аппаратного обеспечения не могли преодолеть эту “долину странностей”.

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

Slide 16

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

Но если мы попытаемся решить эту проблему с помощью классических метрик прогнозирования, таких как средняя абсолютная процентная ошибка (MAPE), средняя абсолютная ошибка (MAE), средняя квадратичная ошибка (MSE) или другие метрики, которые работают SKU по SKU, день за днем или неделя за неделей, мы не сможем уловить ни одно из этих поведений. На самом деле, то, что нам действительно нужно, это метрика, которая бы улавливала, насколько хорошо мы улавливаем все эти эффекты каннибализации и замещения. Но как должна выглядеть эта функция потерь? Это совершенно неясно и, кажется, требует довольно сложного поведения. Одним из ключевых прорывов глубокого обучения было, по сути, прийти к выводу, что функцию потерь нужно изучить. Именно так было создано изображение на экране. Это полностью сгенерированное машиной изображение; ни один из этих людей не реален. Они были сгенерированы, и проблема заключалась в том, как построить функцию потерь или метрику, которая бы говорила вам, является ли изображение хорошим, фотореалистичным портретом человека или нет?

Реальность заключается в том, что если вы начинаете думать в терминах стиля средней абсолютной процентной ошибки (MAPE), вы получаете метрику, которая работает пиксель за пикселем. Проблема в том, что метрика, которая работает пиксель за пикселем, не говорит вам ничего о том, выглядит ли изображение в целом как человеческое лицо. У нас та же проблема в модном магазине для SKU и прогнозирования спроса. Очень легко иметь метрику на уровне SKU, но это ничего не говорит нам о большой картине магазина в целом. Однако с точки зрения цепочки поставок нас не интересует точность на уровне SKU; нас интересует точность на уровне магазина. Мы хотим знать, хороши ли уровни запасов в целом для магазина, а не хороши ли они для одного SKU, а затем для другого SKU. Как же глубокое обучение решает эту проблему?

Slide 17

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

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

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

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

Slide 18

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

Это, по сути, ситуация, в которой бессмысленно использовать обучение с учителем. Мы хотим что-то узнать; у нас есть данные, но у нас нет правильных ответов. У нас нет этих меток. У нас есть просто масса данных. Обучение без учителя десятилетиями считалось священной граалью машинного обучения. В течение очень долгого времени это было будущее, но далекое будущее. Однако в последнее время в этой области произошли некоторые невероятные прорывы. Один из прорывов был, например, достигнут командой Facebook с документом под названием “Unsupervised Machine Translation Using Monolingual Corpora Only”.

Команда Facebook в этой статье построила систему перевода, которая использовала только корпус английского текста и корпус французского текста. Эти два корпуса не имеют ничего общего; это даже не один и тот же текст. Это просто текст на английском и текст на французском. Затем, не предоставляя системе фактический перевод, они научили систему переводить с английского на французский. Это абсолютно потрясающий результат. Кстати, способ достижения этого результата очень напоминает генеративно-состязательные сети, о которых я только что рассказывал. Аналогично, два года назад команда Google опубликовала BERT (Bidirectional Encoder Representations from Transformers). BERT - это модель, которая обучается в значительной степени без учителя. Мы снова говорим о тексте. С BERT это делается путем использования огромных баз данных текста и случайного маскирования слов. Затем вы обучаете модель предсказывать эти слова и повторяете это для всего корпуса. Некоторые люди называют эту технику самообучением, но то, что очень интересно в BERT и где она становится актуальной для цепочки поставок, заключается в том, что внезапно вы подходите к своим данным так, будто вы создаете машину, в которой вы можете скрыть части данных, и машина все равно способна восстановить эти данные.

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

Slide 19

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

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

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

Slide 20

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

Slide 21

Теперь давайте рассмотрим несколько вопросов.

Вопрос: Не используют ли случайные леса бэггинг?

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

Вопрос: С развитием компаний в направлении полной автоматизации с помощью роботов, каково будущее работников логистических складов? Будут ли они заменены роботами в ближайшем будущем?

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

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

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

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

Вопрос: Можете ли вы привести примеры, где вы применяли машинное обучение? Стало ли это средство операционным?

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

Вопрос: Какой лучший способ изучить машинное обучение в свое свободное время? Вы бы рекомендовали сайты вроде Udemy, Coursera или что-то еще?

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

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

Вопрос: С появлением инструментов без кода, таких как CodeX и Co-Pilot от OpenAI, вы видите ли, что практики в сфере логистики будут писать модели на простом английском языке в какой-то момент?

Короткий ответ: нет, совсем нет. Идея обхода кодирования существует уже давно. Например, Visual Basic от Microsoft задумывался как визуальный инструмент, чтобы людям больше не приходилось программировать; они могли просто визуально составлять вещи, подобные Лего. Но в настоящее время этот подход оказался неэффективным, и следующий тренд - это выражение вещей словесно.

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

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

Вопрос: Делает ли машинное обучение прогнозирование спроса более точным для сезонных или регулярных данных о продажах?

Как я упоминал в этой презентации, машинное обучение делает понятие точности устаревшим. Если посмотреть на последний крупномасштабный конкурс прогнозирования временных рядов, M5, топ-10 моделей были моделями машинного обучения в той или иной степени. Итак, делает ли машинное обучение прогнозы более точными? Фактически, основываясь на конкурсе прогнозирования, да. Но это лишь незначительно более точно по сравнению с другими техниками, и это не является революционной дополнительной точностью.

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

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

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

Опять же, по опыту Lokad, эти вещи будут полностью устранены, потому что мы уже сделали это. Мы не единственные, кто делает это таким образом, поэтому для нас это почти древняя история, так как это так уже почти десять лет.

Вопрос: На сколько активно машинное обучение используется для принятия решений в сфере логистики?

Это зависит от компании. В Lokad оно используется повсеместно, и, очевидно, когда я говорю “в Lokad”, я имею в виду компании, обслуживаемые Lokad. Однако подавляющее большинство рынка все еще в основном использует Excel без машинного обучения. Lokad активно управляет миллиардами евро или долларов стоимостью запасов, поэтому это уже реальность и так уже довольно долго. Но Lokad составляет даже не 0,1% рынка, поэтому мы все еще являемся исключением. Мы быстро растем, как и несколько конкурентов. Я подозреваю, что это все еще периферийная настройка на всем рынке логистики, но она имеет двузначный рост. Никогда не недооценивайте силу экспоненциального роста на протяжении длительного периода времени. В конечном итоге это станет очень большим, надеюсь, с Lokad, но это уже другая история.

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

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

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

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

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

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

Вопрос: Сложно ли собирать данные, особенно от малых и средних предприятий (МСП)?

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

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

Хорошо, думаю, это все. Следующая сессия состоится через несколько недель. Она пройдет в среду, 13 октября. Увидимся в следующий раз!

Ссылки

  • A theory of the learnable, L. G. Valiant, ноябрь 1984
  • Support-vector networks, Corinna Cortes, Vladimir Vapnik, сентябрь 1995
  • Random Forests, Leo Breiman, октябрь 2001
  • LightGBM: A Highly Efficient Gradient Boosting Decision Tree, Guolin Ke, Qi Meng, Thomas Finley, Taifeng Wang, Wei Chen, Weidong Ma, Qiwei Ye, Tie-Yan Liu, 2017
  • Attention Is All You Need, Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, Illia Polosukhin, последняя редакция декабрь 2017
  • Deep Double Descent: Where Bigger Models and More Data Hurt, Preetum Nakkiran, Gal Kaplun, Yamini Bansal, Tristan Yang, Boaz Barak, Ilya Sutskever, декабрь 2019
  • Analyzing and Improving the Image Quality of StyleGAN, Tero Karras, Samuli Laine, Miika Aittala, Janne Hellsten, Jaakko Lehtinen, Timo Aila, последняя редакция март 2020
  • Generative Adversarial Networks, Ian J. Goodfellow, Jean Pouget-Abadie, Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair, Aaron Courville, Yoshua Bengio, июнь 2014
  • Unsupervised Machine Translation Using Monolingual Corpora Only, Guillaume Lample, Alexis Conneau, Ludovic Denoyer, Marc’Aurelio Ranzato, последняя редакция апрель 2018
  • BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding, Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova, последняя редакция май 2019
  • A Gentle Introduction to Graph Neural Networks, Benjamin Sanchez-Lengeling, Emily Reif, Adam Pearce, Alexander B. Wiltschko, сентябрь 2021