До какого предела можно обучить муху? Проверяю на практике

Прокомментировать Просмотры: 2

Преамбула

Сразу после публикации детального скана мозга плодовой мушки интернет заполнили ролики, в которых дрозофила гоняет в DOOM, управляет виртуальным авто, решает азартные задачи и демонстрирует массу других навыков. Сначала это казалось забавным аттракционом, однако со временем подобные материалы создали иллюзию безграничного потенциала насекомьего разума — будто биологический прототип способен на любые подвиги, а в дикой природе тормозит исключительно от недостатка качественного наставничества.

Судя по всему, в большинстве таких перформансов муха задействована далеко не полностью. Компьютерные алгоритмы способны считывать готовые моторные импульсы как целевые команды. Скажем, при трансляции кадров из DOOM муха задействует свои мощные механизмы зрительной ориентации без какого-либо предварительного обучения, а её естественное стремление сместиться вперед или вбок транслятор просто интерпретирует как нажатие клавиши. Я вовсе не намекаю на обман, но подобные короткие ролики не позволяют разглядеть грань между реальным вкладом насекомого и программной обвязкой разработчика.

Отсюда вытекает ключевой вопрос нашего исследования:

Насколько эффективно коннектом способен самостоятельно овладевать новыми навыками через систему подкреплений и каковы его истинные границы применимости?

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

Обладая довольно базовыми познаниями в данной сфере, я решил поставить серию экспериментов, чтобы эмпирически нащупать пределы возможностей мухи в условиях проб, ошибок, наград и штрафов. Заодно было интересно сопоставить её результативность с классическими алгоритмами вроде табличного Q-learning и компактной многослойной перцептронной сети (MLP).

Дисклеймер: я не профессиональный нейробиолог и не эксперт по reinforcement learning. Всё изложенное далее базируется исключительно на личных наблюдениях и исследовательском азарте. Часть выводов может расходиться с академической точкой зрения — с радостью выслушаю конструктивную критику в комментариях.

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

Используемый инструментарий

В своей работе я задействовал открытый репозиторий onnxaa/fly-brain. Это цифровая карта коннектома дрозофилы, насчитывающая порядка 138 тысяч нейронов и 15 миллионов синаптических связей, снабженная удобным программным интерфейсом для обучения. Коннектом представляет собой исчерпывающую схему нервной системы со всеми клеточными контактами. Исследовательский проект FlyWire получил эту модель путем послойного разрезания мозга мушки, его высокоточного сканирования и последующей компьютерной реконструкции. Для большинства тестов я задействовал не весь массив, а лишь грибовидное тело (mushroom body, MB), состоящее из 6300 нейронов. Выбор обусловлен тем, что именно эта структура у насекомых заведует ассоциативным обучением, к тому же она обрабатывается в разы быстрее полноразмерной модели.

Базовые принципы взаимодействия с API:

  • step(odor=...) — трансляция на вход «аромата» (по сути, числового вектора, возбуждающего определенные нейроны) с последующей оценкой уровня предпочтения (в духе «нравится / не нравится»).

  • train(reward=..., punish=...) — закрепление либо штраф текущего стимула через корректировку синаптических весов.

Здесь меня подстерегал первый сюрприз, обнаруживший себя далеко не сразу. Процедура train() оперирует не величиной поощрения, а бинарным триггером. Либо активируются дофаминергические нейроны (запуская стандартный квант адаптации весов примерно на 15%), либо нет. Передать условную «награду 100» вместо единицы и получить кратно более мощный отклик не выйдет. Это кардинально отличает систему от того же Q-learning, где скорость обучения (learning rate) задается явно и плавно затухает по мере накопления опыта.

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

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

Эксперимент 1. Многорукий бандит

Стартовая и максимально простая задача. Имеются кнопочные «ароматы», каждый из которых обладает собственной вероятностью выдать награду. Требуется максимально быстро вычислить наиболее перспективную кнопку и жать только её.

Ниже приведены итоговые показатели средней награды и суммарного штрафа (regret — упущенная выгода агента относительно эталонного выбора, чем показатель ниже, тем эффективнее стратегия) за 300 итераций.

Усредненная награда:

trial

connectome

mlp

qlearning

20

0.583

0.583

0.583

60

0.667

0.667

0.667

100

0.650

0.600

0.650

160

0.683

0.683

0.683

200

0.667

0.650

0.667

240

0.700

0.650

0.700

280

0.617

0.617

0.617

Накопленный regret:

trial

connectome

mlp

qlearning

20

2.70

2.70

2.70

60

4.03

4.37

4.03

100

5.03

6.70

5.03

160

7.03

8.37

7.03

200

9.70

11.70

9.70

240

9.70

13.37

9.70

280

11.03

14.70

11.03

