image

Привет, Geektimes! Хочу представить свои наработки в исследовании в области искусственного интеллекта.

Я с юности мечтал о возможности создания искусственного интеллекта. Еще в школьные годы я прочитал фантастическое произведение «Черный Яша» Зиновия Юрьева, в котором главный герой создал прибор сравнимый по сложности с человеческим мозгом, представляющий собой черный ящик, наполненный множеством связанных между собой элементов — нейристоров, обучал его как ребенка, обрушив на него лавину информации. После чего, прибор превратился в разумное существо, личность, которую назвали Яша. Я задумался, над тем, как должны функционировать нейристоры. Ответ я искал в нейробиологии и физиологии нервной системы. Изучение книг на данную тему дало мне хорошее представление о биологическом нейроне, а работы И.П. Павлова сформировали во мне убеждение о том, что любое проявление сколь угодно сложного поведения живых существ, проявление условных и безусловных рефлексов. Тогда и появились первые, наивные гипотезы о принципах работы биологического нейрона и попытки систематического описания этих принципов. О том, что существуют искусственные нейронные сети, я не имел представления, в то время интернет был редкость.

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

Модель нейрона в основе классических искусственных сетей обычно представлялась, как клетка с множеством входов – дендритов и с одним выходом – аксоном. Клетка анализировала сигналы, поступающие с входов, и подобно функции выдавала результат, который передавался следующим нейронам. На самом деле нейрон с аксоном лишь частный случай в нервной системе, большинство нейронов в мозгу человека не имеет аксона. Нейрон принимает сигналы практически всей поверхностью мембраны, специальными рецепторами. После чего, передает сигналы по дендритам через синапсы к другим клеткам, причем, синапсы клетки имеют различную силу, их сила определяется независимо друг от друга. У биологического нейрона много входов и множество независимо определяемых выходов. Получалось что, в математическом нейроне анализируются и подсчитываются коэффициенты весов входных сигналов, а в биологическом нейроне происходит анализ силы выходных.

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

Я долгое время не обращался к этой теме, но продолжал интересоваться и изучать книги и статьи по нейробиологии и психологии. Примерно два года назад, я занялся изучением игрового движка Unity3D, меня он интересовал именно, как игровой движок. Создав пару игровых приложений на нем, я понял, что Unity3D лучше всего подходит для отработки идей. Здесь и рабочее трехмерное пространство, и удобство в программировании, и свобода в организации структуры объектов. Я поставил себе задачу сделать простую модель, демонстрирующую элементарные принцы работы нейрона и нервной системы, основанную на своих предположениях.
Уже через некоторое время работы над моделью, меня ждало первое разочарование. Модель представляла собой некоторое подобие клеточного автомата, связанных между собой элементов. Созданная сеть нейронов, примерно 450 клеток, расположенных в трёхмерном пространстве, в кубическую сетку, работала не в соответствии с моими представлениями. Попытки откорректировать её работу были безуспешными.
Расположение в трехмерном пространстве, является очень важным аспектом для системы, так как для анализа и определения силы своих выходов, в нейроне принимается в расчет его местоположение относительно других активных клеток.

image
Первая неудачная архитектура нейронной сети

Посчитав, что причиной моих неудач может служить предопределённость в количестве нейронов и количестве связей имеющихся у нейрона. Было принято решение создавать нейроны динамически. Дело в том, что существует принцип последовательной передачи возбуждения от нейрона к нейрону, каждый рефлекторный акт можно представить, как цепочку последовательных передач нервного сигнала. Некоторые нейроны могли быть не задействованы ни в одном рефлекторном акте, при этом использовать ресурсы компьютера и мешать обзору при изучении сети.
При динамическом создании нейронов, можно сказать, что рабочая область программы представляет собой пространство, заполненное гипотетическими нейронами, которые будут активированы при необходимости. Программа создает нейроны там, где они необходимы с определёнными ограничениями, имитирующими предварительную наполненность пространства клетками.

