Динамические системы
Дискретные динамические системы
Откройте калькулятор и нажимайте cos снова и снова. Любое начальное число - через 50 нажатий результат 0.7391... Всегда. Это аттрактор. Теперь замените cos на $\theta \mapsto \theta - \eta \nabla L(\theta)$ - и получите обучение нейросети. Один и тот же математический объект - один и тот же вопрос: куда сходится эта последовательность?
- **Обучение нейросетей:** SGD и Adam - дискретные динамические системы на пространстве весов; Neural ODE (Chen et al. 2018) - ResNet с бесконечным числом слоёв как непрерывная динамика
- **Диффузионные модели:** DDPM - итерация 1000 шагов зашумления, затем обратная динамика - 1000 шагов обратного стохастического процесса Ланжевена для генерации одного изображения
- **Экология и хаос:** модель Ферхюльста $x_{n+1} = r x_n(1-x_n)$ при $r > 3.57$ - хаос с чувствительностью к начальным условиям; то же объясняет нестабильность обучения при большом learning rate
Итерация: базовый механизм
Банковский вклад под 5% годовых. Каждый год баланс обновляется по одному и тому же правилу: новый баланс = старый баланс * 1.05. Это итерация - применение одной функции снова и снова. **Градиентный спуск, обучающий GPT, работает тем же принципом**: $\theta_{n+1} = \theta_n - \eta \nabla L(\theta_n)$ - одно правило, применяемое миллионы раз.
**Итерация (iteration)** - процесс многократного применения функции f к начальному значению x₀: x₁ = f(x₀), x₂ = f(x₁), x₃ = f(x₂), ... В общем виде: **x_{n+1} = f(x_n)**. Это дискретная динамическая система - время идёт шагами n = 0, 1, 2, 3, ...
Ключевая идея: **состояние системы полностью определяется текущим значением $x_n$ и правилом f**. Не нужно помнить всю историю - только текущий шаг. Это свойство называется **марковским** - будущее зависит только от настоящего. В ResNet каждый слой - это шаг итерации $x_{n+1} = x_n + F(x_n)$; в 2018 году Chen et al. показали, что при бесконечной глубине это предел обыкновенного дифференциального уравнения (Neural ODE).
| Пример системы | Состояние x_n | Правило f(x) |
|---|---|---|
| Банковский вклад | Баланс | x * 1.05 |
| Популяция бактерий | Число клеток | 2x (деление) |
| Логистическое отображение | Доля популяции | r*x*(1-x) |
| Последовательность Фибоначчи | (F_n, F_{n-1}) | (F_n + F_{n-1}, F_n) |
Пуанкаре и дискретная динамика
Анри Пуанкаре в 1880-х годах первым систематически изучал итерации функций, исследуя задачу трёх тел. Он обнаружил, что даже простые детерминированные правила могут порождать непредсказуемое поведение - за 80 лет до формального открытия хаоса.
Дана итерация x_{n+1} = x_n / 2 с начальным условием x₀ = 8. Чему равно x₃?
Орбита: история системы
Когда мы запускаем итерацию из точки x₀, последовательность значений x₀, x₁, x₂, ... образует **орбиту** (orbit) точки x₀. Орбита - это полная траектория движения системы. Разные начальные точки могут давать совершенно разные орбиты.
**Орбита (orbit)** точки x₀ при отображении f - это последовательность {x₀, f(x₀), f(f(x₀)), f(f(f(x₀))), ...}. Обозначение: **O(x₀) = {f^n(x₀) : n = 0, 1, 2, ...}**, где f^n - n-кратное применение f (не степень!).
**Cobweb-диаграмма** (паутинная диаграмма) - мощный инструмент визуализации орбит. Мы рисуем график f(x) и прямую y = x. Итерация - это прыжок вверх к графику (применение f), затем горизонтально к прямой y = x (перенос результата на ось x). Получается характерный «паутинный» узор.
| Тип орбиты | Поведение | Пример |
|---|---|---|
| Сходящаяся | x_n → x* при n → ∞ | f(x) = x/2, x₀ = 8 → 0 |
| Расходящаяся | x_n → ∞ при n → ∞ | f(x) = 2x, x₀ = 1 → ∞ |
| Периодическая | x_{n+p} = x_n для некоторого p | f(x) = -x → {1, -1, 1, -1, ...} |
| Хаотическая | Не сходится, не расходится, не периодическая | Логистическое отобр. при r = 4 |
**Чувствительность к начальным условиям:** в хаотических системах орбиты, стартовавшие из близких точек x₀ = 0.1000 и x₀ = 0.1001, через 30 шагов могут оказаться в совершенно разных местах. Это делает долгосрочный прогноз невозможным.
На cobweb-диаграмме орбита «закручивается» к точке пересечения f(x) и y = x. Что это означает?
Неподвижная точка: f(x*) = x*
**Если система пришла в точку x* и осталась там навсегда** - это неподвижная точка (fixed point). Математически: f(x*) = x*. Система «застревает» - одно применение функции ничего не меняет.
**Неподвижная точка** x* отображения f - это решение уравнения f(x*) = x*. Графически: пересечение графика f(x) с прямой y = x. Бывает **устойчивой** (аттрактор - соседние орбиты притягиваются) и **неустойчивой** (репеллер - соседние орбиты убегают).
**Критерий устойчивости** - производная в неподвижной точке. Если |f'(x*)| < 1, то x* устойчива: малые отклонения затухают. Если |f'(x*)| > 1, то x* неустойчива: малые отклонения растут. Если |f'(x*)| = 1 - пограничный случай, нужен дополнительный анализ.
| |f'(x*)| | Тип | Поведение соседних орбит |
|---|---|---|
| < 1 | Устойчивый узел (аттрактор) | Монотонно сходятся к x* |
| = 0 | Сверхустойчивая точка | Очень быстрая сходимость |
| > 1 | Неустойчивый узел (репеллер) | Монотонно удаляются от x* |
| -1 < f'(x*) < 0 | Устойчивый спиральный | Сходятся, осциллируя вокруг x* |
Интуиция проста: если f сжимает окрестность x* (производная < 1 по модулю), то отклонения уменьшаются с каждой итерацией. Если растягивает (производная > 1) - отклонения растут.
Для отображения f(x) = x² неподвижные точки - 0 и 1. Какая из них устойчива?
Периодические орбиты и путь к хаосу
Вернёмся к банковскому вкладу из начала урока. Мы видели, что простое правило может давать сходящуюся орбиту. А что если правило чуть сложнее? **Логистическое отображение** x_{n+1} = r*x_n*(1-x_n) при разных значениях параметра r показывает поразительное разнообразие поведения.
**Периодическая орбита** периода p - это набор точек {x₀, x₁, ..., x_{p-1}}, где f^p(x₀) = x₀, но f^k(x₀) ≠ x₀ для 0 < k < p. Цикл периода 2: система прыгает между двумя точками. Периода 3: между тремя. Неподвижная точка - цикл периода 1.
**Period-doubling cascade** - каскад удвоения периода. При увеличении r происходит следующее: неподвижная точка → цикл-2 → цикл-4 → цикл-8 → ... → хаос. Каждое удвоение происходит при определённом значении r, и расстояния между этими значениями сжимаются с универсальной константой **Фейгенбаума δ ≈ 4.6692**.
| Параметр r | Поведение | Период |
|---|---|---|
| 0 < r < 1 | Всё сходится к 0 | Вымирание |
| 1 < r < 3 | Устойчивая неподвижная точка | Период 1 |
| 3 < r < 3.449 | Цикл периода 2 | Период 2 |
| 3.449 < r < 3.544 | Цикл периода 4 | Период 4 |
| 3.544 < r < 3.564 | Цикл периода 8, 16, ... | Удвоение |
| r ≈ 3.5699... | Начало хаоса | Порог хаоса |
| 3.57 < r ≤ 4 | Хаос (с окнами периодичности) | Хаос |
Универсальность Фейгенбаума
В 1975 году Митчелл Фейгенбаум на калькуляторе HP-65 обнаружил, что константа δ ≈ 4.669 одинакова для любого отображения с одним горбом (квадратичный максимум). Это было шоком: совершенно разные системы следуют одному и тому же сценарию перехода к хаосу. Позже это было подтверждено экспериментально в гидродинамике, электронике и лазерах.
**Теорема Шарковского (1964):** если отображение прямой имеет цикл периода 3, то оно имеет циклы ВСЕХ периодов. Существование цикла-3 гарантирует хаос!
Простые детерминированные правила всегда порождают простое предсказуемое поведение
Логистическое отображение x_{n+1} = r*x_n*(1-x_n) - одна строчка кода - при r > 3.57 порождает хаос: детерминированное, но непредсказуемое поведение с чувствительностью к начальным условиям
Нелинейность ($x$ умножается на $(1-x)$) создаёт растяжение и складывание фазового пространства. Даже бесконечно малая разница в начальных условиях растёт экспоненциально - экспонента Ляпунова положительна. Детерминизм не равен предсказуемости. В ML это объясняет нестабильность обучения: два прогона с разным случайным seed и одинаковым learning rate могут разойтись в разные точки - не ошибка, а хаотическая чувствительность к начальным условиям.
Ключевые идеи
- **Итерация $x_{n+1} = f(x_n)$** - фундаментальный механизм дискретных динамических систем; SGD, Adam, PageRank power iteration - всё это частные случаи
- **Орбита** - полная траектория; аттрактор определяет, куда сходится обучение - не глобальный минимум, а ближайший устойчивый
- **Устойчивость через производную**: $|f'(x^*)| < 1$ - аттрактор, $|f'(x^*)| > 1$ - репеллер; в ML это условие на learning rate: при $\eta > 1$ градиентный спуск расходится
- **Каскад удвоения периода** (Фейгенбаум $\delta \approx 4.669$) - универсальный сценарий рождения хаоса; чувствительность к начальным условиям объясняет, почему два запуска обучения с разным seed дают разные веса
- **Neural ODE** (Chen et al. 2018): ResNet $x_{n+1} = x_n + F(x_n)$ при $n \to \infty$ переходит в ODE $dx/dt = F(x)$ - дискретная динамика как дискретизация непрерывной
Связанные темы
Дискретные динамические системы - фундамент для изучения непрерывных систем и теории устойчивости:
- Непрерывные динамические системы — Непрерывный аналог: вместо x_{n+1}=f(x_n) используется dx/dt=f(x)
- Теория устойчивости Ляпунова — Формализует понятие устойчивости через функции Ляпунова
- Теория хаоса — Углублённое изучение хаотических орбит и странных аттракторов
Вопросы для размышления
- Прогноз погоды становится ненадёжным через 7-10 дней. Как это связано с чувствительностью к начальным условиям в дискретных системах?
- Если у функции f нет неподвижных точек (например, f(x) = x + 1), что можно сказать о поведении всех орбит?
- Вернёмся к эксперименту из начала урока: нажатие cos на калькуляторе многократно сходится к 0.7391... Как доказать, что cos(0.7391) ≈ 0.7391?