Наиболее примечательно здесь абсолютное совпадение метрик коннектома и Q-learning: они мгновенно вычисляют оптимальный вариант и в дальнейшем жмут только его. Перцептрон же слегка отстает, демонстрируя итоговый regret примерно на треть выше (14.70 против 11.03).

Интегральные итоги по совокупности прогонов

агент

итоговая награда

итоговый regret

connectome

198.33 ± 15.82

11.67 ± 15.82

qlearning

198.33 ± 15.82

11.67 ± 15.82

mlp

194.00 ± 16.82

16.00 ± 16.82

Как видно, все агенты успешно справились с вызовом. Однако стоит оговориться: изначально у модели коннектома обнаружилось встроенное предпочтение запаха A (с вероятностью успеха 30%) перед запахом B (70%), из-за чего на первом прогоне она неизменно выбирала менее выгодный вариант. Для устранения этого предвзятого отношения пришлось внедрить принудительный лимит нажатий на каждую кнопку min_pulls=10, обеспечив равное первичное знакомство. Остальные агенты также были поставлены в эти условия ради чистоты эксперимента.

На базовом уровне никаких фундаментальных преград не выявлено. Коннектом демонстрирует результативность классических методов и держится вполне уверенно.

Влияние глубины первичного исследования (min_pulls)

Чтобы выяснить оптимальный объем принудительных проб для нивелирования предвзятости, я запустил серию тестов с варэированием этого параметра.

Финальная награда в зависимости от min_pulls:

min_pulls

connectome

mlp

qlearning

2

153.0

194.8

195.8

5

176.8

190.6

195.6

8

195.8

187.6

195.6

10

196.0

192.2

196.0

15

192.8

186.6

192.8

20

190.4

179.8

190.4

30

187.8

182.8

187.8

Суммарный regret и разброс по seed-значениям:

min_pulls

regret connectome

regret mlp

regret qlearning

std connectome

std mlp

std qlearning

2

57.0

15.2

14.2

51.3

17.7

13.9

5

33.2

19.4

14.4

52.9

11.7

14.4

8

14.2

22.4

14.4

15.0

11.9

14.7

10

14.0

17.8

14.0

14.2

13.9

14.2

15

17.2

23.4

17.2

12.9

8.8

12.9

20

19.6

30.2

19.6

13.0

16.9

13.0

30

22.2

27.2

22.2

15.0

16.9

15.0

Здесь четко прослеживается пороговое значение. При минимальном исследовании (min_pulls=2) коннектом сильно проигрывает конкурентам — regret составляет 57.0 против 14.2 у Q-learning, причем с колоссальным разбросом (std 51.3 против 13.9). Судя по всему, агент просто не успевает преодолеть врожденную склонность к определенному стимулу. Начиная с диапазона min_pulls=8–10, показатели коннектома и Q-learning становятся абсолютно идентичными на всех последующих отметках (10, 15, 20, 30). Иными словами, при достаточной фазе сбора первичных данных биологическая модель ведет себя как точный аналог Q-learning в данном сценарии, тогда как без неё сильно теряет в эффективности и стабильности от запуска к запуску. Перцептрон же дерсобняком: он не проваливается столь резко на малых выборках, но и не дотягивает до лидеров при увеличении числа проб.

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

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

Резюме: на простейшей одношаговой задаче коннектом не уступает классическим методам и при должной фазе предварительного исследования (от 8–10 обязательных активаций на опцию) демонстрирует результаты, неотличимые от табличного Q-learning.

Эксперимент 2. Числовые сопоставления

Следующий этап — сравнение числовых значений, реализованное пока без зрительного анализа, через обонятельный ввод. Пара чисел проецируется в виде интенсивности сигнала на два независимых канала (большее значение порождает более мощный импульс). Проверка охватила несколько числовых диапазонов (n_max = 9, 19, 49, 99):

диапазон (n_max)

точность обученного connectome

linear

mlp

9, без обучения (контроль)

0.650

0.583

0.417

9

1.000

0.700

1.000

19

1.000

0.900

1.000

49

1.000

0.900

1.000

99

0.950

0.900

0.900

Результаты отличные, но с важной оговоркой: даже в контрольном тесте без обучения точность заметно превосходит случайную угадайку (0.627 против ожидаемых 0.5). Это значит, что на базовом уровне коннектом изначально улавливает превосходство одного импульса над другим и, не вникая в суть задачи, выдает интуитивно более мощный ответ. После обучения точность удерживается на высоте ~0.98–1.00 во всем проверенном спектре, сохраняясь даже при десятикратном расширении диапазона (до 99) и уверенно обходя обе классические модели.

Показатели впечатляют, однако остается открытым вопрос: не эксплуатирует ли система банальную чувствительность к мощности сигнала вместо реального понимания логики задачи?

Вариант Б — истинная позиционная кодировка

