Вывод логистического уравнения
S-кривая Хэмминга имеет точный математический вывод. Начните с двух наблюдений об усвоении технологии:
1. Скорость усвоения ускоряется с текущим усвоением (из уст в уста, сетевые эффекты): dP/dt ∝ P
2. Скорость усвоения замедляется по мере насыщения рынка: dP/dt ∝ (1 − P)
Объедините: dP/dt = r · P · (1 − P)
Это логистическое дифференциальное уравнение. Оно разделяемо: разложение на простые дроби позволяет прямое интегрирование.
Вывод
Разделите переменные: dP / [P(1−P)] = r dt
Простые дроби: 1/[P(1−P)] = 1/P + 1/(1−P)
Интегрируйте обе части: ln(P) − ln(1−P) = rt + C
ln[P/(1−P)] = rt + C
P/(1−P) = e^(rt+C) = e^C · e^(rt)
Пусть K = e^C. Решите для P: P = K·e^(rt) / (1 + K·e^(rt))
Эквивалентно: P(t) = 1 / (1 + e^(−r(t − t₀)))
где t₀ = (ln K)/r — точка перегиба.
Точка перегиба
При t = t₀: P = 0.5. Вторая производная d²P/dt² = 0: темп роста максимален. До t₀: вогнутость вверх (ускорение). После t₀: вогнутость вниз (замедление).
Подгонка логистики к данным
Учитывая две точки данных на логистической кривой, вы можете решить для обоих r и t₀.
Усвоение интернета: P(1995) = 0.01 (1% домохозяйств США), P(2005) = 0.70 (70%).
Стоимость сети как геометрический подсчет
Хэмминг заметил, что приложения управляли усвоением вычислений больше, чем оборудование или программное обеспечение. Зависимые от сети приложения следуют определенной модели роста: их стоимость растет быстрее, чем их затраты.
Закон Меткалфа
Стоимость сети с n пользователями пропорциональна количеству возможных соединений между пользователями:
V(n) = k · n(n−1)/2 ≈ k · n²/2 (для больших n)
где k — значение одного соединения. Стоимость сети: C(n) ∝ n (примерно линейна по количеству пользователей).
Соотношение стоимости к затратам: V/C ∝ n²/n = n. По мере роста n соотношение растет линейно. Сеть с пользователями в 10 раз больше обеспечивает примерно в 100 раз больше стоимости при затратах только в 10 раз больше.
Геометрическая картина
С n узлами количество ребер в полном графе K_n равно C(n,2) = n(n−1)/2. Это комбинаторная формула: выберите 2 узла из n. Для n=10: C(10,2)=45. Для n=100: C(100,2)=4950. Для n=1000: C(1000,2)=499,500.
S-кривая и закон Меткалфа взаимодействуют: во время 2-й фазы быстрого усвоения n растет быстро, и V(n) растет как n². Перегиб стоимости происходит перед перегибом усвоения — стоимость ускоряется перед усвоением, вызывая больше усвоения в положительном цикле обратной связи.
Стоимость сети при разных уровнях усвоения
Усвоение электронной почты: в 1985 году (n=100,000 пользователей), k = 0,01 доллара за соединение-год. В 1995 году (n=30,000,000 пользователей).
Оптимизация как геометрия
История ленты Boeing Хэмминга описывает ошибку оптимизации с точным геометрическим смыслом. Оптимизация функции f(x) на ландшафте требует:
1. Четко определенная функция f: целевая функция (сопротивление, стоимость, время выхода на рынок)
2. Фиксированный ландшафт: f вычисленный в одном и том же состоянии каждый раз
3. Градиент: направление наиболее крутого улучшения
Когда ландшафт изменяется между измерениями, градиент, который вы оцениваете, может указывать в направлении, которое больше не существует, когда вы делаете следующий шаг. Вы вычисляете gradient(f₁), но делаете шаг в ландшафте f₂.
Градиентный спуск
Стандартный градиентный спуск: x_{t+1} = x_t − α ∇f(x_t)
где α = размер шага (скорость обучения), ∇f = вектор градиента (частные производные).
Ошибка Boeing: в момент времени t команда измеряет f(x_t). В момент времени t+1 команда изменяет x на x_t + Δx. Но общая база данных также изменилась: f теперь f' ≠ f. Наблюдаемое изменение: f'(x_t + Δx) − f(x_t). Это НЕ градиент f — он включает член от сдвига ландшафта.
Фантомный градиент
Измеренное изменение = [f'(x+Δx) − f(x)] = [f(x+Δx) − f(x)] + [f'(x+Δx) − f(x+Δx)]
= истинный градиент × Δx + сдвиг ландшафта
Если сдвиг ландшафта доминирует: команда движется к минимуму в f', который является максимумом в f. Они оптимизируют неправильную вещь — возможно делая свой проект хуже, пока измерения показывают улучшение.
Количественное определение ошибки фантомного градиента
Команда оптимизирует сопротивление f(θ, s), где θ = угол крыла, s = размах. Истинный градиент: ∂f/∂θ = −0.5 (сопротивление уменьшается с θ), ∂f/∂s = +0.3 (сопротивление увеличивается с s).
Другая команда одновременно снижает вес фюзеляжа, что изменяет функцию сопротивления: f' = f − 0.8. (Более легкий фюзеляж уменьшает сопротивление на 0.8 единиц при всех конфигурациях.)
Первая команда измеряет: f'(θ+Δθ, s) − f(θ, s) = [f(θ+Δθ, s) − 0.8] − f(θ, s) = −0.5·Δθ − 0.8.