Однако, после внесённых модификаций процесс работы с моделью, представлял собой поиски, круговорот из гипотез и их проверок. Я вносил изменения в скрипт нейрона, наблюдал за поведением системы, которая вела себя не в соответствии с моими ожиданиями, что заставляло меня строить новые гипотезы и опять вносить правки в программу. Данная работа заставила меня переоценить важность некоторых аспектов в биологии нейрона, которые ранее для меня казались незначащими. К примеру, пришлось учитывать изменение отрицательного следового потенциала, добавлять усталость нейронов и тормозящие клетки.
В результате я получил результат, который ставил перед собой изначально. Программа, которая может продемонстрировать, как происходит ассоциативное обучение в нервных тканях, формирование новых рефлекторных дуг, подобно тому, как это происходит в мозгу собаки в экспериментах И.П. Павлова.
В сравнении с классическими нейронными сетями, которые с меньшим количеством элементов могут распознавать лица, рисовать картины и сочинять музыку, функционально моя нейронная сеть практически бесполезна. Однако, для меня большее значение имеет потенциал, заложенный в ней.

В системе существуют двенадцать входов, представляющие собой рецепторы-кнопки, это кнопки клавиатуры, которым соответствуют индикаторы обозначенные буквами и двенадцать выходов, которые представляют собой индикаторы активности определённых клеток. Программа позволяет редактировать сеть: создавать нейроны, настраивать их синапсы (связи), настраивать входы и выходы.
Изначально создаются безусловные рефлексы, на базе которых происходит обучение. Человек рождается с уже готовым набором безусловных рефлексов, которые старательно подготовила и подобрала эволюция. Этот набор рефлексов и предопределяет вариативность нашего обучения.



На видео можно увидеть как два простых индифферентных рефлекса состоящих из одного рецепторного и одного моторного нейрона, после нескольких совместных повторений становятся ассоциативно связанными. Происходит формирование «перемычки» между ними.
Я пока не описываю деталей касательно принципов работы системы и нейронов, потому что работа над теоретической основой еще ведется, и не хотелось бы выкладывать сырые теории.

Это только начало пути, еще предстоит множество работы. Сейчас я планирую работу над новой версией программы, которая позволит мне разобраться в некоторых деталях, касательно торможения в нервной системе. Планирую расширить возможности входных сигналов, более развернутую и разнообразную систему чувств, а так же учесть специфические химические информационные сигналы, которые позволят смоделировать подобие эмоций.

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

P.S.
Исследования в области искусственного интеллекта, как и написание статей на эту тему не является основным видом моей деятельности, поэтому не судите строго. Буду благодарен любому содействию в работе, помощи, совету, напутствию. Ваше мнение и конструктивная критика для меня очень важны.