Здесь я разделил числа на разряды: десятки и единицы кодируются изолированно в едином масштабе 0–9. Теперь пары вроде 47 и 74 генерируют идентичный суммарный импульс, и различить их можно лишь осознав, что десятичный разряд весит на порядок больше единичного. Тестировались комбинации из 2, 3, 4, 5 и 9 разрядов.

разрядов в числе

connectome (до обучения / последние 20)

linear (до обучения / последние 20)

mlp (до обучения / последние 20)

2

0.617 / 0.950

0.483 / 0.900

0.017 / 0.950

3

0.417 / 0.850

0.483 / 0.650

0.050 / 1.000

4

0.433 / 1.000

0.483 / 0.600

0.050 / 1.000

5

0.433 / 0.900

0.483 / 0.600

0.050 / 1.000

9

0.600 / 0.800

0.533 / 0.500

0.117 / 1.000

С наращиванием разрядности коннектом демонстрирует некоторую деградацию, но продолжает держаться достойно. Линейная модель едва превышает случайный рубеж 0.500, в то время как перцептрон уверенно держит максимальную планку вне зависимости от длины чисел.

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

Эксперимент 3. Лабиринты

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

В исследовании задействованы четыре конфигурации лабиринтов:

название

формат

проходимых клеток

пар (клетка, действие)

малый

10×6

26

104

средний

15×11

72

288

большой

19×13

113

452

гигантский

31×21

316

1264

Непредвиденное ограничение: дефицит свободных каналов в мозгу

Для адаптации коннектома к навигации я попробовал кодировать каждую связку «клетка — действие» как уникальный обонятельный стимул. Для этого выделялись обособленные каналы входных ALPN-нейронов (образующих входной слой грибовидного тела, принимающий первичную переработанную информацию). Выяснилось, что доступных каналов меньше, чем кажется: из 685 ALPN-нейронов при глубине распространения сигнала в один шаг (hops=1) ненулевой отклик дают лишь 302, до остальных сигнал физически не успевает дойти. Увеличение глубины до двух шагов (hops=2) расширяет пул активных каналов до 468, но требует значительно больше времени на симуляцию междисперсных связей.

Сложившаяся архитектура накладывает жесткие рамки: число комбинаций «клетка — действие» не должно превышать количество функционирующих каналов. Для малого (104 пары) и среднего (288 пар) лабиринтов это укладывается в лимит 302 канала при hops=1. На этих масштабах все агенты выступают на равных, однако моя цель — отыскать предел прочности мухи. Лабиринт на 113 клеток требует уже 452 пары, что превышает емкость одношагового режима. Пришлось задействовать hops=2, смирившись с возросшими затратами вычислительного времени.

Малый и средний лабиринты

Тестирование на малом (26 клеток, «original_26») и среднем (72 клетки, «medium_72») полигонах при hops=1, на протяжении 300 эпизодов с тремя сидами:

Доля успешных прохождений:

лабиринт

connectome

mlp

qlearning

original_26

0.993

0.979

0.993

medium_72

0.990

0.922

0.993

Средняя протяженность успешного маршрута (шагов):

лабиринт

connectome

mlp

qlearning

original_26

9.5 ± 4.9

9.7 ± 3.4

9.7 ± 6.1

medium_72

30.2 ± 14.3

37.2 ± 27.6

29.3 ± 8.0

Эпизод достижения стабильного успеха (скользящее окно ≥ 90% по трем сидам):

лабиринт

connectome

mlp

qlearning

original_26

10 / 10 / 10

13 / 13 / 13

10 / 10 / 10

medium_72

10 / 10 / 18

50 / 22 / 15

10 / 10 / 10

В этих условиях трио агентов демонстрирует практически паритетные результаты — коннектом даже опережает перцептрон в скорости выхода на стабильный результат в среднем лабиринте.

До этого момента динамика выглядит обнадеживающе. Биологическая модель не уступает традиционным подходам, не обнаруживая тревожных симптомов.

Большой лабиринт (113 клеток)

Первый же полноценный запуск на 113-клеточном поле (без архитектурных ухищрений, с параметром hops=2) обернулся фиаско: за 93 эпизода из 400 запланированных коннектом скатился к нулевой результативности (суммарный success rate 0.032 против 0.965 у MLP и 0.995 у Q-learning). Те редкие три успешных прохода заняли в среднем по 295 шагов вместо ожидаемых 30–40. Продолжать симуляцию в таком ключе не имело смысла, и я занялся поиском альтернативных решений.

Первая рабочая гипотеза предполагала, что корень проблемы кроется в одновременном росте масштаба лабиринта и глубины сигнала (hops). Требовалось развести эти факторы.

Разделение факторов: альтернативное кодирование для сохранения hops=1

