В этой статье — список основных механизмов, которые отличают биологические нейроны от простой модели с весами связей и порогом активации. Я расскажу, как поправить модель, если вам понадобится эти особенности учесть.
Начинаем мы вот с этой простой картинки:
1. У нас есть разные нейроны
Проблема: В мозгу множество типов нейромедиаторов, и каждый нейрон имеет свой набор рецепторов.
Решение: Раскрасить шарики нейронов, выделив таким образом те, которые реагируют на специфический нейромедиатор. Если нужно несколько нейромедиаторов для одного нейрона — покрасить его в несколько цветов. Если каждый нейромедиатор по своему влияет на заряд нейрона — создать функцию заряда нейрона для каждого нейромедиатора. Описать нейрон композицией этих функций.
2. С нейронов утекает заряд
Проблема: Реальный нейрон не хранит все заряженные частицы бесконечное количество времени, а постепенно разряжается.
Решение: Задать функцию разрядки нейрона от времени. Если понадобится — можно для каждого нейрона свою. Но вообще, заряд утекает из-за разности потенциалов, так что там ситуация как с саморазрядом конденсатора — у нас будет что-то вроде: , где U — разность потенциалов между нейроном и внешней средой, t — время, R — сопротивление мембраны, С — емкость системы «нейрон-мембрана-внешняя среда». Кстати, такое уже делали.
3. Нейроны можно активировать без сигнала от других нейронов
Проблема: Поскольку реальный нейрон не беспокоится о том, откуда к нему пришли нейромедиаторы — он может активироваться сам, просто от выброса нейромедиаторов в мозг.
Решение: Добавить штуку, которая при активации будет повышать заряд всех нейронов. Покрасить ее в цвет нужного нейромедиатора. Активировать, когда нужно симулировать внешний источник нейромедиатора.
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.
v1000
смотря на попытки создания ИИ на основе нейронных сетей, у меня возникают два вопроса:
1) копирование птицы для создания самолета. иногда более простая система более эффективна, а вдруг не надо заморачиваться на полное копирование, а только на базовые принципы.
2) не факт, что полное копирование «в кремнии» даст тот-же результат. что если это будет точная копия радиоприемника, но в нем, почему-то, не будет главного-музыки и голоса диктора.
LonelyDeveloper97 Автор
С ИИ вопрос интересный. У биологических мозгов есть много архитектурных особенностей, которые приходится подпирать костылями.
Они не адаптированы для быстрых и точных расчетов. Не замечают, когда оперируют понятиями, которые на самом деле являются ссылкой в /dev/null (воркалось, хливкие шорьки… и все такое). Позволяют создавать циклические зависимости без «stackoverflow exception» (Летающий макаранный монстр не ошибается, ибо так написано в книге о летающем макаронном монстре, а книга правильна, потому что летающий макаронный монстр не ошибается). Вот список эксплойтов, особенностей и багов. Внушительный и при этом не полный.
Если создавать ИИ, то переносить туда все это — не стоит, действительно можно создать что-то эффективнее.
Но мне кажется, что помимо попыток создания ИИ есть и другие задачи: Мы все еще не знаем, как правильно работать с уже имеющимися мозгами. Как их правильно обучать? Как чинить, если полетела регуляция нейромедиаторов? Как патчить от списка эксплойтов выше?
И вот здесь может понадобиться более точная с точки зрения биологии модель.
dipsy
Arech
Оох. Опять это.
У искусственных нейронных сетей с биологическими сходства не больше, чем у лунохода с танком. И то и другое может самостоятельно перемещаться, и даже имеет круглые колёсики для этого, но на этом сходства заканчиваются.
Иногда что-то интересное из биологии удаётся адаптировать к ИНС, но едва ли не чаще получается наоброт, что работающие идеи в ИНС, придуманные исключительно для них без всякой оглядки на биологию, вдруг удаётся разглядеть в некоторых биологических системах. Но повторюсь, и то и другое — в лучшем случае «иногда». И уж точно никто в ИНС не копирует биологические системы. Никак. Совсем. В ИНС давно прошли уже не то, что стадии самолёта, к космолётам вплотную приблизились.