Аналоговый Redstone: как Янник Кильчер реализовал алгоритм обратного распространения ошибки в Minecraft

Yannic Kilcher 41 тыс. 21 мин 4 мин 14.04.2021
Главное

Янник Кильчер (Yannic Kilcher), известный исследователь в области машинного обучения, продемонстрировал уникальный проект: полностью функциональную и обучаемую аналоговую нейронную сеть, построенную в Minecraft. В отличие от большинства внутриигровых компьютеров, работающих на бинарной логике, эта система использует уровни сигнала Redstone для выполнения вычислений, имитируя работу биологического мозга и современных ML-моделей.

🧱 Основы аналоговых вычислений в Minecraft 1:45

Традиционно игроки используют Redstone для создания двоичных систем (включено/выключено), однако Янник Кильчер решил использовать его аналоговую природу . Сигнал Redstone в Minecraft имеет 16 уровней интенсивности — от 0 до 15 . При передаче по обычному проводу сигнал затухает на единицу за каждый блок пути, что исследователь использовал как основу для передачи данных .

Ключевыми компонентами системы стали:

🧠 Память и умножение: архитектурные блоки 4:22

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

Самым сложным элементом стал аналоговый множитель . Янник Кильчер признаёт, что позаимствовал базовую конструкцию у автора канала rkf vaulter, но адаптировал её для своих нужд . Принцип работы множителя:

  1. Один входной сигнал определяет длительность работы поршня.
  2. Пока поршень активен, из второго сигнала (хранящегося в памяти) вычитается определенное значение.
  3. Количество вычитаний пропорционально первому сигналу, что в итоге дает результат умножения в аналоговом виде .

📉 Градиентный спуск и извлечение корня 7:11

Прежде чем строить полную сеть, исследователь создал прототип: устройство для поиска квадратного корня методом градиентного спуска . По утверждению Кильчера, это первое в истории Minecraft аналоговое устройство такого типа .

Система работает следующим образом:

  1. В ячейке памяти хранится текущая «догадка».
  2. Число умножается само на себя.
  3. Результат сравнивается с целевым значением (например, 9) .
  4. Схема вычисляет сигнал ошибки и активирует поршни, которые прибавляют или отнимают единицу от «догадки» в памяти .
  5. Цикл повторяется, пока система не сойдется к результату (например, к 3) . Если точного целого корня не существует, механизм начинает осциллировать между двумя ближайшими числами .

🕸 Структура глубокой нейронной сети 10:41

Итоговая нейросеть имеет архитектуру 2-2-1: два входных нейрона, скрытый слой из двух нейронов и один выходной нейрон . Все слои являются полносвязными (fully connected) .

Компоненты сети:

⚙️ Процесс обучения и настройки 12:39

Обучение происходит в автоматическом режиме и управляется сложной системой таймеров на базе затухающих ячеек памяти . Янник Кильчер предусмотрел возможность настройки скорости обучения (learning rate) с помощью отдельных книг на кафедрах, которые ограничивают максимальный шаг изменения веса поршнями .

Цикл работы сети:

  1. Прямой проход (Forward Prop): сигнал идет от входов через множители весов и функции активации к выходу .
  2. Вычисление ошибки: сравнение результата с целевым значением и определение направления коррекции (выше/ниже) .
  3. Обратный проход (Backprop): вычисление необходимых градиентов для каждого веса .
  4. Обновление весов: поршни наносят короткие импульсы (1-tick), физически меняя уровень сигнала в ячейках памяти весов .

Исследователь продемонстрировал, как сеть успешно «переобучается» (overfit) под конкретную задачу, постепенно меняя выходной сигнал с 6 до целевых 12 после нескольких итераций обновления весов . Янник Кильчер отмечает, что проект начинался как первоапрельская шутка, но превратился в сложнейшую инженерную задачу . Исходный мир Minecraft со всеми схемами автор выложил в открытый доступ на GitHub для дальнейшего изучения сообществом .

💬 Цитаты

«Это аналоговая нейронная сеть. В то время как многие строят бинарные компьютеры в Minecraft, эта работает напрямую с силой сигнала в проводах.»

Янник Кильчер 00:32

«Мы использовали кучу странных механик Minecraft, чтобы построить первую аналоговую нейросеть с обратным распространением ошибки.»

Янник Кильчер 21:07
👥 Спикер
🔗 Упомянутые сайты и проекты
📖 Термины
Redstone
Игровой материал в Minecraft, позволяющий создавать электрические схемы.
Компоратор
Блок в Minecraft, способный сравнивать или вычитать силу сигналов Redstone.
Backpropagation
Метод обучения нейросетей путем передачи сигнала ошибки от выхода к входу для корректировки весов.
ReLU
Функция активации, которая оставляет положительные значения как есть, а отрицательные превращает в ноль.
Градиентный спуск
Алгоритм оптимизации, используемый для минимизации ошибки в нейронных сетях.
📊 Цифры
🗓 Хронология
  1. 1 апреля Проект зародился как первоапрельская шутка.
  2. Дата публикации видео Янник Кильчер представил готовую нейросеть и выложил мир на GitHub.
⚖️ Другая сторона
Искусственный интеллект Янник Кильчер Minecraft Redstone Backpropagation Analog Computing