Решением стало отказом от модели «одна пара — отдельный канал» в пользу разреженного (k-hot) кодирования: каждой связке выделяется небольшой случайный пул из k=6 каналов с контролем пересечений. Поскольку пары теперь могут разделять общие проводящие пути, все 452 комбинации легко умещаются в 302 канала при hops=1. Глубину сигнала трогать больше не пришлось.

Предварительная проверка подтвердила жизнеспособность схемы: коды различных пар практически не конфликтуют, обучение одной связки не рушит остальные, а на малом лабиринте показатели остались безупречными.

Однако одной лишь перекодировки оказалось недостаточно — масштабный лабиринт по-прежнему буксовал. Чтобы локализовать дефект (карта лабиринта или логика обучения), я исключил саму игровую среду. Взяв все 452 пары с заранее известными эталонными ответами («этот ход ведет к цели / не ведет»), я запустил циклическое обучение по кругу, замеряя процент корректных реакций после каждого прохода.

Результат оказался ошеломляющим. После первого круга точность достигла пика в 0.62, после чего начала деградировать даже на абсолютно верных подсказках, скатившись к 30-му проходу до 0.39. Проблема крылась не в блужданиях по лабиринту и не в форме наград: встроенный алгоритм обучения мухи перманентно разрушает ранее усвоенную информацию при непрерывной работе.

Контрольный тест с тем же набором кодов, поданных на вход обычному линейному классификатору (без всякого биомозга), продемонстрировал безупречный результат (точность 1.00) на всех уровнях сложности, включая 113 клеток, всего за 16 итераций. Следовательно, информационной емкости кодов хватает с избытком. Разрушительный эффект порождает именно встроенное правило коррекции синапсов, а не неспособность модели воспринимать задачу.

Введение «гейта»: защита от переобучения уже усвоенного

Регулировать интенсивность шага обучения извне нельзя — она зашита в библиотеку. Зато в наших силах управлять моментом вызова функции обучения. Концепция проста: если пара «клетка — действие» уже оценивается корректно, процедура train() пропускается. Предусмотрено три типа такого защитного «гейта»: по факту наличия ошибки, по текущему рангу (если правильный ход уже превосходит остальные) и комбинированный с учетом порогового допуска (margin) — минимального превышения приоритета верного действия над альтернативами. Тестирование на наборе эталонных ответов дало следующие показатели:

вариант стратегии

пиковая точность

точность на финише (60-й проход)

число вызовов обучения

без ограничений (базовый)

0.62

0.39

~13 400

гейт по ошибке

0.70

0.51

~8 150

гейт по рангу, margin 0.5

0.83

0.58

~4 240

гейт по рангу, margin 0.15

0.95

0.73

~4 820

гейт по рангу, margin 0.1

0.93

0.82

~3 450

гейт по рангу, margin 0.05

0.96

0.90

~2 640

гейт по рангу, margin 0.02

0.94

0.93

~2 120

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

Результаты в реальном лабиринте: паритет с Q-learning

Фиксированная стартовая точка, 113 клеток, 3 прогона по 150 эпизодов. Оптимальный маршрут — 30 шагов.

агент

доля успешных проходов

стабильный порог ≥ 90%

эффективность пути (1.0 — эталон)

число вызовов обучения

Q-learning

0.99

эпизод 20

0.99

—

коннектом (sparse + ранг-гейт)

0.99

эпизод 20

0.99

~148

MLP (без тюнинга)

0.86

эпизод 44

0.94

—

коннектом (без гейта)

0.14

не достигнут

~0.10

~49 800

коннектом (гейт по посещениям)

0.08

не достигнут

~0.10

~4 400

При наличии корректного гейта коннектом сравнялся с Q-learning почти по всем параметрам. При этом процедура обучения задействовалась примерно в 300 раз реже исходной версии, обеспечив двукратный прирост скорости (около 3 секунд на прогон против ~580). Все варианты без защитного фильтра с треском провалились.

Строгая проверка: старт из случайных позиций

Здесь кроется важный нюанс. Фиксированный старт заставляет агента ходить по одному и тому же коридору, затрагивая лишь около 35 клеток из 113. По сути, заучивается конкретная тропа, а не карта лабиринта. Для проверки целостного покрытия я настроил генерацию случайной стартовой точки в каждом эпизоде.

прогон

успех за последние 20 эпизодов

запуск 1

0.90

запуск 2

0.80

запуск 3

0.55

в среднем

0.75

В этих условиях гейт уже не обеспечил абсолютной защиты. Первые ~100 эпизодов коннектом держится наравне с Q-learning (90–100% успеха), после чего начинается деградация: результативность на финальном отрезке падает в среднем до 0.75 (с разбросом от 0.55 до 0.90 по различным запускам), тогда как конкуренты удерживают безупречный уровень 1.00. Любопытно, что во второй половине сессии интенсивность обучения вновь лавинообразно возрастает: около 65 вызовов за 20 эпизодов в середине и почти 2900 к концу, хотя точность давно зафиксировалась на плато около 0.80 и больше не растет. Агент бессмысленно переучивается. Выяснилось, что 10 наиболее ходовых пар из 452 забирают на себя 76–83% всех коррекций, а одна конкретная связка переписывалась свыше 4700 раз за сессию. Искусственное ограничение числа обновлений на одну пару сглаживает эту диспропорцию, но не устраняет позднюю деградацию полностью. Защитный фильтр существенно тормозит стирание памяти, но не решает проблему окончательно.

