Стэнфордский курс AA228V: Сидни рассказывает о математическом моделировании критически важных систем

Stanford Online 2 тыс. 1 ч 12 мин 13 мин 07.04.2025
Главное

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

🛠️ Введение в моделирование систем: зачем это нужно 0:05

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

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

📊 Классификация и сложность моделей 3:04

Модели и симуляторы бывают самыми разными, и они необязательно должны быть компьютерными. Ярким примером физической симуляции, по словам Сидни, служит Лаборатория нейтральной плавучести в Космическом центре Джонсона (NASA). Она представляет собой гигантский плавательный бассейн, внутри которого космонавты тренируются перед выходом в открытый космос. Такая среда позволяет смоделировать условия работы на космической станции на Земле, где совершать ошибки гораздо безопаснее, чем на орбите.

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

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

Кроме того, модели разделяют по степени прозрачности:

Создание таких моделей сопряжено со сложными вызовами. Модель должна быть достаточно выразительной, чтобы покрывать все возможные сценарии, с которыми система может столкнуться в реальности (пешеходы, велосипедисты и ремонтные работы для беспилотного автомобиля), но при этом не перегруженной. На профильных конференциях лектору часто задают вопрос: как учесть абсолютно все нештатные ситуации для сверхсложной техники? Сидни признает, что это колоссальная проблема, но предлагает использовать мониторинг во время работы (runtime monitoring), который страхует систему, если она оказывается в несмоделированной ранее ситуации. Второй вызов — необходимость опираться на качественные исторические данные или знания экспертов, которые трудно получить. Резюмировать философию моделирования можно знаменитой фразой британского статистика Джорджа Бокса, которая, в отличие от цитаты Эйнштейна, вошла в учебник с официальной ссылкой: «Все модели неверны, но некоторые из них полезны».

🎲 Модельные классы: дискретные и непрерывные распределения 10:53

В рамках данного курса авторы фокусируются на вероятностных моделях. Сидни ссылается на любопытную философскую статью, утверждающую, что «вероятности, возможно, не существует, но полезно делать вид, будто она есть», поскольку вся современная наука опирается на этот неопределенный термин. Давая строгое определение, лектор отмечает, что вероятность исхода — это число от $0$ до $1$, которое количественно определяет правдоподобие наступления конкретного события по отношению ко всем остальным.

Для описания вероятностей используются распределения, которые делятся на два типа:

  1. Дискретные распределения: применяются для величин с конечным числом исходов (например, бросок игральной кости). Они задаются функцией вероятностной массы (Probability Mass Function — PMF), обозначаемой как $P$. Значения PMF лежат строго между $0$ и $1$, а их сумма по всем исходам всегда равна $1$. Функция выдает точную вероятность конкретного значения: $P(x=4) = 0.25$.
  2. Непрерывные распределения: описывают переменные с бесконечным множеством исходов (например, случайный рост студента в аудитории). Они определяются функцией плотности вероятности (Probability Density Function — PDF), обозначаемой как lowercase $p$. Значения PDF должны быть просто неотрицательными ($\ge 0$), а интеграл от минус бесконечности до плюс бесконечности равен $1$. Важно понимать, что значение PDF в конкретной точке не является вероятностью (вероятность одного точного значения в непрерывном распределении равна нулю). Чтобы узнать вероятность попадания величины в диапазон от $a$ до $b$, необходимо взять интеграл функции на этом участке, что эквивалентно площади под кривой.

Оба типа распределений параметризуются набором коэффициентов $\theta$. Для дискретных величин параметры — это просто фиксированные вероятности каждого исхода ($\theta_1, \theta_2, \dots$). Для непрерывных, например, для нормального (гауссовского) распределения, параметрами выступают математическое ожидание $\mu$ (среднее значение) и стандартное отклонение $\sigma$ (ширина распределения). При выборе модельного класса критически важно, чтобы он был достаточно выразительным: среди его параметров должен существовать такой набор $\theta$, который позволит модели хорошо лечь на реальные данные.

🔀 Повышение сложности: смеси и функциональные преобразования 18:53

С помощью интерактивного блокнота Pluto Сидни демонстрирует проблему выразительности на примере реальных показаний датчиков. Обычное гауссовское распределение отлично подгоняется под унимодальные данные (с одним пиком) путем изменения ползунков $\mu$ и $\sigma$. Однако, если реальная система выдает мультимодальные данные (например, бимодальное распределение с двумя пиками), классический Гаусс с треском проваливается. Он принципиально неспособен принять такую форму, а значит, класс модели выбран неверно.

Чтобы повысить сложность и выразительность модели, инженеры используют два основных пути:

Смеси распределений (Mixture Models)

