alterna ai
ALTERNA AI / ГЛАВА 08 · 06

08.6 Прямой путь через блок

На предыдущей странице: среднее и масштаб одного вектора.

Вход складывается с результатом преобразования. Это сохраняет отдельный путь и для значений, и для производных.

Один слой создаёт промежуточные признаки для следующего. Нелинейность не позволяет свернуть всю последовательность в одну таблицу. Прямые ветви добавляют поправки к прежнему состоянию.

Учить поправку и сохранять прямой путь

Residual блок вычисляет y=x+F(x). Shapes слагаемых должны совпадать; иначе требуется явная проекция, а не случайный broadcast. При F=0 получается identity. Это свойство конструкции, не утверждение, что начальная F обязательно мала. N07.

Jy=I+JF,∇xL=(I+JF)T∇yL.J_y=I+J_F,\qquad \nabla_xL=(I+J_F)^T\nabla_yL.

Пусть F(x)=g·ReLU(x), x=[−1,2], g=.5. Тогда F=[0,1], y=[−1,3], Jacobian diag(1,1.5). Без skip выход[0,1], Jacobian diag(0,.5): отрицательная координата потеряла прямую зависимость.

Эксперимент. Отключите skip при прежней F. Затем поставьте g=−1: на положительной координате 1+F′=0. Значит, residual не гарантирует ненулевой gradient при любых weights — вклады могут компенсироваться. «Единичный путь» не означает, что общая производная всегда≥1.

Identity skip не добавляет весов. Addition стоит одну операцию на компоненту, а сохранение activations важно для training memory. Следующая глава раскрывает алгоритм, который суммирует вклады обеих ветвей: backpropagation и mini-autograd.

x,g=[-1,2],.5
F=[g*max(0,v) for v in x]
y=[a+b for a,b in zip(x,F)]
assert F==[0,1] and y==[-1,3]

Код повторяет только что разобранные операции. Полный проверяемыйPython-пример главы доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.

Обе ветви участвуют в производной и могут компенсироваться.

Как найти влияние всех её параметров на одну общую ошибку?

Python-примеры главы 08 Академическая база →