Альтернативная проверка: обучение без биологического механизма

Требовалось выяснить: узкое место кроется в преобразованиях самого мозга мухи или в его встроенном правиле синаптической коррекции? Для разделения этих факторов я применил третий подход: задействовал готовые кодовые отпечатки нейронной сети, но обучал их стандартным методом Q-learning вместо встроенных алгоритмов мухи. Для контроля параллельно запустил тест со случайными векторами аналогичной размерности, не имеющими отношения к биологическому прототипу.

На масштабе 113 клеток (3 запуска, 300 эпизодов, рандомный старт) нативные отпечатки мухи дали 0.98 успешности, сравнявшись с эталонами. Однако случайные векторы показали те же 0.99. Вывод: на данном уровне анатомическая структура мозга мухи не обеспечивает измеримого преимущества — критически важна лишь способность различать состояния, а не биомиметическая топология.

Гигантский лабиринт (316 клеток): предел проводки

До сих пор удавалось адаптировать коннектом к лабиринтам без модификации внутренней архитектуры, ограничиваясь внешними корректирующими триггерами. На малых, средних и больших полях это работало отлично.

На гигантском лабиринте эта схема рушится. Проверка базового процесса обучения показала, что коннектом начинает уступать обычному случайному шуму той же размерности: 0.41–0.45 успешности против 0.69–0.73. На определенном масштабе биологическая топология начинает вредить сильнее генератора псевдослучайных чисел.

вариант системы

успех за весь прогон

успех на финише

Q-learning

0.99

1.00

случайные коды + стандартное правило

0.69

0.73

нативные коды мухи + стандартное правило

0.41

0.45

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

Запуск этого лабиринта со встроенным обучением коннектома и защитным гейтом подтвердил худшие опасения. Без фильтра успех составлял 0%, а с гейтом доходил до пика в 60% с последующим падением в ноль в течение 100 эпизодов. Деградация на крупном масштабе протекала еще стремительнее.

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

Итог по навигационным тестам:

  1. Малый масштаб (26 клеток) — успех, паритет с классикой.

  2. Средний масштаб (72 клетки) — аналогично.

  3. Большой масштаб (113 клеток) — функционирует лишь с внешней поддержкой: без защитного гейта накопленные знания стираются из-за жесткого шага обучения; даже с гейтом при случайном старте проявляется деградация.

  4. Гигантский масштаб (316 клеток) — архитектурный барьер подтвержден дважды: гибридный тест (коды мухи + стандартное обучение) проигрывает случайному шуму (0.41–0.45 против 0.69–0.73), а родной коннектом с гейтом катастрофически деградирует.

Эксперимент 4. Крестики-нолики

Переходим к задачам с оппонентом. Здесь уровень сложности возрастает: число возможных комбинаций доски достигает 4520, запомнить их наизусть невозможно. Игровое поле кодируется поблочно: 9 ячеек транслируются в 9 групп каналов, каждая способна удерживать состояние (свой знак, знак противника, пустота).

Проверка проводилась в три этапа: базовый «честный» вариант (Tier 1), с оптимизацией и учетом симметрии доски (Tier 1-opt) и с добавлением защитного гейта для коннектома (Tier 2), поскольку Q-learning обладает естественным затуханием шага обучения, а MLP обновляет веса пропорционально ошибке.

Против случайного соперника (win rate):

агент

Tier 1 (базовый)

Tier 1-opt (симметрия)

Tier 2 (симметрия + гейт)

qlearning

0.478

0.448

—

mlp

0.530

0.466

—

connectome

0.404

0.418

error: 0.410 / visit: 0.414

Против «умного» эвристического противника (win rate):

агент

Tier 1

Tier 1-opt

Tier 2

qlearning

0.092 (last-100: 0.21)

0.000

—

mlp

0.002

0.000

—

connectome

0.004

0.000

error: 0.000 / visit: 0.000

В режиме самоигры (self-play):

агент

overall win

last-100

пик за 100

коллапс

дрейф весов, %

qlearning (Tier 1)

0.468

0.46

0.63

нет

—

mlp (Tier 1)

0.432

0.52

0.59

нет

—

connectome (Tier 1, честный)

0.146

0.01

0.52

да

19.6

qlearning_sym (Tier 1-opt)

0.448

0.40

0.56

нет

—

