Вычислительный граф: выражение как схема

Зачем это нужно: нейросеть — это не одна функция, а цепочка из многих: линейный шаг, потом активация, потом следующий линейный шаг, и так далее (в «Логистической регрессии» цепочка была короче: z→a→L). Чтобы посчитать производную такой цепочки, удобно сперва нарисовать её как схему — вычислительный граф. Эта статья строит только схему и считает по ней число вперёд (прямой ход); что делать с производными по этому графу — в следующей статье. Если незнакома сама идея наклона-производной, начни с «Производных: что такое наклон функции» и «Больше примеров производных».

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

Возьмём игрушечный пример, специально попроще нейросети, чтобы видеть механику голыми руками: функция трёх чисел

J(a,b,c)=3(a+bc)

Буквы здесь ничего не значат физически — просто три независимых входа. Разобьём вычисление на элементарные шаги — это и есть узлы графа:

Три шага — три стрелки: b и c вливаются в u, a и u вливаются в v, v вливается в J. Слева направо этот проход называют прямым ходом (forward pass) — он просто вычисляет число, ничего не гадая.

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

Возьмём числа: a=4, b=3, c=2. Считаем шаг за шагом:

u=b⋅c=3⋅2=6

v=a+u=4+6=10

J=3v=3⋅10=30

Прямой ход на этих числах даёт J=30. То же самое, только длиннее и с активациями между слоями, происходит в предсказании нейросети: числа текут слева направо по графу, и на выходе получается результат — как yˆ=σ(wTx+b) в логистической регрессии, только с большим числом узлов.

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

Что дальше

Прямой ход посчитал число, но не сказал, насколько J изменится, если чуть подвинуть a, b или c. Ответ — обратный ход по этому же графу, тема «Производных с вычислительным графом».