Комментарии (12)


  1. slovak
    13.08.2015 22:20
    +1

    Красота то какая!
    Жду с нетерпением следующую статью!


  1. grekmipt
    14.08.2015 01:34
    +1

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

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


    Т.е. по сути любой нейрон это универсальный автоматический коррелятор всего со всем (при этом «всё» — это активность других нейронов которые попадают в «радиус действия» нейрона, т.е. в физическую область контакта нейрона с его окружением). При этом построение таких корреляций (или ассоциаций что то же самое) очень гибкое/легко перенастраиваемое. На это указывает масса экспериментального материала — типа того как человек за месяц привыкает видеть перевернутое вверх ногами изображение как «нормальное» если постоянно носит такие очки, а сняв их — видит перевернутое изображение и снова требуется месяц на перенастройку связей чтобы вернуться к исходному восприятию…
    Однако, хочу обратить Ваше внимание, что просто механизм корреляции (сколько угодно мощный/устойчивый) — этого совершенно недостаточно для самообучения. Изложу свои выводы, к к которым пришел занимаясь этим вопросом, вдруг пригодится…

    Если у организма есть сенсоры, то как бы ни был прост/сложен сенсор и/или организм, в окружающем его мире найдется бесконечное множество взаимосвязей. Иначе говоря, поток входящей информации просто в силу своей кошмарной вариативности — будет заведомо содержать в себе немыслимое кол-во зависимостей разного уровня сложности/масштаба/четкости. Строить корреляции всего со всем — это значит просто забивать пространство (которое в случае биологического объекта ограничено размерами «черепной коробки», а в случае компа — оперативкой) совершенно ненужными (т.е. не важными для функционирования объекта) зависимостями. Т.е. даже если корреляция сильная/устойчивая, совершенно не обязательно что знание этой зависимости что-либо изменит в существовании (а значит и поведении) организма. Таким образом, очевидно приходим к необходимости какого-то фильтра, который позволит организму «делать вывод» (на уровне отдельного нейрона), в каких потоках информации следует искать ассоциации (т.е. корреляции активностей отдельных нейронов) а в каких — не искать. В качестве такого фильтра эволюция предложила красивое решение. Что значимо для организма — то вызывает безусловную реакцию-рефлекс «мне хорошо», либо такую же безусловную реакцию «мне плохо». Ну там, съел что-то нажористое — внутри зазвенел звоночек «ммм… хорошо!», а кусанул меня слепень — внутри звоночек противоположного знака «чета фигова ваще». Понятно что чем сложнее организм тем богаче и сложнее устроены его хардварные внутренние хорошо-плохо (и они уже выстраиваются в иерархию приоритетов), но важно что они безусловные — т.е. жестко прошиты в виде такой внутренней реакции на определенные так же жестко прошитые внешние стимулы. И именно это вот хардварное ядро «мне хорошо/мне фигово» и является инструментом, позволяющим отдельным нейронам фильтровать общий поток информации направленно, а не хаотически. Т.е. как только статус этого ядра меняется — это и есть момент во времени, в который ценность устанавливаемых нейронами ассоцаций велика. А когда статус этого ядра неизменен — то с точки базовых внутренних «ценностей» организма во внешнем мире ничего значимого не происходит вообще, а значит и незачем пытаться запоминать/анализировать ассоциации, они просто не значимы для организма. Таким образом, если Вы хотите чтобы система действительно самообучалась не просто в смысле поиск корреляций (что можно делать намного проще чем нейросетевой структурой), но в смысле выстраивания своего поведения (т.е. взаимодействия с окружающим миром) сообразно структуре этого мира (который фильтруется организмом именно через призму его хардварных понятий хорошо-плохо), то без такого вот блока «внутреннего статуса» принципиально не обойтись — иначе просто забьете всю оперативу найденными зависимостями, значимыми из которых — будет мизерный %, и всё потонет в этом потоке ненужной сложности внешнего мира. Фильтр необходим — и он есть у живых нейронных сетей как раз в виде таких вот эмоций. А критерий «акцента внимание» на момент времени — это по сути градиент (во времени) внутреннего статуса, чем он выше тем активнее надо ассоциации строить. Ну а принцип ассоциации Вы предположили (если я верно понял видео) совершенно верный — нейрон по сути постоянно «щупает» активности окружающих его соседних нейронов, и дальше ищется простая корреляция (его срабатывания со срабатыванием соседа).

    Второе замечание. В искусственных нейросетях сложилось совершенно на мой взгляд кривое представление о функции нейрона как о структуре имеющей специфическую реакцию на вполне определенный входной паттерн. Об этом вроде-бы говорили многочисленные эксперименты, типа того как в мозгу обезьяны находили нейрон отвечающий на появление в поле зрения обезъяны определенного объекта (например лица человека, или банана, или конкретно «мистера Джека» который чаще других работал с данной особью). Или нейроны реагирующие только на углы (только на прямые линии/точки/градиент) в зрительной коре человека. Из этого делается вывод что вот дескать, нейрон выделяет определенный паттерн из входящей информаци. На мой взгляд, тут просто спутали причину и следствие. Об этом очень хорошо и подробно пишет А. Н. Радченко (книги «Молекулярные механизмы памяти», «Информационные механизмы нейронной памяти и модели амнезий» и т.п. — крайне рекомендую зачитать этого товарища, у него громадное кол-во информации изложено в очень красиво обобщенном виде с глубокими выводами). Штука в том, что практически любой нейрон на самом деле реагирует на громадное кол-во стимулов, и более того изначально его активность близка к просто шумовой. Однако эти стимулы лежат очень далеко друг от друга. Образно говоря, конкретный нейрон реагирует на «мистера Джека» в поле зрения, на шум включения вентилятора, на запах молока, и еще на что-нить такое-же совершенно далекое от уже перечисленного. Так что действительно в рамках узкого эксперимента можно прийти к вроде-бы корректному выводу что вот этот нейрон реагирует именно на «мистера Джека»… А он реагирует еще на тыщу стимулов — но просто все они так далеки от условий эксперимента, что ни разу не появляются в рецептивном поле нейрона в ходе эксперимента. Т.е. если Вы хотите построить действительно мощную систему, то стоит воспользоваться этим решением природы — принципиально отказаться от попыток специализации нейрона, и переходить к уровню «радиуса чувствительности» нейрона — так чтобы он реагировал на определенную (и очень большую при этом, как это показал Радченко в своих работах) область многомерного пространства своих входов, с множественным пересечением «области реакции» нейрона с «областями реакции» других нейронов (речь про области в многомерном входном пространстве нейронов разумеется). За счет такой неспецифичности реакций нейронов достигается масса плюшек — распараллеленность работы, «голографичность» информации записанной в нейросетевой системе, устойчивость, многократное резервирование и т.п.

    Ну и третье. Конечно, не стоит отбрасывать тот простой факт что биологические нейронные системы имеют определенную физическую иерархию (в смысле взаимного расположения в реальном пространстве). Иерархия слоев нейронов на самом деле отражает иерархию объектов внешнего мира (через иерархию их фильтров в виде внутренного хорошо-плохо, что и позволяет «раскрасить» поток внешней информации на значимый для организма сущности). На эту тему очень хорошо пишет Сандра Блейксли и Джефф Хокинс в их книге «Об интеллекте» — причем они не только пишут книги, но и разрабатывают альтернативную нейросетевую структуру на базе своих работ. Крайне рекомендую прочитать, так же очень много хороших о


    1. pavel_kudinov
      14.08.2015 12:58

      «Голографичность» кодирования информации — это следующая ступень развития, позволяющая упаковать максимум информации в разреженных представлениях.

      Я думаю, начинать с этой концепции плохо, и вот почему:

      Экспериментируя с тем же HTM Джеффа Хокинса (мы перевели модель на GPU и пытались добиться проявления поведенческих паттернов, т.е. животного уровня самоосознания — с тем чтобы применить HTM для контроля виртуальных персонажей), мы пришли к выводу, что «голографичность» крайне усложняет постановку сложных экспериментов, когда автоассоциативную темпорально-пространственную иерархическую модель пытаешься заставить решать какие-то задачи (скажем, смоделировать центр удовольствия).

      Хорошим вариантом видится реализация идей, изложенных в книге «об интеллекте», сначала в представлении, где каждый нейрон и контексты имеют одиночные специализированные представления (конечно, это приведёт к снижению производительности и большому потреблению памяти, но сеть станет более прозрачной для исследователя), а затем, когда сеть начнёт проявлять необходимые свойства — произвести что-то вроде её «голографической свёртки», заменив специализированные нейроны на разреженные голографические представления. Это, конечно, не факт что будет легко и всегда возможно, но HTM (и, я думаю, другие сети с разреженным представлением данных) слишком чёрный ящик для экспериментов, особенно любительских.

      p.s. насколько я помню, после написания книги «Об интеллекте», Джефф Хокинс реализовал именно сеть без разреженного кодирования информации, но столкнулся с колоссальными объёмами оперативной памяти, необходимой для реализации его концепций — и это, как я понимаю, стало толчком к созданию HTM)

      en.wikipedia.org/wiki/Hierarchical_temporal_memory


    1. aigame
      14.08.2015 15:39

      Спасибо за столь развернутый и подробный комментарий, Вы действительно во многом правы. Постараюсь ответить на всё.
      Действительно, в корреляции всего со всем нет никакого смысла и этого не происходит ни в природе, ни в модели. Нейрон не связывает, он скорее определяет предпочитаемое направление передачи возбуждения, причем существуют некоторые ограничения в выборе этого направления. Формируются так скажем пути передачи возбуждения, которые могут уточнятся, меняться, забываться, конкурировать между собой и влиять друг на друга, в условиях ограниченного пространства и ограниченных ресурсов нейронов.
      Конечно создание «чистого» разума невозможно. Без внутренних целей и мотиваций ничто не способно мыслить и обучаться. Я конечно планирую в бушующих моделях учитывать эмоции. К примеру, эмоцию новизны, которая отвечает за любопытство и желание получать новые знание, на удивление эту эмоцию можно легко эмулировать в концепции моей модели. Так же, планирую реализовать, модную в ранних работах по искусственным нейронным сетям, концепцию двух кнопок «поощрение» и «наказание».
      Даже в при пассивном рассмотрении изображений, когда происходит угадывание мозгом знакомых образов происходит выброс небольшого количества дофамина, создавая чувство небольшого удовольствия. Поэтому тема эмоционального подкрепления обучения, будет присутствовать в дальнейших работах.
      В моей модели, нейрон при его активации, анализирует паттерн всей системы, уникальную комбинацию всех активных нейронов с учетом их фаз в системе, и потом определяет как распределить выходные веса. Причем, оценка паттерна происходит с позиции самого нейрона. Самый простой результат такой работы нейрона направить возбуждение в направлении другого активного участка. Если бы, одновременно были активны множество других участков на некотором расстоянии друг от друга, картина была бы иная, нейроны бы вбирали другу точку в пространстве системы куда направить возбуждение. Этим можно объяснить наличие в гипокампе так называемой когнитивной карты, или зеркальных нейронов. Один нейрон обрабатывает очень много информации, и делает это весьма элегантно и просто.
      Иерархия в нервной системе действительно существует и очень распространена. Особенно она выражена в безусловных рефлексах, а так же в нервных системах у животных таких как, моллюски, черви и т.д. иерархия в их нервной системе строго определена и изучена. Но с эволюционным развитием в нервной системе все больше увеличивается вариативность. Успех заключается в объединении этих двух аспектов. Вариативность на уровне коры больших полушарий, строгая иерархия на уровне древнего мозга.
      Спасибо за указанные материалы и книги, я обязательно их изучу.


  1. pavel_kudinov
    14.08.2015 12:46

    Спасибо, очень круто!

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

    существует похожая opensource разработка N.A.R.S., рекомендую познакомиться как минимум с визуалом. NARS тестируется на задачах эвристической имитации поведения игровыми персонажами в играх уровня 8 битных приставок (понять правила игры и успешно её проходить, хороший тест для «действующего» ИИ)

    youtu.be/pdaUNX7iKlQ?t=6m10s

    github.com/opennars/opennars/wiki
    sites.google.com/site/narswang/home


    1. aigame
      14.08.2015 15:54

      Природа очень мудра, поэтому существуют два вида изменений в синапсах: быстрый и медленный. В синапсах есть вариативность в их силы, определяемое количеством выделяемых порций нейромедиатора. А также большинство синапсов/дендритов выращены на «прозапас», и некоторые исследователи фиксировали использование лишь 14% синапсов нейроном. Дальше, если потребуется, синапсы будут выращены примерно за 0,5 — 2 часа.
      Спасибо за ссылки, хотя проекты очень различны. Мне в работе еще далеко до игры модели в консоль, сначала нужно научить видеть и различать образы.


  1. Odessamarin
    14.08.2015 13:38

    Думаю вам будет интересно как ведет себя живой нейрон.
    Вот что происходит с дентритом / синапсом за 23 мин.



    Источник


    1. aigame
      14.08.2015 16:12

      Спасибо, подобные видео вдохновляют


  1. dtestyk
    14.08.2015 21:04

    Есть неплохая серия статей на хабре, в которой описана интересная теория работы мозга: Логика мышления

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

    И еще вопрос: чем у вас входы от выходов отличаются, ведь для образования ассоциативной связи требуется активность обоих?


    1. aigame
      15.08.2015 05:48

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

      В приме существуют два рефлекса, первый: рецептор, или рецепторный нейрон Q связан с моторным нейроном «1», второй: W > 2. Только при активации обоих в короткий промежуток времени происходит их объединение, причем если я воздействую на рецептор Q сначала потом на W, то эта последовательность запоминается и в дальнейшем при активации Q происходит ответ 1, потом 2, но не как не оборот. Хотя если повторять, потом, наоборот, запомнятся обе последовательности.

      Спасибо, за ссылку на статью. Я начал работу над подобной, но опишу используемую здесь модель нейрона.


      1. dtestyk
        18.08.2015 19:15

        к сожалению, уже закончился интересный курс Computational Neuroscience, но возможно он будет еще повторятся
        главная особенность в том, что в нем был описан плавный переход от естественных сетей к искусственным


  1. aigame
    16.08.2015 06:36

    Хронология разроботки