mlp_sym (Tier 1-opt)

0.416

0.47

0.53

нет

—

connectome_sym_cache (Tier 1-opt)

0.444

0.47

0.60

нет

18.5

connectome_t2_error (Tier 2)

0.423

0.42

0.56

нет

15.7

connectome_t2_visit (Tier 2)

0.418

0.33

0.55

нет

17.8

Против продвинутого оппонента все три модели показывают околонулевой win rate — по-видимому, это общая уязвимость архитектур в задаче противодействия детерминированному игроку. Зато в самоигре исключительно коннектом в базовом честном варианте терпит катастрофический крах: результативность падает почти до нуля к финалу сессии на фоне выраженного дрейфа весов (19.6%). Учет симметрии и защитный гейт частично нивелируют проблему, но биологическая модель остается слабейшей в трио.

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

Эффект симметрии игрового поля

Игровое поле крестиков-ноликов допускает 8 эквивалентных ориентаций (повороты и зеркальные отражения), представляющих с точки зрения логики единую позицию. Схлопывание этих вариаций в канонический вид сокращает число уникальных состояний примерно в 6 раз (с ~4500 до ~765).

Именно эта оптимизация (колонка Tier 1-opt) обеспечила наибольший прирост: показатель win rate в самоигре подскочил с почти нулевого до рабочих 0.47 при неизменном суммарном дрейфе синапсов. Причиной стало не улучшение обучаемости коннектома, а сокращение объема противоречивой информации, упростившее задачу.

Защитный гейт поверх симметрии (Tier 2) снизил дрейф до 15.7–17.8%, однако итоговый win rate не вырос, а даже слегка просел (0.42 и 0.33 против 0.47). Любопытный нюанс: минимальный дрейф весов не гарантирует максимальной эффективности, если исходная задача не страдала от разрушения памяти.

Обучение методом прямой имитации

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

вариант

точность (full-coverage)

верно / всего

базовый (без доработок)

54.0%

2441 / 4520

+ перемешивание последовательности

53.9%

2437 / 4520

+ периодический «сон» каждые 500 шагов

54.7%

2471 / 4520

+ симметрия доски

61.0%

2759 / 4520

+ симметрия и перемешивание

61.6%

2783 / 4520

Необученная система выдает около 54.0% (что означает полное стирание накопленных знаний последующими коррекциями без прироста над случайным уровнем). Единственным исключением выступает симметрия, обеспечивающая ощутимый подъем.

Резюме: коннектом — единственный среди тестируемых агентов, кто демонстрирует саморазрушение в базовом режиме. Это частично компенсируется упрощением доски через симметрию. Ограничение вновь проистекает не из нехватки данных, а из неспособности надежно дифференцировать массив схожих состояний. Отдельная проблема — бессилие против осмысленного оппонента — свойственна всем трем моделям, но биологический агент остается среди них аутсайдером.

Эксперимент 5. Зрительное восприятие

До этого момента все задачи решались через искусственные сигналы. Теперь проверим работу со настоящим зрительным трактом коннектома: библиотека поддерживает подачу пиксельных изображений на биометрические фоторецепторы. Справится ли система с распознаванием цифр?

Классификация цифр

Пять цифровых классов (0–4), 400 итераций обучения:

connectome

linear

mlp

точность (последние 20)

0.450

1.000

1.000

Коннектом не просто уступает — он вообще не обучается: на орезках по 20 раундов точность колеблется в диапазоне 0.30–0.65 без позитивной динамики, в то время как классические модели мгновенно выходят на 100%. Синаптический дрейф по всей сети зафиксирован на отметке 0.035%, но это мало о чем говорит: при таком объеме адаптации затрагивается лишь пара сотен связей из 15 миллионов, растворяясь в общем массиве.

Матрица ошибок наглядно иллюстрирует проблему:

факт \ прогноз

0

1

2

3

4

0

63

1

0

1

12

1

1

27

0

5

32

2

2

0

2

0

79

3

5

0

0

0

75

4

1

0

0

0

94

Символы 2 и 3 почти никогда не определяются верно, классифицируясь как «4» в 79 и 75 случаях из 80. Единица также частично смещается в четверку (32 раза из 65). Фактически модель выучила один универсальный ответ «4» и выдает его в непонятных ситуациях. Диагностика внутренних кодов показала причину: паттерны активности нейронов грибовидного тела для различных цифр практически неотличимы. Даже для специально подобранного набора контрастных символов (0, 1, 7, 8) коэффициент пересечения кодов составляет 0.77–0.84, то есть сигнал поступает в зону принятия решений в неразделимом виде. Увеличение глубины распространения сигналов и разрешения кадров не помогло.

Проблема носит более фундаментальный характер, чем в лабиринте: система не просто утрачивает информацию, она изначально формирует неразличимые внутренние представления.

Подсчет окружностей

