# Янник Килхер: «Предиктивное кодирование — биологический аналог backprop?»

Источник: https://www.youtube.com/watch?v=LB4B5FYvtdI
Канал: Yannic Kilcher
Опубликовано: 29.11.2020

---

## Предиктивное кодирование: как мозг имитирует обратное распространение ошибки
[[JUMP:0:00]]

Янник Килхер (Yannic Kilcher) в своем новом видеообзоре разбирает научную работу «Predictive coding approximates backprop along arbitrary computation graphs» (авторы: Baron Millage, Alexander Chance, Christopher L. Buckley). Ключевая идея исследования заключается в том, что алгоритм предиктивного кодирования (predictive coding) может аппроксимировать алгоритм обратного распространения ошибки (backprop) в произвольных вычислительных графах, используя исключительно локальные и геббиевские обновления, что делает его биологически правдоподобным кандидатом на модель процессов обучения в коре головного мозга.

## Проблема биологической правдоподобности обучения
[[JUMP:2:12]]

Традиционный алгоритм обратного распространения ошибки (backprop) является фундаментом современного глубокого обучения, позволяя эффективно вычислять градиенты для глубоких сетей. Однако, по мнению автора видео, он сталкивается с фундаментальной проблемой при попытке переноса на биологические нейронные сети:

*   **Направленность:** В нейронных сетях (реализованных в фреймворках типа PyTorch или TensorFlow) градиент должен распространяться в обратном направлении (от выхода к входу) для обновления весов.
*   **Локальность:** Нейроны в мозгу не являются двунаправленными в том смысле, как это требуется для классического backprop; они не могут эффективно «ждать» глобального синхронизированного сигнала ошибки, чтобы обновиться.
*   **Параллелизм:** Процессы в мозгу должны происходить максимально параллельно и использовать только локальную информацию, в то время как backprop требует передачи глобального градиента.

## Механизм предиктивного кодирования
[[JUMP:9:21]]

В отличие от стандартного прямого прохода, предиктивное кодирование превращает обучение в своего рода «вариационную игру в угадайку». Основная логика работы алгоритма, как утверждает Янник Килхер, заключается в следующем:

1.  **Генеративная модель:** Каждый слой пытается предсказать (угадать) значение активации следующего слоя на основе своих входных данных.
2.  **Итеративное уточнение:** Прежде чем обновлять веса, алгоритм запускает внутренний цикл, в котором «догадки» о значениях скрытых слоев (v_i) уточняются, чтобы минимизировать ошибку.
3.  **Локальные сигналы ошибки:** Ошибка не транслируется как глобальный градиент, а распределяется локально: каждый слой корректирует свою «догадку», чтобы стать более согласованным с прогнозом следующего слоя.
4.  **Обновление весов:** Только после достижения равновесия в этих догадках происходит обновление параметров (весов), которое также является локальной операцией.

## Эмпирические результаты и ограничения
[[JUMP:7:32]]

Авторы исследования демонстрируют, что предложенный метод работает для различных архитектур: CNN, RNN и даже LSTM.

*   **Точность:** Графики обучения показывают, что сети, обученные методом предиктивного кодирования, достигают практически тех же результатов, что и при использовании классического backprop.
*   **Вычислительная стоимость:** Главный минус метода — он примерно в 100 раз медленнее, так как требует итеративного цикла сходимости (inference steps) для каждого прохода данных.
*   **Оговорка:** Хотя авторы подчеркивают возможность параллелизации, Янник Килхер скептичен: по его мнению, необходимость многократной передачи сигналов между слоями (сзади наперед) всё равно делает алгоритм зависимым от глобального процесса «обратной развертки».

## Геббиевское обучение в коде
[[JUMP:36:21]]

При анализе кода авторы показывают, что если слой является линейным (с последующей поэлементной нелинейностью), то правила обновления весов становятся «геббиевскими» (Hebbian updates). 

*   **Локальный градиент:** Вычисляется как произведение активаций прямого прохода через производную нелинейной функции.
*   **Реализация:** В коде это выражается в умножении активаций на локальную ошибку предсказания. 

Янник Килхер заключает, что, хотя это не доказывает, что мозг использует именно этот метод, это весомый аргумент в пользу того, что биологические нейронные сети могут аппроксимировать градиенты backprop гораздо ближе, чем считалось ранее.