Если вы дошли до этой главы, значит уже понимаете две ключевые идеи: перцептрон считает линейную комбинацию признаков, а нейросеть – это композиция таких комбинаций плюс нелинейности.
Теперь главный вопрос: как сеть учится?
Почему вообще возможно подобрать тысячи и миллионы весов так, чтобы сеть начинала распознавать спам, лица или фишинговые письма?
Ответ – backpropagation.
Но без магии. И без ужаса из учебников.
Интуиция: сеть как система труб
Представьте сеть как систему труб:
вход → слой 1 → слой 2 → выход → ошибка
Вода течёт вперёд. Это forward pass.
На выходе мы сравниваем результат с правильным ответом и получаем ошибку.
А теперь вопрос: если ошибка равна 0.3 – какой именно вес виноват?
Вот тут и начинается backpropagation – метод распределения ответственности.
Минимальная математика, без боли
Начнём с одного нейрона.
z=wx+b
Активация:
a=f(z)
Пусть ошибка:
L=(a−y)2
Нам нужно понять:
∂w∂L
То есть – как изменение веса влияет на ошибку.
Ключевая идея
Ошибка зависит от:
активации
активация зависит от z
z зависит от w
Это цепочка зависимостей.
И тут в действие вступает цепное правило.
Цепное правило – человеческое объяснение
Если:
L=L(a)a=f(z)z=wx
То:
dwdL=dadL⋅dzda⋅dwdz
Всё.
Это просто правило:
если что-то зависит через цепочку, то производные перемножаются.
Почему это работает интуитивно
Представьте:
L - показывает, насколько нам плохо
a - говорит, что предсказала сеть
z - внутренний сигнал нейрона
w - ручка регулировки
Мы считаем:
Насколько ошибка чувствительна к выходу ( dadL )
Насколько выход чувствителен к внутреннему сигналу ( dzda )
Насколько сигнал зависит от веса ( dwdz )
И перемножаем.
Это просто распространение влияния назад.
26.1 Вычислительный граф
Числовой пример
Пусть:
Правильный ответ: y = 1
L=(0.73−1)2=0.0729
Теперь считаем производные.
1. dadL
2(a−y)=−0.54
2. dzda
Для сигмоиды:
a(1−a)0.73∗0.27≈0.197
3. dwdz
x=2
Итог:
−0.54∗0.197∗2≈−0.213
Это и есть градиент.
Вес нужно увеличить (минус на минус).
Теперь несколько слоёв
Пусть есть:
x→h→yh=f(w1x)y=g(w2h)
Ошибка:
L=(y−t)2
Теперь:
dw1dL=dydL⋅dhdy⋅dw1dh
То есть цепочка просто становится длиннее.
Backpropagation – это автоматическое применение цепного правила ко всей сети.