Более простая задача: определить количество кругов на изображении (0–4). Три яруса тестирования:

ярус

точность

последние 20

средняя погрешность

Tier 1: базовое обучение (коннектом)

0.200

0.200

1.89

Tier 1: линейная модель

0.870

0.950

0.155

Tier 1: MLP

0.870

1.000

0.393

Tier 2: усиленное дообучение (коннектом)

0.210

0.200

1.833

Tier 3: имитация, held-out тест (коннектом), старт без обучения

0.400

—

0.920

Tier 3: имитация после обучения

0.210

—

1.960

Здесь ситуация любопытнее: анализ сырых сигналов в зрительной зоне (до входа в грибовидное тело) показывает отличную корреляцию с числом кругов (0.977 — почти идеал). Информация в системе присутствует в верном виде. Однако ни один из трех методов обучения не смог трансформировать этот поток в счетную реакцию. В Tier 3 обучение даже ухудшило показатели относительно исходного ненастроенного состояния (0.400 → 0.210), а локальный дрейф новых выходных синапсов составил 50–72%. Процедура обучения отрабатывала активно, но била мимо цели.

Резюме по зрению: налицо архитектурный тупик в механизме трансляции зрительного сигнала в ассоциативную зону — физически данные присутствуют, но механизм пластичности не способен с ними работать в данной конфигурации.

Эксперимент 6. Арифметика — неожиданный сбой

Возвращаемся к числам: логичным шагом выглядит проверка операции сложения. Заданы слагаемые A и B вместе с кандидатом в ответ C; требуется подтвердить равенство C = A + B. Использовались три яруса обучения (базовый, с ранг-гейтом, имитационный на фиксированном датасет), однозначные и двузначные числа (с переносом разряда), по 5 сидов на вариант:

Однозначные числа, финальная проверка (среднее ± 95% доверительный интервал):

ярус

connectome

linear

mlp

Tier 1 (базовый)

0.583 ± 0.013

0.719 ± 0.075

0.863 ± 0.056

Tier 2 (гейт)

0.656 ± 0.030

0.719 ± 0.075

0.863 ± 0.056

Tier 3 (имитация)

0.583 ± 0.012

0.691 ± 0.041

0.801 ± 0.111

Двузначные числа (с переносом):

ярус

connectome

linear

mlp

Tier 1

0.548 ± 0.026

0.755 ± 0.030

0.576 ± 0.039

Tier 2

0.584 ± 0.018

0.755 ± 0.030

0.576 ± 0.039

Tier 3

0.543 ± 0.029

0.743 ± 0.013

0.575 ± 0.040

Результаты разочаровывают: даже в базовом однозначном тесте без переноса разряда точность коннектома застревает на уровне 0.58–0.66, в то время как линейная модель и MLP достигают 0.72–0.86. На двузначных числах биологическая модель не отрывается от случайного уровня (здесь линейная модель опережает перцептрон, но это обусловлено заложенной в ее признаки подсказкой о переносе разряда, отсутствующей у конкурентов).

Этот провал опровергает мою рабочую гипотезу о том, что «плавные» обонятельные задачи работают успешно, а задачи на комбинаторную логику буксуют. Однозначное сложение — предельно гладкая задача (три градации импульсов, никакой дискретной логики), однако коннектом здесь демонстрирует провал.

Диагностика внутренних кодов показала первопричину: сравнение паттернов активности правильной суммы и ошибочных вариантов (отклонение на ±1, 2 или 3).

погрешность суммы

перекрытие кодов

0 (эталон)

1.000

±1

0.841 / 0.795

±2

0.723 / 0.663

±3

0.641 / 0.563

Двузначные числа (фоновое пересечение 0.172, p95 0.470):

погрешность

перекрытие кодов

0

1.000

±1

0.772 / 0.822

±2

0.605 / 0.499

±3

0.498 / 0.361

У верного и ошибочного на единицу ответов формируются практически идентичные нейронные отклики (0.8 против фоновых 0.17–0.21). Никакие дообучения, фильтры или увеличение итераций здесь не помогут, поскольку на уровне входной репрезентации различия физически стерты.

Резюме: это не дефицит тренировок, а проявление всё того же архитектурного потолка, более мягкого, чем в распознавании цифр (где пересечение достигало единицы, а здесь держится около 0.8).

Важная ремарка о природе проверяемых задач

Во избежание недопонимания важно сделать принципиальную оговорку.

Все описанные тесты исследовали способность центра ассоциативной памяти мухи (грибовидного тела) осваивать произвольные абстрактные связи «стимул — ценность» вроде координат в лабиринте, ходов в крестиках-ноликах или числовых значений. Эволюция не готовила дрозофилу к подобным вызовам.

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