Мы берем несколько простых распределений (например, два Гауссиана) и объединяем их, применяя весовые коэффициенты. В таком случае количество настраиваемых параметров возрастает (в примере их становится пять), что позволяет гибко менять форму распределения для точного соответствия двум пикам данных. Сидни подчеркивает, что сумма весов смеси должна быть строго равна $1$, чтобы итоговая функция оставалась валидным вероятностным распределением с интегралом, равным единице. При этом технически допускается смешивать даже распределения разных типов, если выполняется это условие.

Функциональные преобразования (Functional Transformations)

Второй элегантный способ — взять простое известное распределение (например, стандартное нормальное распределение переменной $z \sim p_z$ с $\mu=0$ и $\sigma=1$) и пропустить его сгенерированные сэмплы через некоторую функцию $x = f(z)$. Взяв 10 000 случайных точек из Гауссиана и применив к ним функцию кубического корня $f(z) = \sqrt[3]{z}$, мы неожиданно получаем сложное бимодальное распределение переменной $x$.

Если функция $f$ является обратимой и дифференцируемой, мы можем строго рассчитать аналитическую плотность полученного распределения $p_x(x)$ по формуле изменения переменных:

$$p_x(x) = p_z(g(x)) \cdot |g'(x)|$$

Где $g(x) = f^{-1}(x)$ — обратная функция (в данном случае $g(x) = x^3$), а $g'(x) = 3x^2$ — её производная. Подставив эти значения, мы получаем график плотности, идеально описывающий новые бимодальные данные.

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

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

🌐 Совместные и условные распределения: от матриц ковариации до зубов мудрости 33:34

Когда система отслеживает не один параметр, а несколько (например, датчик фиксирует одновременно и высоту, и скорость самолета), инженеры переходят к совместным (joint / multivariate) и условным распределениям. Совместное распределение отражает вероятность одновременного наступления нескольких исходов. В дискретном бинарном случае его удобно представлять в виде матричных таблиц, где сумма всех ячеек строго равна $1$.

В непрерывном многомерном случае классикой является многомерное гауссовское распределение. Оно задается вектором средних значений (центром) и матрицей ковариации. Сидни признается, что матрицы ковариации долгое время пугали её саму, и подробно объясняет их простую суть на примере двумерного случая:

Если две переменные независимы, их совместное распределение — это просто произведение их отдельных вероятностей. В качестве шутливого отступления Сидни приводит статистику по зубам мудрости четырех авторов их учебника. Оказывается, у Сидни и Энтони их $0$, у Роберта — $4$, а у Майкла — $5$. Приняв эти события за независимые, лектор рассчитывает вероятность такого совпадения:

$$P(S=0) \cdot P(A=0) \cdot P(R=4) \cdot P(M=5) \approx 0.00017$$

Сидни иронично добавляет, что эти цифры — «сомнительные данные, полученные из Google и ChatGPT», так что относиться к ним нужно с долей скепсиса. Точно так же, построив распределение на базе этих сомнительных предпосылок, она высчитала, что вероятность того, что сумма зубов мудрости четырех авторов равна девяти, составляет около 3%.

Переходя к условным распределениям $P(y \mid x)$, определяющим вероятность $y$ при условии, что значение $x$ нам точно известно, Сидни подчеркивает их фундаментальную роль в валидации критических систем. Согласно материалам прошлой лекции, все ключевые компоненты симуляции — это условные распределения:

📈 Оценка параметров: метод максимального правдоподобия 45:28

После выбора модельного класса (например, условного Гауссиана) перед инженерами встает задача поиска оптимальных параметров $\theta$, наилучшим образом описывающих собранные из реального мира данные $D$. Вручную двигать ползунки в блокноте, когда параметров миллионы (как в нейросетях), невозможно. На помощь приходит метод максимального правдоподобия (Maximum Likelihood Estimation — MLE). Его логика проста: нужно найти такие параметры $\theta$, при которых вероятность получить имеющийся массив исторических данных $D$ будет максимальной. Математически это записывается как:

$$\hat{\theta} = \arg\max_{\theta} P(D \mid \theta)$$

Опираясь на стандартное предположение, что все наблюдения в датасете являются независимыми и одинаково распределенными (IID — independent and identically distributed), совместную вероятность всего датасета из $m$ элементов можно представить как произведение вероятностей каждого отдельного наблюдения:

$$P(D \mid \theta) = \prod_{i=1}^m P(x_i \mid \theta)$$

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

$$\hat{\theta} = \arg\max_{\theta} \sum_{i=1}^m \log P(x_i \mid \theta)$$

Решать эту оптимизационную задачу можно с помощью специализированных алгоритмов-«черных ящиков», таких как градиентный спуск (Gradient Descent), ADAM, генетические алгоритмы или методы с использованием импульса (momentum). В языке Julia для этого используется библиотека Optim. Поскольку большинство оптимизаторов по умолчанию заточены под поиск минимума, инженеры просто минимизируют отрицательное логарифмическое правдоподобие (Negative Log-Likelihood). Автоматический алгоритм за доли секунды находит точные коэффициенты, которые человек вручную подбирал бы часами.

