Этот пост написан по мотивам лекции Джеймса Смита, профессора Висконсинского университета в Мадисоне, специализирующегося в микроэлектронике и архитектуре вычислительных машин.
История компьютерных наук в целом сводится к тому, что учёные пытаются понять, как работает человеческий мозг, и воссоздать нечто аналогичное по своим возможностям. Как именно учёные его исследуют? Представим, что в XXI веке на Землю прилетают инопланетяне, никогда не видевшие привычных нам компьютеров, и пытаются исследовать устройство такого компьютера. Скорее всего, они начнут с измерения напряжений на проводниках, и обнаружат, что данные передаются в двоичном виде: точное значение напряжения не важно, важно только его наличие либо отсутствие. Затем, возможно, они поймут, что все электронные схемы составлены из одинаковых «логических вентилей», у которых есть вход и выход, и сигнал внутри схемы всегда передаётся в одном направлении. Если инопланетяне достаточно сообразительные, то они смогут разобраться, как работают комбинационные схемы — одних их достаточно, чтобы построить сравнительно сложные вычислительные устройства. Может быть, инопланетяне разгадают роль тактового сигнала и обратной связи; но вряд ли они смогут, изучая современный процессор, распознать в нём фон-неймановскую архитектуру с общей памятью, счётчиком команд, набором регистров и т.п. Дело в том, что по итогам сорока лет погони за производительностью в процессорах появилась целая иерархия «памятей» с хитроумными протоколами синхронизации между ними; несколько параллельных конвейеров, снабжённых предсказателями переходов, так что понятие «счётчика команд» фактически теряет смысл; с каждой командой связано собственное содержимое регистров, и т.д. Для реализации микропроцессора достаточно нескольких тысяч транзисторов; чтобы его производительность достигла привычного нам уровня, требуются сотни миллионов. Смысл этого примера в том, что для ответа на вопрос «как работает компьютер?» не нужно разбираться в работе сотен миллионов транзисторов: они лишь заслоняют собой простую идею, лежащую в основе архитектуры наших ЭВМ.
Моделирование нейронов
Кора человеческого мозга состоит из порядка ста миллиардов нейронов. Исторически сложилось так, что учёные, исследующие работу мозга, пытались охватить своей теорией всю эту колоссальную конструкцию. Строение мозга описано иерархически: кора состоит из долей, доли — из «гиперколонок», те — из «миниколонок»… Миниколонка состоит из примерно сотни отдельных нейронов.
По аналогии с устройством компьютера, абсолютное большинство этих нейронов нужны для скорости и эффективности работы, для устойчивости ко сбоям, и т.п.; но основные принципы устройства мозга так же невозможно обнаружить при помощи микроскопа, как невозможно обнаружить счётчик команд, рассматривая под микроскопом микропроцессор. Поэтому более плодотворный подход — попытаться понять устройство мозга на самом низком уровне, на уровне отдельных нейронов и их колонок; и затем, опираясь на их свойства — попытаться предположить, как мог бы работать мозг целиком. Примерно так пришельцы, поняв работу логических вентилей, могли бы со временем составить из них простейший процессор, — и убедиться, что он эквивалентен по своим способностям настоящим процессорам, даже хотя те намного сложнее и мощнее.
На рисунке, приведённом чуть выше, тело нейрона (слева) — небольшое красное пятнышко в нижней части; всё остальное — дендриты, «входы» нейрона, и один аксон, «выход». Разноцветные точки вдоль дендритов — это синапсы, которыми нейрон соединён с аксонами других нейронов. Работа нейронов описывается очень просто: когда на аксоне возникает «всплеск» напряжения выше порогового уровня (типичная длительность всплеска 1мс, уровень 100мВ), то синапс «пробивается», и всплеск напряжения переходит на дендрит. При этом всплеск «сглаживается»: вначале напряжение за 5..20мс растёт до порядка 1мВ, затем экспоненциально затухает; таким образом, длительность всплеска растягивается до ~50мс.
Если несколько синапсов одного нейрона активизируются с небольшим интервалом по времени, то «разглаженные всплески», возбуждаемые в нейроне каждым из них, складываются. Наконец, если одновременно активны достаточно много синапсов, то напряжение на нейроне поднимается выше порогового уровня, и его собственный аксон «пробивает» синапсы связанных с ним нейронов.
Чем мощнее были исходные всплески, тем быстрее растут разглаженные всплески, и тем меньше будет задержка до активизации следующих нейронов.
Кроме того, бывают «тормозящие нейроны», активация которых понижает общее напряжение на связанных с ним нейронах. Таких тормозящих нейронов 15..25% от общего числа.
У каждого нейрона тысячи синапсов; но в любой момент времени активны не больше десятой части всех синапсов. Время реакции нейрона — единицы мс; такого же порядка задержки на распространение сигнала вдоль дендрита, т.е. эти задержки оказывают существенное влияние на работу нейрона. Наконец, пару соседних нейронов, как правило, связывает не один синапс, а порядка десятка — каждый с собственным расстоянием до тел обоих нейронов, а значит, с собственной длительностью задержки. На иллюстрации справа два нейрона, изображённые красным и синим, связаны шестью синапсами.
У каждого синапса своё «сопротивление», понижающее входящий сигнал (в примере выше — со 100мВ до 1мВ). Это сопротивление динамически подстраивается: если синапс активизировался сразу перед активацией аксона — то, видимо, сигнал с этого синапса хорошо коррелирует с общим выводом, так что сопротивление понижается, и сигнал будет вносить больший вклад в напряжение на нейроне. Если же синапс активизировался сразу после активации аксона — то, видимо, сигнал с этого синапса не имел отношения к активации аксона, так что сопротивление синапса повышается. Если два нейрона связаны несколькими синапсами с разной длительностью задержки, то такая подстройка сопротивлений позволяет выбрать оптимальную задержку, или оптимальную комбинацию задержек: сигнал начинает доходить именно тогда, когда от него больше всего пользы.
Таким образом, модель нейрона, принятая исследователями нейронных сетей — с единственной связью между парой нейронов и с мгновенным распространением сигнала от одного нейрона к другому — весьма далека от биологической картины. Кроме того, традиционные нейронные сети оперируют не временем отдельных всплесков, а их частотой: чем чаще всплески на входах нейрона, тем чаще будут всплески на выходе. Те детали устройства нейрона, которые отброшены в традиционной модели — существенны или несущественны они для описания работы мозга? Нейробиологи накопили огромную массу наблюдений об устройстве и поведении нейронов — но какие из этих наблюдений проливают свет на общую картину, а какие — лишь «детали реализации», и — как и предсказатель переходов в процессоре — не влияют ни на что, кроме эффективности работы? Джеймс считает, что именно временны́е характеристики взаимодействия между нейронами и позволяют приблизиться к пониманию вопроса; что асинхронность так же важна для работы мозга, как синхронность — для работы ЭВМ.
Ещё одна «деталь реализации» — ненадёжность нейрона: с некоторой вероятностью он может активизироваться спонтанно, даже если сумма напряжений на его дендритах не достигает порогового уровня. Благодаря этому, «обучение» колонки нейронов можно начинать с любого достаточно большого сопротивления на всех синапсах: вначале никакая комбинация активаций синапсов не будет приводить к активации аксона; затем спонтанные всплески приведут к тому, что понизится сопротивление синапсов, которые активизировались незадолго до этих спонтанных всплесков. Таким образом нейрон начнёт распознавать конкретные «паттерны» входных всплесков. Что самое важное, паттерны, похожие на те, на которых нейрон обучался, — тоже будут распознаваться, но всплеск на аксоне будет тем слабее и/или позднее, чем меньше нейрон «уверен» в результате. Обучение колонки нейронов получается намного эффективнее, чем обучение обычной нейронной сети: колонке нейронов не нужен контрольный ответ для тех образцов, на которых она обучается — фактически, она не распознаёт, а классифицирует входные паттерны. Кроме того, обучение колонки нейронов локализовано — изменение сопротивления синапса зависит от поведения лишь двух соединённых им нейронов, и никаких других. В результате этого, обучение приводит к изменению сопротивлений вдоль пути следования сигнала, тогда как при обучении нейронной сети веса изменяются в обратном направлении: от нейронов, ближайших к выходу — к нейронам, ближайшим ко входу.
Например, вот колонка нейронов, обученная распознавать паттерн всплесков (8,6,1,6,3,2,5) — значения обозначают время всплеска на каждом из входов. В результате обучения, задержки настроились на точное соответствие распознаваемому паттерну, так что напряжение на аксоне, вызываемое правильным паттерном, получается максимально возможным (7):
Та же самая колонка отреагирует на похожий входной паттерн (8,5,2,6,3,3,4) меньшим всплеском (6), причём напряжение достигает порогового уровня заметно позднее:
Наконец, тормозящие нейроны могут использоваться для реализации «обратной связи»: например, как на иллюстрации справа, — подавлять повторные всплески на выходе, когда вход длительное время остаётся активным; или подавлять всплеск на выходе, если он слишком задерживается по сравнению со входными сигналами, — чтобы сделать классификатор более «категоричным»; или, в нейросхеме для распознавания паттернов, разные колонки-классификаторы могут быть связаны тормозящими нейронами, чтобы активация одного классификатора автоматически подавляла все остальные классификаторы.
Распознавание изображений
Для распознавания рукописных цифер из базы MNIST (28x28 пикселей в оттенках серого) Джеймс из колонок-классификаторов, описанных выше, собрал аналог пятислойной «свёрточной нейросети». Каждая из 64 колонок в первом слое обрабатывает фрагмент 5х5 пикселей из исходного изображения; такие фрагменты перекрываются. Колонки второго слоя обрабатывают по четыре выхода из первого слоя каждая, что соответствует фрагменту 8х8 пикселей из исходного изображения. В третьем слое всего четыре колонки — каждой соответствует фрагмент из 16х16 пикселей. Четвёртый слой — итоговый классификатор — разбивает все изображения на 16 классов: класс назначается в соответствии с тем, который из нейронов активизируется первым. Наконец, пятый слой — классический перцептрон, соотносящий 16 классов с 10 контрольными ответами.
Классические нейросети достигают на базе MNIST точности 99.5% и даже выше; но по утверждению Джеймса, его «гиперколонка» обучается за гораздо меньшее число итераций, благодаря тому, что изменения распространяются вдоль пути следования сигнала, а значит, затрагивают меньшее число нейронов. Как и для классической нейросети, разработчик «гиперколонки» определяет только конфигурацию соединений между нейронами, а все количественные характеристики гиперколонки — т.е. сопротивление синапсов с разными задержками — приобретаются автоматически в процессе обучения. Кроме того, для работы гиперколонки требуется на порядок меньшее число нейронов, чем для аналогичной по возможностям нейросети. С другой стороны, симуляция таких «аналоговых нейросхем» на электронном компьютере несколько затрудняется тем, что в отличие от цифровых схем, работающих с дискретными сигналами и с дискретными интервалами времени — для работы нейросхем важны непрерывность изменения напряжений и асинхронность нейронов. Джеймс утверждает, что шага симуляции в 0.1мс достаточно для корректной работы его распознавателя; но он не уточнял, сколько «реального времени» занимает обучение и работа классической нейросети, и сколько — обучение и работа его симулятора. Сам он давно на пенсии, и свободное время он посвящает совершенствованию своих аналоговых нейросхем.
Резюме от tyomitch: представлена модель, основанная на биологических предпосылках, достаточно просто устроенная, и при этом обладающая интересными свойствами, радикально отличающими её от привычных цифровых схем и от нейросетей. Возможно, такие «аналоговые нейроны» станут элементной базой будущих устройств, которые смогут справляться с рядом задач — например, с распознованием образов — не хуже человеческого мозга; точно так же, как цифровые схемы давно превзошли человеческий мозг в способности к счёту.