Отсюда вытекает важный вывод: идея «подключить коннектом дрозофилы к роверу или дрону для обхода препятствий» кажется сложной, но на практике окажется в разы проще (в аспекте обучения), чем реализованные мной абстрактные тесты. Большая часть проводки для пространственной ориентации уже спроектирована эволюцией, ее не требуется выстраивать через награды и штрафы — достаточно корректно скоммутировать входы и выходы. Этим и объясняется убедительность роликов в духе «муха играет в DOOM» (управляющая движением и огибающая стены): это именно то, для чего профильные отделы мозга создавались изначально.

Мои же эксперименты решали противоположную задачу: я намеренно принуждал мозг мухи к нехарактерной деятельности — арифметике, анализу позиций на доске 3×3, удержанию абстрактных комбинаций. Соответственно, итоги исследования иллюстрируют не «пределы возможностей мозга дрозофилы вообще», а лишь применимость ее ассоциативной памяти для непрофильных задач.

Сводная таблица экспериментов

Эксперимент

Механизм

Результат

Бандит

step/train

паритет с классикой

Сравнение чисел (интенсивность)

step/train

успех (с поправкой на встроенный сдвиг)

Сравнение чисел (позиционное)

step/train

успех, без исходного смещения

Лабиринт (26/72 клетки)

step/train

паритет с классикой

Лабиринт (113 клеток, честный)

step/train

крах (падение успеха до ~0)

Лабиринт (113), своё обучение + k-hot + гейт, фиксированный старт

step/train + внешний гейт

паритет с классикой (0.99 против 0.99)

Лабиринт (113), то же, случайный старт

step/train + внешний гейт

деградация после ~100 эпизодов (финал 0.75 против 1.00)

Лабиринт (316), коды мухи + стандартное правило

внешнее правило на коде мухи

хуже случайного кода (0.41–0.45 против 0.69–0.73), Q-learning 0.99

Лабиринт (316), своё обучение + гейт

step/train + внешний гейт

пик ~0.6, сброс в ноль

Крестики-нолики (базовый)

step/train

крах в самоигре, уязвимость против сильного соперника

Крестики-нолики + симметрия

step/train

стабильность в самоигре, но нет преимуществ против умного бота

Распознавание цифр (зрение)

x_teach_output

провал, представленческий тупик (коды идентичны)

Подсчет кругов (зрение)

x_teach_output

провал, сигнал есть, но нет обучения

Сложение (одно/двузначные)

step/train

провал даже в плавной форме, представленческий тупик

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

Итоговые выводы

  • Обучающееся ядро дрозофилы (грибовидное тело) успешно справляется с примитивными линейными задачами формата «один стимул — одна ценность».

  • Модель заметно слабее в сценариях, требующих интеграции комплекса независимых признаков в целостный образ — будь то игровая доска, начертание символа или арифметика с переносом разряда.

  • Сама логика синаптической коррекции (train() как бинарный триггер без затухающего шага) генерирует проблемы стабильности на крупных масштабах. Продолжительное обучение стирает полезную информацию, и даже внешние защитные фильтры не решают проблему всеобъемлюще.

Репозиторий и исходный код

Все сценарии, агентские модули и датасеты опубликованы в открытом доступе: репозиторий на GitHub.

Материалы размещены в директории my_fly_experiment/ внутри основного проекта fly-brain и запускаются непосредственно оттуда.

git clone https://github.com/onnxaa/fly-brain.git 
cd fly-brain 
python3 -m venv .venv 
source .venv/bin/activate
git clone https://github.com/Nnnnest/my\\_fly\\_experiment.git
cd my_fly_experiment
  • agents/ — реализации агентов по категориям: bandit/, gridworld/, tictactoe/, shared/ (вариации для Q-learning, MLP и коннектома).

  • envs/ — игровые окружения (бандит, лабиринты, крестики-нолики, процедурный генератор).

  • encoders/ — схемы кодирования сигналов.

  • opponents/ — алгоритмические боты для крестиков-ноликов.

  • scripts/ — управляющие скрипты: bandit/, gridworld/, tictactoe/, addition/ и diagnostics/ (анализ коллизий кодов).

  • results/ — собранная статистика в CSV, графики в results/plots/, утилиты визуализации в results/analysis/.

  • models/tictactoe/ — дампы весов обученных агентов.

Примеры запуска (из каталога my_fly_experiment/):

python results/analysis/view_bandit.py
python results/analysis/view_gridworld.py
python scripts/comparison/run_comparison.py

Дополнительно: в репозитории присутствует скрипт scripts/tictactoe/play_tictactoe.py, позволяющий сыграть партию в терминале против любого обученного агента (Q-learning, MLP или коннектом со всеми вариациями обучения), чтобы оценить разницу в поведении на практике, а не по сухим таблицам.

 

Источник

Поделиться:

Похожие статьи

Поиск по играм, новостям и статьям…

Введите не менее двух символов

Введите не менее двух символов