[Из песочницы] Некоторые алгоритмы под капотом мозга
Некоторое время назад мне захотелось изучить современные материалы по нейробиологии с точки зрения программиста. То есть вытащить из них основные алгоритмы, очистив их от лишних химических/биологических подробностей.
Так что, если кто-то любит искусственные нейросети и хочет поискать вдохновения в естественных, эта статья может подойти. Все охватить одной статьей, понятно, не удалось — данных уж очень много.
Сначала краткое описание работы био-нейрона, чтобы было понятно дальнейшее. Кто и так знает основы — смело пропускайте.
Так вышло, что внутри нейрона электролит, и снаружи тоже. Концентрации ионов в них разные, и потому на мембране нейрона возникает разность потенциалов. Она же в литературе именуется «мембранным потенциалом» , «напряжением» или просто «U». Ученые быстро научились ее мерить при помощи электродов и обнаружили, что она живет богатой на события жизнью. Самым ярким событием является спайк. Он выглядит как импульс на графике U.
Решение о генерации спайка принимается в том месте на соме, откуда растет аксон. Решение принимается тогда, когда U на соме достигает порогового значения. Входное сообщение от одного нейрона к другому — это некий набор химических веществ. Может быть разным. Когда нейрон сгенерировал спайк в свой аксон, то аксон выбрасывает эти вещества в синапсы, и их ловят принимающие нейроны в этих синапсах. Когда эти химикалии пойманы принимающим нейроном, они запускают цепочку событий на его мембране, и в этом месте на ней образуется локальное возмущение потенциала. Оно может быть либо со знаком »+» и называться EPSP (возбудительное). Либо со знаком »-» и называться IPSP (тормозное).
Дальше это возмущение распространяется по дендритному дереву и достигает сомы. Там EPSP-ы и IPSP-ы складываются с учетом знака, и, если порог достигнут, то генерируется спайк. Если не достигнут, то все просто затухает.
В принципе, любые возмущения, путешествующие по мембране, затухают как волны на воде. Если только мембрана не генерирует спайк, чтобы усилить это возмущение. Не только сома умеет генерировать спайки, но и дендриты тоже. Это бывает, например, когда несколько синапсов на этом дендрите оказались одновременно активированы. Тогда мембрана дендрита генерирует местный спайк. Если бы дендриты не умели генерировать спайки, то с дальних дендритов EPSP не доходили бы до сомы, затухая по пути.
Эффективность синапса бывает разная по величине. В ответ на одно и то же входящее химическое сообщение может возникнуть либо маленькое по амплитуде возмущение напряжения на мембране, либо побольше. Это эквивалентно понятию «вес синапса» из искусственных нейросетей. Это как раз тот параметр, который подлежит обучению. Отличие от искусственного нейрона тут в том, что суммация возмущений на нейроне происходит не только в пространстве, но и во времени (см. картинку).
Спайк здесь — это острый пик. Пунктирная линия — это пороговое значение напряжения мембраны для сомы. На нижней части картике EPSP — это подпороговые «холмики». Двух, как видим, оказалось недостаточно, а вот третий довел потенциал до порога. Если бы эти же три EPSP (с любой картинки) пришли с большой разницей во времени, то спайка бы не было, т.к. их эффект на соме затух бы во времени, и эффективной суммации бы не произошло.
STDP
Предполагается, что основа долговременной памяти — это то, как распределена эффективность по синапсам нейронов. Какие-то синапсы ослабляются, какие-то усиляются. Это называется пластичность. Но по какому алгоритму решается, какие синапсы и как будут менять веса? Самый известный принцип в живых нейросетях — Spike-timing-dependent plasticity.
Он наблюдается от насекомых до человека и формулируется так:
Если входной спайк в данный синапс склонен приходить непосредственно перед тем, как нейрон сам сгенерирует спайк, то синапс усиливается.
Если входной спайк в данный синапс склонен приходить сразу после генерации спайка самим нейроном, то синапс ослабляется.
Те входы, которые контрибутили в спайк, делаются более проиоритетными в дальнейшем, а которые не контрибутили — менее. Процесс продолжается, пока не останется некое подмножество изначальных весов, а остальные будут уменьшены до нуля. Учтем тот факт, что нейрон генерирует спайк, когда в коротком временном окне активированы сразу многие его входы. Из этого можно предположить, что оставшиеся ненулевыми входы имели корреляции во времени.
Зависимость прироста/убыли веса синапса от Δt меду входным (pre) и выходным (post) спайком
Это явление очень известно и подтверждено во многих экспериментах, но нужно отметить, что перебирая разные протоколы эксперимента, можно все же добиться искажения/нарушения этого закона, не нарушая формальные требования к пре-пост спайкам [0].
Обратное распространение спайка
Пирамидальный нейрон (пожалуй, самый известный тип нейронов коры) имеет тысячи синапсов, которыми усыпано его дендритное дерево (на самом деле, у него два дендритных дерева). Если мы выберем несколько синапсов — близко к соме, подальше, и совсем далеко от нее — и посмотрим, какие для них получатся графики STDP, то графики будут разные.
Для близких к соме синапсов график будет выглядеть классически — как вариация на тему хеббовского обучения. То есть как на картинке выше. Чем дальше от сомы, тем меньше амплитуда этого обучения. А если взять далекие синапсы, то можно увидеть и совсем странные вещи. Например, если входной спайк (который пришел в синапс) предшествовал выходному, то в эксперименте наблюдалось не усиление, а ослабление этого синапса. Антихеббовское обучение, Карл! Однако, его удавалось вернуть в хеббовское русло, если на дальних дендритах заставить генерироваться дендритные спайки. Вобщем, с обучением ближних к соме синапсов все довольно четко, а на дальних выглядит, как будто там каша другой алгоритм обучения[1].
Давайте посмотрим, откуда растут ноги у этого всего. Итак, для итерации STDP нужно, чтоб в соме был сгенерирован спайк. После этого синапсы должны о нем быстро узнать. Для этого желательно, чтоб спайк распространился к ним из аксонного холмика. Хорошая новость — это и в самом деле так происходит. Нейрон посылает спайк не только другим нейронам, но и обратно в свои дендриты. «Плохая» новость — при обратном распространении этот спайк затухает. Слишком быстро, чтоб дойти до дальних дендритов. Теперь понятно, почему обучение ближних и дальних синапсов имеет различия. Осталось разобраться, что же все-таки происходит в дальних синапсах.
Тут важно помнить, что дендриты не являются пассивными проводниками возмущений. Они сами умеют генерировать спайки, когда «считают нужным». Если по какой-то причине дендрит сгенерировал спайк, и одновременно в эту зону пришел уже порядком затухший спайк от сомы, то, сложившись с дендритным спайком, он (может быть) получит как-бы пинок второе дыхание и сможет рапространиться дальше в это поддерево. По крайней мере, есть такая гипотеза. Другая гипотеза — возможно, синапсы на далеких дендритах обучаются вообще без использования обратно распространяющегося соматического спайка. Об этом будет ниже.
Интересные эффекты в дендритах — для пластичности достаточно дендритных спайков
Итак, что вообще нужно, чтоб у синапса стал увеличиваться вес? Нужно чтоб в этом месте нейрона включилась соответствующая химическая машинерия. Для этого, в свою очередь, нужно, чтоб потенциал на мембране в этом месте был сдвинут каким-нибудь достаточно большим возмущением. Как оно может быть создано? Обычного среднего EPSP для этого слишком мало. А вот сумма EPSP и обратно распространяющегося соматического спайка уже может подойти. Некоторое время считалось, что это основной способ вызвать пластичность.
Потом в экспериментах выяснилось, что можно искусственно подавить в нейроне соматические спайки и все равно регистрировать увеличение весов в его синапсах в ответ на их стимуляцию (не любую). Оказалось, что пластичность возникает, когда стимуляция синапсов достаточно сильна для возникновения в этом месте дендритных спайков. Они — достаточно сильное возмущение, чтобы запустить пластичность в этом месте.[2] Да-да, без участия остального нейрона. То есть «минимальным элементом» обработки информации можно считать даже не нейрон, а отдельную дендритную ветвь.
Интересные эффекты в дендритах — кластеризация
В нейронах гиппокампа было обнаружено, что LTP (долговременное усиление веса) одного синапса снижает порог для возникновения LTP на соседних синапсах. Затем было проведено исследование для нейронов сенсорной коры мыши, в которой нейроны обрабатывали данные от усов. И обнаружилось, что синаптическая пластичность имеет склонность к кластеризации.
Был взят конкретный нейрон, и выбрано 15% синапсов, которые наиболее интенсивно подвергались пластичности. Их распределение по нейрону оказалось неслучайно: значительная часть оказалась соседями — 50 из 161. Потом был взят нейрон из сенсорной коры мыши, у которой были отрезаны усы (то есть нейрон страдал недостатком информации). Эффект кластеризации в таком нейроне отсутствовал. Зато он был глобально более чувствителен ко входным сигналам [3].
Интересные эффекты в дендритах — от перестановки слагаемых всё меняется
Итак, пусть к нам на дендрит пришли два EPSP, как на картинке выше. Возмущение, которое они вызовут в соме, зависит не только от величины этих EPSP, но и от:
1) их расстояния до сомы
2) их расстояния друг от друга
Рассмотрим по порядку. Если из синапса в дендрит пришел EPSP, то он будет рапространяться к соме и затухать по пути. То есть, чем дальше он был, тем больше затухнет. А если на его пути попадется активировавшийся тормозной синапс, то EPSP тут же и заглохнет. Таким образом, если у нас были два довольно далеких друг от друга EPSP, то они внесут два маленьких возмущения в сому — и то если повезет.
Но если они оказались рядом друг с другом, то дедрит может сгенерировать в этом месте спайк. Это такое возмущение, у которого амплитуда больше, чем просто сумма EPSPшек. У дендритного спайка уже куда больше шансов пробежаться до сомы, и вклад будет больше. [4].
Связывание фич синхронизацией
(synchronisation encodes relation, feature binding)
Из предыдущих пунктов вытекает, что относительный тайминг спайков важен для процессов пластичности в синапсах. И в этом свете никак нельзя обойти явление временной синхронизации нейронов. Это явление вездесущее и, видимо, очень фундаментальное, т.к. есть на всех уровнях мозга. Рассмотрим конкретный пример.
В зрительную кору котенку имплантируют электроды, и затем показывают ему разные зрительные стимулы. На записях с электродов видно, что некоторые группы нейронов вовлекаются в синхронную по фазе осцилляторную активность. Эти нейроны могут находиться в разных местах. Нейроны склонны синхронизироваться, если были активированы контурами на изображении, которые либо непрерывны, либо двигаются с одной скоростью и в одном направлении (принцип общей судьбы). Для зрительной коры вероятность синхронизации коррелирует с тем, насколько входные стимулы удовлетворяют Гештальт-критерию.
Все зеленые точки здесь воспринимаются не по-отдельности, а как целое
Рабочая гипотеза предполагает, что кора использует синхронизацию разрядов в нейронах для кодирования отношения «единое целое» о тех участках сигнала, на которые отвечали эти нейроны. Т.е. дальше их ответы будут обрабатываться как единое целое вышестоящими нейросетями, потому что именно вот эти спайки придут туда одновременно, а значит, буду суммироваться, не успев затухнуть.
Синхронизация активности в коре на больших расстояниях является предпосылкой к тому, чтобы вызвавший эту активность сигнал (например, увиденное слово) получил доступ в зону сознательного восприятия. Аналогичный сигнал, будучи обработан бессознательно, вызовет только локальную синхронизацию [5].
Каким образом синхронизируются популяции нейронов — предмет расследования [6].
Несинаптическая пластичность
Помимо весов синапсов, в ходе обучения могут подвергаться изменению и другие характеристики нейрона. Может меняться его общая возбудимость (читай, порог для генерации спайка). Если много весов укрепились, то нейрону есть смысл понизить свою возбудимость. А если наоборот — низкий уровень изменения в весах, то имеет смысл повысить.
Другой пример — аксон умеет изменять время, за которое он проведет спайк адресатам. Еще — если долгое время стимулировать нейрон на низкой частоте, он уменьшает свою возбудимость, и это долговременный эффект.
Replay
В гиппокампе есть нейроны, которые реагируют на определенное место в пространстве. Называеются клетки места. То есть, если крыса находится в одном месте лабиринта, то максимально реагирует одна клетка места, если в другом — другая. Когда крыса спит или отдыхает, в гиппокампе начинают в ускоренном темпе проигрываться те последовательности клеток места, которые соответствовали реально пройденным перед этим маршрутам. Для остальных клеток места такого не наблюдается, то есть именно эти последовательности — не случайны.
На рисунке: крыса идет по прямому треку, и сначала активируется «синяя» клетка места, потом «красная», и потом «зеленая». Потом она получает подкрепление, и начинается ускоренное проигрывание этой последовательности в обратном порядке » синий красный зеленый».
Кроме того, гиппокамп может проигрывать будущие места, перед тем, как крыса их действительно посетит (preplay).
Не менее интересно — процесс реплея во сне затрагивает еще и кору мозга. То есть одновременно и в коре, и в гиппокампе реплеится то, что связано с один и тем же опытом, испытанным во время предыдущего бодрствования [7]. Есть гипотеза, что гиппокамп — модуль быстрого запоминания, а кора — медленного глубокого обучения. Возможно, гиппокамп запоминает события-эпизоды в порядке их следования, а затем «проигрывает» их коре раз за разом в ускоренном темпе, чтоб та вытащила из этих последовательностей скрытые закономерности. Тогда понятно, почему пациент с удаленным гиппокампом теряет возможность создавать новые долговременные воспоминания, но не теряет те, что были сделаны до операции.
L-LTP (late-phase LTP)
Долговечность изменений в весах синапсов зависит не только от исходного стимула, который их вызвал, но и от событий, происходящих до и после этого. Эксперименты показывают, что кратковременная память о стимуле может консолидироваться в более долгую, если животное переживет сильное событие внутри некоторого временного окна вокруг этого стимула. Это регистрируется и на уровне отдельных нейронов. Пусть некоторым протоколом стимуляции удалось вызвать кратковременное усиление синапса. Его можно сделать долговременным, если сильным стимулом (тетанически) возбудить другой какой-то путь, сходящийся на этом же нейроне (внутри правильного окна времени, конечно).
Латеральное торможение
(lateral inhibition, surround inhibition, surround suppression)
Этот простой принцип известен ученым с пещерных времен. Возможно, вы видели иллюзии вроде этой:
На заре нейронауки считалось, что нейрон выискивает в своем рецептивном поле некий стимул, и если искомый стимул там нашелся — то нейрон интенсивно генерирует спайки. Если нашлось не совсем то, но похоже — тоже генерирует спайки, но не так интенсивно. А потом выяснилось, что активность нейрона может подавляться активностями из вне его рецептивного поля.
Помимо возбудительной сети (она же главная), в мозге присутствует еще одна — сеть из тормозных интернейронов. «Главные» нейроны обеспечивают возбуждение в сети, а интернейроны — как правило, тормозят его. Интернейроны имеют локальную область дествия. Главных нейронов больше, чем интернейронов, но зато интернейроны более разнообразны. Конкретно упомянутая зрительная иллюзия предположительно берется из-за взаимодействия возбудительных нейронов с тормозными. Логика процесса такая: чем больше активирован нейрон, тем сильнее он тормозит (при помощи интернейронов) активность по соседству. Возбудительные нейроны соревнуются друг с другом за право внести наибольший вклад в сигнал для следующего слоя нейронов. Если ты был сильно активирован, то сильно затормозишь соседей. Если соседи были слабо активированы, то слабо затормозят тебя. В результате все нелинейности во входных данных «выпятятся» еще сильнее, и уже с этим будет работать следующий слой.
Что-то такое наблюдается в сетчатке. Реальный коннектом не такой простой, конечно, но основополагающий принцип латерального торможения там есть.
Детекторы ошибок в предсказаниях[8]
Дофаминовые нейроны учатся связывать какие-то «ключи» во входном сигнале с получением награды. Используют при этом такой алгоритм:
(1) Если произошла непредсказанная награда, то нейроны реагируют увеличением частоты спайков (у нас положительная ошибка).
(2) После обучения они уже реагируют на «ключевое событие», а не на саму награду. Т.е. на предшественника награды они выдают увеличение частоты. А на награду, если она приходит по расписанию, реакции уже нет (у нас нет ошибки).
(3) Если обученный нейрон предсказал награду, а она не произошла — он реагирует уменьшением частоты спайков (у нас отрицательная ошибка)
Есть мнение, что там не просто ассоциативное обучение, а установление связи «причина — следствие». То есть, например, грозовые облака имеют корреляцию с дождем, потому что часто так бывает — видишь облака, а потом видишь дождь. То же самое бывает с зонтиком: видишь у людей зонтики, а потом видишь дождь. Но если хоть один раз дождь начался без зонтиков, то уже ясно, что зонтики не причина дождя.
В нашем случае, место действия — мозжечок. Он, почти как настоящий мозг, имеет свою кору и подкорковые ядра. В его коре есть слой нейронов по имени «клетки Пуркинье». Они отправляют к своим адресатам тормозные синапсы. То есть, чем чаще клетки Пуркинье генерируют спайки, тем больше угнетены нейроны-адресаты. В отсутствие входного сигнала клетка Пуркинье постоянно генерирует спайки с некоторой частотой. Каждая клетка Пуркинье (помимо прочего) получает два любопытных входных сигнала:
1) примерно 100 000 слабых входов от параллельных волокон (это аксоны гранулярных нейронов)
2) один очень сильный вход от вьющегося волокна (это аксон от какого-то нейрона из inferior olive)
Информация о нашем условном стимуле поступает к клеткам Пуркинье через параллельные волокна (это те, которых тысячи), а о срабатывании безусловного рефлекса — через вьющееся волокно. Само обучение, если померить его электродом, вставленным в клетку Пуркинье, выглядит так:
На рисунке показано, как отвечает на условный стимул еще не обученная клетка Пуркинье (выше), и обученная (ниже). Горизонтальная черта — это предъявление условного стимула, а длина черты — это интервал времени (ISI) между условным (CS) и безусловным (US) стимулом, который использовался при обучении.
Можно предположить, что клетка научилась узнавать наш условный стимул во входном потоке контекста и в ответ на это снимать постоянное угнетение с нейронов, запускающих моргание. На время, конечно. Четко определенное время. При этом вьющееся волокно, возможно, поставляет ей что-то вроде обучающих сигналов.[9].
Стоит заметить, что в других частях мозга не обнаружено столь же ярких кандидатов на обучение с учителем (supervised learning), Предполагается, что кора обучается без учителя (unsupervised learning), а базальная ганглия — с подкреплением (reinforcement).
Заключение
Тот же STDP на первый взгляд может показаться цельным алгоритмом обучения для сетей из спайковых нейронов. Но в реальности сейчас пока нет эффективно обучающихся искусственных спайковых моделей. То есть, что-то они могут — например, выдать 95% на бенчмарке MNIST —, но более нетривиальные задачи на них еще не очень.
Куда больший прогресс в последние годы произошел в таких сетях, где спайки отсутствуют как класс. Алгоритмы обучения там основаны на градиентном спуске по поверхности ошибки, где ошибка есть функция весов синапсов. Работа с аспектом времени достигается за счет обратных связей в топологии. В эти сети успешно внедряется внимание и подкрепление. На фоне этого всего спайковые модели пока выглядят «бедно».
Какой из этого вывод? Сложно сказать однозначно. Возможно, нас еще ждут прорывы в спайковых сетях: недаром же мозг состоит из спайковых нейронов. А возможно, текущим спайковым моделям просто не хватает вычислительной мощности нашего железа, чтоб «показать себя». Наконец, возможно, спайки это низкоуровневая особенность био-железа, поверх которого мозг реализует все тот же градиентный спуск по ошибке в каком-то виде. Впрочем, в текущую рабочую гипотезу нейробиологии это не входит за отсутствием оснований.