Цифровая жизнь: нейросети создают бабочек с регенерацией | AiManual
AiManual Logo Ai / Manual.
02 Янв 2026 Новости

От бабочек до регенерации: как нейросети создают цифровую жизнь с удивительными свойствами

Как Neural Cellular Automata создают виртуальных бабочек с удивительной регенерацией. Изучаем эмерджентность в искусственной жизни.

Виртуальные бабочки, которые отращивают крылья заново

Представьте цифровую бабочку. Её крылья - это не статичная картинка, а живая сеть из тысяч крошечных клеток. Вы стираете половину крыла. Через несколько итераций симуляции оно отрастает. Сначала медленно, потом быстрее. Узор восстанавливается идеально. Это не магия. Это Neural Cellular Automata (NCA). И этот трюк переворачивает представление о том, как мы создаем цифровую жизнь.

💡
NCA - это гибрид клеточных автоматов (вспомните игру «Жизнь» Конвея) и маленькой нейросети. Каждая клетка в сетке «видит» только своих соседей, принимает решение по простым правилам, но вместе они порождают сложнейшее поведение. Эмерджентность в чистом виде.

Код, который ведет себя как живая ткань

В основе - обманчиво простая петля. Каждый шаг симуляции - это один проход нейросети для каждой клетки. На входе - состояние клетки и её соседей. На выходе - новое состояние. Никакого центрального процессора, который бы дирижировал восстановлением. Порядок из хаоса локальных взаимодействий. Вот как выглядит ядро на Python.

import numpy as np
import tensorflow as tf

class NeuralCA:
    def __init__(self, grid_size, state_dim, hidden_dim=128):
        self.grid_size = grid_size
        self.state_dim = state_dim
        # Маленькая сеть для обновления одной клетки
        self.update_network = tf.keras.Sequential([
            tf.keras.layers.Dense(hidden_dim, activation='relu'),
            tf.keras.layers.Dense(state_dim, activation='tanh')
        ])
        # Создаем ядро для свертки (соседи)
        self.perception_kernel = tf.constant([
            [0.05, 0.2, 0.05],
            [0.2, -1.0, 0.2],
            [0.05, 0.2, 0.05]
        ], dtype=tf.float32)

    def perceive(self, grid):
        """Клетка 'видит' разницу между собой и соседями."""
        # Применяем свертку для каждого канала состояния
        perceived = tf.nn.depthwise_conv2d(
            grid[None, ...],
            self.perception_kernel[:, :, None, None],
            strides=[1,1,1,1],
            padding='SAME'
        )[0]
        return tf.concat([grid, perceived], axis=-1)

    def update(self, grid):
        """Один шаг симуляции для всей сетки."""
        # 1. Каждая клетка собирает информацию
        perception = self.perceive(grid)
        # 2. Применяем нейросеть ко всем клеткам одновременно (векторизованно)
        new_state = self.update_network(perception)
        # 3. Небольшая стохастичность для устойчивости
        mask = tf.random.uniform(grid.shape[:-1]) > 0.999
        new_state = tf.where(mask[..., None], 0.0, new_state)
        return new_state

# Инициализируем сетку случайным шумом
grid = tf.random.normal((64, 64, 16))
nca = NeuralCA(grid_size=64, state_dim=16)

# Запускаем симуляцию
for step in range(1000):
    grid = nca.update(grid)
    # Здесь можно визуализировать grid[..., :3] как RGB-изображение

Звучит просто. Но эта простота - ловушка. Если скопировать этот код и запустить, вы получите... красивый цветной шум. Чтобы получить бабочку, нужна правильная инициализация и обучение. А вот это уже искусство.

Не пытайтесь обучить NCA с нуля на домашнем ноутбуке за вечер. Это не та задача, где можно просто взять Adam и ждать. Потребуется тонкая настройка функции потерь, возможно, дифференцируемая рендеринг-симуляция, как в истории с физикой пленки. Без понимания процесса вы получите только артефакты.

Почему это не просто еще одна нейросеть?

Потому что здесь нейросеть - не черный ящик, который перемалывает данные. Она - локальное правило. Ключевое слово - локальное. Каждая клетка глупа. Но вместе они умны. Это принципиально иной подход к ИИ, чем в больших языковых моделях вроде Llama. Там вся мудрость спрятана в триллионах параметров. Здесь мудрость в архитектуре взаимодействия.

Регенерация - просто побочный эффект. Система стремится к устойчивому состоянию - паттерну бабочки. Повредите её - и локальные правила начнут «затягивать» рану, пока не восстановится исходный паттерн. Никто не программировал это явно. Это emergent property.

Свойство Обычная нейросеть (CNN/GAN) Neural Cellular Automata (NCA)
Масштабируемость Затраты растут с размером изображения Параллельная обработка, легко масштабируется
Робастность Чувствительна к повреждениям входных данных Самовосстановление - встроенное свойство
Интерпретируемость Низкая, «черный ящик» Высокая, правила локальны и понятны
Обучение Требует огромных датасетов Можно обучать на одном целевом паттерне

Где это сломает все?

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

Сравните это с подходом RepE, где мы «взламываем» активации для контроля. В NCA контроль встроен в архитектуру. Вы не боретесь с моделью, вы задаете правила игры.

Так когда у нас появятся цифровые питомцы?

Не скоро. Текущие NCA - это красивые, но примитивные системы. Им не хватает «цели». Они стремятся к паттерну, но не «хотят» его. Добавление цели, мотивации - это следующий уровень сложности. Возможно, комбинация с агентным подходом, как в исследовании о командах ИИ-агентов, но на микроуровне.

Главный урок NCA не в бабочках. Он в том, что сложное, устойчивое, «живое» поведение можно получить из простых локальных правил. Это удар по антропоцентризму в ИИ. Нам не нужно моделировать весь мозг. Достаточно найти правильные правила взаимодействия крошечных частей.

Поэтому, когда в следующий раз увидите статью про модели на триллионы параметров, вспомните про бабочку из 16 каналов на сетке 64x64. Возможно, будущее за маленькими, умными системами, которые работают вместе, а не за одним гигантским мозгом в облаке. И да, они уже умеют отращивать крылья.