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

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

Начинаем мы вот с этой простой картинки:

image

1. У нас есть разные нейроны


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

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

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

image

2. С нейронов утекает заряд


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

Решение: Задать функцию разрядки нейрона от времени. Если понадобится — можно для каждого нейрона свою. Но вообще, заряд утекает из-за разности потенциалов, так что там ситуация как с саморазрядом конденсатора — у нас будет что-то вроде: $U(t) = U_0*e^{-t/RC}$, где U — разность потенциалов между нейроном и внешней средой, t — время, R — сопротивление мембраны, С — емкость системы «нейрон-мембрана-внешняя среда». Кстати, такое уже делали.

3. Нейроны можно активировать без сигнала от других нейронов


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

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

image

4. Есть нейроны, у которых нет дендритов


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

Решение: См. пункт выше.

5. Нейрогенез


Проблема: В мозгу растут новые нейроны и связи. И умирают, кстати тоже.

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

6. Связи между нейронами — не статичны


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

Решение: Уменьшить или увеличить вес связи, в зависимости от порядка активации. И да, вес может быть нулевой. Это значит, что связь настолько слаба, что активация одного нейрона на другой не влияет. Но потенциально, мы можем услилить эту связь за счет прямых активаций извне — поэтому «просто удалить» ее нельзя.

7. Долговременная память


Проблема: Реальный мозг умеет «фиксировать» состояние связи, и таким образом обеспечивает наличие долговременной памяти. Процесс называется Late Long-Term Potentiation.

Решение: Запомнить значение веса, в момент «фиксации» связи. Возвращать силу связи к нему после усиления или ослабевания связи. Если связь зафиксировалась еще раз — обновить сохраненное значение.

8. Забывание информации из долговременной памяти


Проблема: Реальный мозг умеет деградировать даже связи полученные по предыдущему механизму.

Решение: Запустить деградацию связи с помощью механизма из п.6. (активация в противоположном направлению связи порядке) и зафиксировать результат с помощью п.7.

9. Вещества


Проблема: Обладатели реальных мозгов иногда едят таблетки, которые регулируют естественные нейромедиаторы или являются их структурными аналогами. Например антидепрессанты СИОЗС — увеличивают количество серотонина воздействующего на нейроны, а церукал — блокирует дофаминовые рецепторы.

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

10. Любая другая проблема


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

Хочешь приблизить к реальным? Список из 9 пунктов выше — поможет. Тебе это не нужно, ведь твоя задача — распознать картинки? Забей на все эти нюансы. Хочешь память, похожую на память в биологическом мозге? Учитывай пункты с 5 по 8. Не хватило точности? Копни глубже в нейробиологию, спустись еще на уровень ниже и уточни модель. Смоделируй синапс, смоделируй поведение рецепторов. Тут есть пространство для маневра.

Многое уже смоделировали ранее, можно пользоваться этими результатами. Потребовалось что-то специфичное, что не описал ни я, ни кто-то другой — сделай сам.

Но, если тебе не нужна такая точность — забей. Не надо оверинжинирить только потому, что теперь у тебя появился набор новых блестящих молотков. Это все равно что использовать ОТО для моделирования падения кирпича с девятиэтажки. Да, релятивисткие эффекты будут работать и для этого случая. Но ты серьезно усложнишь себе задачу, а в замен получишь прибавку к точности на 0.0000001%.

Keep it simple and straightforward.