Недавно я написал статью про то, как работает память в мозгу. Несколько комментариев говорили о том, что я недостаточно раскрыл тему особенностей биологического нейрона. И я решил исправить свою ошибку.
В этой статье — список основных механизмов, которые отличают биологические нейроны от простой модели с весами связей и порогом активации. Я расскажу, как поправить модель, если вам понадобится эти особенности учесть.
Начинаем мы вот с этой простой картинки:
1. У нас есть разные нейроны
Проблема: В
Решение: Раскрасить шарики нейронов, выделив таким образом те, которые реагируют на специфический нейромедиатор. Если нужно несколько нейромедиаторов для одного нейрона — покрасить его в несколько цветов. Если каждый нейромедиатор по своему влияет на заряд нейрона — создать функцию заряда нейрона для каждого нейромедиатора. Описать нейрон композицией этих функций.
2. С нейронов утекает заряд
Проблема: Реальный нейрон не хранит все заряженные частицы бесконечное количество времени, а постепенно разряжается.
Решение: Задать функцию разрядки нейрона от времени. Если понадобится — можно для каждого нейрона свою. Но вообще, заряд утекает из-за разности потенциалов, так что там ситуация как с саморазрядом конденсатора — у нас будет что-то вроде: , где U — разность потенциалов между нейроном и внешней средой, t — время, R — сопротивление мембраны, С — емкость системы «нейрон-мембрана-внешняя среда». Кстати, такое уже делали.
3. Нейроны можно активировать без сигнала от других нейронов
Проблема: Поскольку реальный нейрон не беспокоится о том, откуда к нему пришли нейромедиаторы — он может активироваться сам, просто от выброса нейромедиаторов в
Решение: Добавить штуку, которая при активации будет повышать заряд всех нейронов. Покрасить ее в цвет нужного нейромедиатора. Активировать, когда нужно симулировать внешний источник нейромедиатора.
4. Есть нейроны, у которых нет дендритов
Проблема: Некоторые нейроны вообще не получают сигнал на вход от других, активируясть только от уровня нейромедиаторов.
Решение: См. пункт выше.
5. Нейрогенез
Проблема: В
Решение: Добавлять динамически новые нейроны и связи, если нужно моделировать нейрогенез. Чтобы моделировать обратный процесс — удалять.
6. Связи между нейронами — не статичны
Проблема: Когда происходит активация нейронов, связи между ними усиливаются или ослабевают. Это зависит от порядка активации. Если направление активации — прямое, т.е. сначала активируется нейрон из которого выходит стрелочка, а потом тот, в который входит — связь услиливается. Если обратное — слабеет.
Решение: Уменьшить или увеличить вес связи, в зависимости от порядка активации. И да, вес может быть нулевой. Это значит, что связь настолько слаба, что активация одного нейрона на другой не влияет. Но потенциально, мы можем услилить эту связь за счет прямых активаций извне — поэтому «просто удалить» ее нельзя.
7. Долговременная память
Проблема: Реальный
Решение: Запомнить значение веса, в момент «фиксации» связи. Возвращать силу связи к нему после усиления или ослабевания связи. Если связь зафиксировалась еще раз — обновить сохраненное значение.
8. Забывание информации из долговременной памяти
Проблема: Реальный
Решение: Запустить деградацию связи с помощью механизма из п.6. (активация в противоположном направлению связи порядке) и зафиксировать результат с помощью п.7.
9. Вещества
Проблема: Обладатели реальных мозгов иногда едят таблетки, которые регулируют естественные нейромедиаторы или являются их структурными аналогами. Например антидепрессанты СИОЗС — увеличивают количество серотонина воздействующего на нейроны, а церукал — блокирует дофаминовые рецепторы.
Решение: Ослаблять или усиливать все сигналы для нейронов соответствующего цвета. Например, мы заблокировали дофамин — уменьшаем зарядку всех дофаминовых нейронов, процентов этак на 90. Приняли ингибитор обратного захвата серотонина — увеличиваем все серотониновые связи процентов на 30. Приняли структурный аналог серотонина — опять увеличиваем, но уже раза в 3.
10. Любая другая проблема
Зарядка нейрона идет не линейно? Создай функцию и используй ее для описания повышения заряда. Хочешь описать воздействие других сущностей на нейроны? Добавь их в свою модель. Суть не поменяется — у тебя всегда будут нейроны и связи между ними. Ты можешь настраивать их поведение, в зависимости от твоих потребностей.
Хочешь приблизить к реальным? Список из 9 пунктов выше — поможет. Тебе это не нужно, ведь твоя задача — распознать картинки? Забей на все эти нюансы. Хочешь память, похожую на память в биологическом
Многое уже смоделировали ранее, можно пользоваться этими результатами. Потребовалось что-то спецефичное, что не описал ни я, ни кто-то другой — сделай сам.
Но, если тебе не нужна такая точность — забей. Не надо оверинжинирить только потому, что теперь у тебя появился набор новых блестящих молотков. Это все равно что использовать ОТО для моделирования падения кирпича с девятиэтажки. Да, релятивисткие эффекты будут работать и для этого случая. Но ты серьезно усложнишь себе задачу, а в замен получишь прибавку к точности на 0.0000001%.
Keep it simple and straightforward.
Автор: LonelyDeveloper97