📐 Математический вывод: как из правдоподобия рождается метод наименьших квадратов 56:15

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

Предположим, мы ищем параметры $\theta$ для условной гауссовской модели с постоянной дисперсией. Наш датасет состоит из пар точек $(x_i, y_i)$. Мы предполагаем, что данные генерируются функцией $f_{\theta}(x_i)$ с добавлением постоянного гауссовского шума с дисперсией $\sigma^2$:

$$y_i \sim \mathcal{N}(f_{\theta}(x_i), \sigma^2)$$

Запишем для этой модели задачу максимизации логарифмического правдоподобия:

$$\hat{\theta} = \arg\max_{\theta} \sum_{i=1}^m \log \left( \frac{1}{\sqrt{2\pi\sigma^2}} \exp \left( -\frac{(y_i - f_{\theta}(x_i))^2}{2\sigma^2} \right) \right)$$

Раскрывая логарифм произведения как сумму логарифмов, получаем:

$$\hat{\theta} = \arg\max_{\theta} \sum_{i=1}^m \left[ \log \left( \frac{1}{\sqrt{2\pi\sigma^2}} \right) - \frac{(y_i - f_{\theta}(x_i))^2}{2\sigma^2} \right]$$

Поскольку оптимизация идет строго по параметру $\theta$, любые члены уравнения, не содержащие этот параметр, никак не влияют на положение максимума. Мы можем безболезненно вычеркнуть левое слагаемое с константой, а также убрать из знаменателя общую дисперсию $2\sigma^2$. Уравнение приобретает лаконичный вид:

$$\hat{\theta} = \arg\max_{\theta} \sum_{i=1}^m -(y_i - f_{\theta}(x_i))^2$$

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

$$\hat{\theta} = \arg\min_{\theta} \sum_{i=1}^m (y_i - f_{\theta}(x_i))^2$$

Это и есть классический критерий наименьших квадратов. Сидни делится личным инсайтом: «Я наивно применяла метод наименьших квадратов всю свою жизнь, пока не увидела этот вывод». Оказывается, используя этот популярный метод, инженеры по умолчанию соглашаются с жестким вероятностным допущением — они подсознательно предполагают, что их данные распределены по Гауссу с неизменным уровнем шума в каждой точке. Если же доподлинно известно, что шум имеет другую природу, метод наименьших квадратов будет работать неоптимально, и целевую функцию оптимизации придется пересчитывать заново. Подобные аналитические решения для других типов распределений (например, распределения Бернулли) широко представлены в семействе экспоненциальных распределений (Exponential family).

🧠 Байесовский подход к обучению параметров 1:05:41

Альтернативой точечной оценке параметров (когда мы ищем одно конкретное наилучшее число для $\theta$) выступает байесовское обучение параметров (Bayesian parameter learning). Сидни шутит, что этот подход идеально создан для таких же «патологически нерешительных людей», как она сама. Вместо того чтобы мучиться и выбирать один-единственный вектор параметров $\theta$, байесовский метод предлагает сохранять и поддерживать полноценное распределение вероятностей по всем возможным значениям параметров.

Мы хотим рассчитать распределение параметров после того, как увидели данные — $P(\theta \mid D)$. Напрямую это сделать невозможно, но мы знаем, как рассчитать обратную величину — правдоподобие данных при фиксированных параметрах $P(D \mid \theta)$, чем мы и занимались в методе MLE. Используя классическую теорему Байеса, которая выводится напрямую из определения условной вероятности, мы можем связать эти величины:

$$P(\theta \mid D) = \frac{P(D \mid \theta) \cdot P(\theta)}{P(D)}$$

В этой формуле каждый элемент имеет четкое название и смысл:

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

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

💬 Цитаты

«Все должно быть простым, насколько это возможно, но не проще.»

«Все модели неверны, но некоторые из них полезны.»

Джордж Бокс 10:16

«Я наивно применяла метод наименьших квадратов всю свою жизнь, пока не увидела этот вывод.»

👥 Спикер
📚 Упомянутые книги
🔗 Упомянутые сайты и проекты
📖 Термины
Валидация систем
Процесс проверки того, соответствует ли созданная система заложенным требованиям безопасности.
Плотность вероятности (PDF)
Функция, описывающая относительное правдоподобие того, что непрерывная случайная величина примет определенное значение.
Нормализующие потоки
Метод машинного обучения, трансформирующий простые распределения в сложные с помощью обратимых функций.
Максимальное правдоподобие (MLE)
Метод оценки параметров, который ищет коэффициенты, делающие наблюдаемые данные наиболее вероятными.
Апостериорная вероятность
Вероятность параметров модели, рассчитанная с помощью теоремы Байеса после получения новых практических данных.
📊 Цифры
⚖️ Другая сторона
Инженерия Система валидации Метод максимального правдоподобия Байесовское обучение X-Plane Нормализующие потоки