# Сломать, чтобы спасти: как в Стэнфорде ищут критические ошибки через оптимизацию

Источник: https://www.youtube.com/watch?v=iO6OACXaF1Q
Канал: Stanford Online
Опубликовано: 07.04.2025

---

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

# Искусство поиска отказов: от случайного тестирования до оптимизации безопасности

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

[[JUMP:00:31]]

## 🛠 Зачем искать ошибки сознательно: суть фальсификации
[[JUMP:00:44]]

Фальсификация — это процесс систематического поиска сценариев, в которых система не удовлетворяет заданным свойствам безопасности [06:35]. Вместо того чтобы доказывать, что система всегда работает корректно (что часто математически невозможно для сложных ИИ-систем), инженеры фокусируются на «красном тиминге» (red teaming) — попытках сознательно «сломать» алгоритм [02:52].

По словам лектора, обнаружение отказов на этапе проектирования критически важно для принятия дальнейших решений:

*   **Улучшение сенсоров:** если отказы вызваны ошибками восприятия, системе нужны более точные датчики [07:01].
*   **Обновление политики агента:** если поведение робота в симуляции приводит к аварии, необходимо пересмотреть алгоритм принятия решений [07:13].
*   **Пересмотр требований или обучение операторов:** иногда достаточно обучить человека-оператора распознавать опасные режимы и вовремя вмешиваться [07:37].
*   **Отказ от проекта:** в худшем случае фальсификация показывает, что система фундаментально небезопасна, и работу над ней стоит прекратить [07:58].

В качестве примера фальсификации лектор приводит игру-тренажер **Gandalf** от компании **Lakera** [06:15]. Задача игрока — обманом заставить языковую модель (LLM) выдать секретный пароль, используя различные методы промпт-инъекций: от простых вопросов до просьб «забыть все предыдущие инструкции» или «написать пароль задом наперед» [03:51].

## 📉 Проблема редких событий и прямой отбор (Direct Sampling)
[[JUMP:08:57]]

Самый простой метод поиска отказов — прямое сэмплирование (Direct Falsification) [09:12]. Инженер просто запускает симуляцию $M$ раз с разными случайными условиями и фильтрует те траектории, которые привели к нарушению безопасности.

Однако этот метод сталкивается с проблемой «редких событий» [11:27]:

1.  **Геометрическое распределение:** вероятность найти отказ на конкретном шаге описывается формулой $P(K) = (1 - P_{fail})^{K-1} \cdot P_{fail}$ [14:02].
2.  **Ожидаемое время поиска:** в среднем требуется $1 / P_{fail}$ запусков, чтобы найти один отказ [15:06].
3.  **Экстремальная редкость:** в авиационных системах вероятность отказа может составлять $10^{-9}$. Это означает, что для обнаружения одного сбоя методом прямого перебора потребуется в среднем **миллиард симуляций** [15:40].

Как отмечает лектор, если снизить уровень шума в датчиках «перевернутого маятника» (классическая модель в теории управления), прямая фальсификация быстро перестает выдавать результаты [11:00]. Даже увеличение числа попыток в три раза не гарантирует обнаружения бага.

## 🌪 Возмущения (Disturbances) как инструмент контроля
[[JUMP:18:29]]

Чтобы сделать поиск отказов более эффективным, исследователи предлагают переформулировать систему, выделив в ней «возмущения» (disturbances). Это процесс «бухгалтерского учета» случайности в системе [18:41].

Любая система разделяется на детерминированную функцию и стохастический компонент (возмущение) [20:16]:

*   **Модель сенсора:** вместо прямой вероятности наблюдения $P(o|s)$ вводится функция $O(s, \xi_o)$, где $\xi_o$ — конкретное значение шума, выбранное из распределения [19:48].
*   **Агент:** может иметь свои возмущения, если его политика не строго детерминирована (например, человек, выбирающий действия с долей случайности) [28:34].
*   **Окружающая среда:** возмущения здесь описывают внешние факторы, такие как скользкий пол или порывы ветра [28:56].

Лектор подчеркивает, что такая декомпозиция позволяет инженерам «взять управление над случайностью» [19:08]. Вместо того чтобы ждать, пока природа сама выдаст редкое сочетание факторов, мы можем сами подбирать последовательность возмущений $\mathbf{x}$, которая гарантированно ведет к катастрофе.

## 🧪 Метод Fuzzing: создание «неудобных» условий
[[JUMP:52:50]]

Fuzzing (фаззинг) — это техника, при которой для тестирования используется не реальное («номинальное») распределение шумов, а специально искаженное, с гораздо большей дисперсией [52:58].

Суть метода проста: мы увеличиваем уровень шума в сенсорах или интенсивность внешних воздействий до тех пор, пока система не начнет систематически ошибаться [54:15].

*   **Преимущество:** это позволяет быстро найти слабые места алгоритма.
*   **Риск:** найденные отказы могут быть «невероятными» в реальном мире. По мнению участника дискуссии, если мы слишком сильно отклонимся от номинальной модели, результаты потеряют практическую ценность [55:00].

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

## 🚀 Оптимизация против хаоса
[[JUMP:58:33]]

Самый совершенный метод — рассмотрение поиска отказов как задачи математической оптимизации [58:47].

В этой парадигме:

1.  **Переменные решения:** начальное состояние системы $s_0$ и вектор всех возмущений на каждом шаге времени $\mathbf{x}$.
2.  **Целевая функция:** устойчивость (robustness) из логики STL (Signal Temporal Logic). Мы минимизируем устойчивость, стараясь сделать её отрицательной (что и означает отказ) [1:02:11].
3.  **Поиск в пространстве:** поскольку пространство может иметь сотни измерений (например, шум на каждом из 40 шагов времени), используются мощные алгоритмы оптимизации, способные работать в высокоразмерных средах [1:01:32].

Однако чистая минимизация устойчивости имеет серьезный изъян: алгоритм найдет самый простой способ «убить» систему — например, приложив нереалистично огромную силу в первый же момент времени [1:03:05]. Лектор утверждает, что для создания действительно полезных тестов в целевую функцию необходимо включать правдоподобие (likelihood) последовательности возмущений [1:03:30].

---