TGViewer
MB3R Lab MB3R Lab @mb3rlab · 375 subscribers
Post #15 870
Иллюзия непрерывности: вычислительная устойчивость как скрытый фундамент

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

Современный разработчик привык жить в мире идеальной платоновской математики. Мы пишем x = y + z и полагаем, что оперируем числами из множества R (вещественные числа). Но компьютер — это дискретная машина. Он ничего не знает о непрерывности и оперирует конечным множеством представимых значений (часто IEEE 754), а каждая операция — это ещё и правило округления/обрезания..

На этой скользкой дорожке пролегает опаснейший разрыв: карта перестаёт соответствовать территории. О том, насколько глубока эта кроличья нора, Дэвид Голдберг написал еще в 1991 году в своей канонической работе What Every Computer Scientist Should Know About Floating-Point Arithmetic — чтиво, обязательное для каждого, кто вышел за пределы integer.

Что такое устойчивость алгоритмов?
В строгом смысле, как это формулирует Николас Хайем в фундаментальном труде Accuracy and Stability of Numerical Algorithms, алгоритм считается вычислительно устойчивым, если ошибка на выходе («шум» вычислений) сопоставима с ошибкой, вызванной возмущением входных данных. Проще говоря: если вы слегка толкнули входные данные, результат не должен улетать в стратосферу.

Аналогия из теории управления и механики. Представьте, что ваш алгоритм — это механическая система.
Устойчивый алгоритм — это шарик на дне чаши. Любая погрешность округления (гравитация) возвращает его к истинному значению. Ошибки затухают (dampening).
Неустойчивый алгоритм — это перевернутый маятник или карандаш, балансирующий на острие. Малейшее дыхание хаоса (округление в 16-м знаке после запятой) порождает положительную обратную связь. Ошибка не просто накапливается — она экспоненциально усиливается на каждом шаге итерации.

Эффект бабочки в FPU
Это не теоретическая проблема. Это проблема физики вычислений, которая стоит жизней.

1) Хрестоматийный пример, Patriot в Дахране (1991). Система держала время в десятых долях секунды и конвертировала его в секунды с ограниченной разрядностью, что давало микроскопическую погрешность на каждой итерации, но при длительном аптайме она нарастала. После ~100 часов непрерывной работы ошибка составила ~0.3433 с, а смещение окна ~687 м. В результате батарея не смогла корректно сопровождать цель и не произвела перехват. Scud попал в казарму, погибло 28 человек.

2) AI и взрывающиеся градиенты. В обучении глубоких нейросетей мы постоянно боремся с числом обусловленности (Condition Number) матриц. Если ландшафт функции потерь имеет «овраги» с крутыми склонами, обычный градиентный спуск становится вычислительно неустойчивым — веса улетают в NaN.

Инженерный вывод
Мы часто путаем математическую корректность формулы и вычислительную устойчивость алгоритма, её реализующего.

Математически a+(b+c)=(a+b)+c.
Вычислительно — нет.
Порядок операций имеет значение. Суммирование ряда чисел от меньшего к большему или использование алгоритма Кэхэна даёт один результат, а хаотичное суммирование — другой, зачастую с потерей значимости (catastrophic cancellation).

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

N.B. В русскоязычном пространстве мы попадаем в любопытную семантическую ловушку. Мы используем слово «устойчивость» для перевода сразу двух фундаментально разных (или нет?) понятий: Numerical Stability (свойство алгоритма не накапливать ошибку) и Resilience (способность системы адаптироваться к сбоям).

В английском языке эти дисциплины разведены лексически, а в русском они схлопываются в один термин. Является ли это просто омонимией, мешающей коммуникации, или здесь есть глубокий структурный изоморфизм? Вопрос, над которым стоит поразмышлять на досуге.
More from @mb3rlab
  1. Aug 14, 2026Post #32
  2. Aug 9, 2026Расскажу про ещё один препринт, хотя опубликовал его я ещё в мае. Там история тоже небыстр…
  3. Aug 4, 2026Уже почти год сражаюсь с рецензентами Communications of the ACM и уверен, что лучше этой в…
  4. Jun 13, 2026Задача двух генералов — классическая проблема в распределенных системах. Суть: при ненадеж…
  5. May 20, 2026Отрицательная дивергенция или почему идеальная модель обязана «врать» В нашей инженерной к…
  6. Mar 24, 2026just (do) it Есть два фундаментально разных способа отвечать на вопрос «почему?». Можно см…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →