Эмоции в нейросетях

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

    1. Современные сети не обладают одновременной стабильностью и пластичностью, то есть процесс корректной работы сети не совместим с её обучением. Современные сети, обучаясь новому, успешно забывают старое, поэтому для работы используется неизменяемый слепок нейросети после обучения, которым никак управлять не надо.

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

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

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

    Но после первой встречи с таким автоматом вы поймёте, что он полный аутист, пофигист и окружающий мир ему глубоко безразличен. А нам все же нужно, что бы он смог тоже, что и до того как мы выкинули наше вложенное решение. Я упустил одну важную вещь, забыл поставить перед системой условие решения нашей задачи. Системе нужно дать понять, когда ее действия удовлетворяют условиям решения нашей задачи и наоборот. Центральным словом здесь является слово «понять», причем именно нейросеть должна «понять», что мы от неё хотим. Ничего особенного здесь выдумывать не нужно, всего лишь примитивно повторить уже существующий, и да, заранее заложенный в нас «язык эмоций». Я сейчас особо не буду распространяться про единственный общий «язык эмоций». Скажу только, что все мы не только чувствуем эмоции, но и одинаково реагируем на них, показывая языком тела, что мы чувствуем. То, что мы будем использовать – метод кнута и пряника, ведь он работает даже с простейшими животными, подразумевает наличие эмоциональных чувств приятного и неприятного (боли). Мы же наделены большим набором эмоций, чем эти чувства, но такого набора вполне достаточно для модели амебы и нашей задачи. Добавлением датчиков поворота к цели, движения к цели и наоборот, а также добавляя эмоциональную окраску к ним, мы объясняем задачу и мотивируем нейросеть решить нашу задачу.

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

    Далее собственно описание устройства нейронов, датчиков и нейросети в целом, коротко, но довольно сложно из-за отсутствия объяснений, почему так. К прочтению не обязательно. Можно прочитать выводы.

    Устройство сети


    Основные свойства модели нейронов, которые я использую.
    • Выдача результата нейроном задерживается на один такт работы сети. Основное преимущество — это возможность соединять нейроны вообще как угодно, потому что это не приносит ошибок в логику сети, сначала вычисляются все значения всех нейронов, а потом обновляются их выходы.
    • Я использую только два значения на выходе нейронов «0» и «1».
    • Выход нейрона может образовать «негативный» и «позитивный» синапс, так же этот синапс может менять свое состояние с «позитивного» на «негативный» и наоборот.
    • Функция активации вычисляется как разница активных позитивных и негативных входов. Если разница положительная, результат «1», если нет, то «0».
    • Синапс стремится стать «позитивным» если результат функции активации равен «1», и «негативным»только если сейчас результат «0», а предыдущий результат был «1».
    • Нейроны ограничены зоной установления связей, так что начинает играть роль топология сети.

    Нейроны в моей сети делятся на несколько типов
    • Датчики. Обычные датчики представленные в сети только выходами.
    • Эффекторы. Моторные нейроны, выходы управляют мускулами, а в сети представлены только входами.
    • Эмоциональные датчики. Тоже что и обычные датчики, но устанавливают неизменяемые связи, только позитивного или негативного характера в зависимости от типа датчика и не могут поменять состояние этих связей.
    • Обычные. Я описывал их в первой моей статье. В задаче думать не надо, она решается на уровне как бы «условных рефлексов», поэтому здесь я их не использую.

    Сеть представляет собой двухмерное пространство, в котором задается положение нейронов координатами, из-за ограниченного радиуса ответственности связи устанавливаются только между близкорасположенными нейронами. В самом начале между нейронами связей нет вообще. Эффекторы произвольно активируются пока не установятся первые связи. Связи устанавливаются тем быстрее, чем ближе и чаще нейроны одновременно активны (правило Хебба). В финале топология выглядит так.

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

    Выводы


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

    Рис 2. Путь амебы.
    Она разворачивается и ползет к цели.

    Рис 3. Скриншот.
    А так это выглядит с отключенной трассировкой.
    Share post

    Similar posts

    Comments 35

      +2
      интересная статья, спасибо. каким софтом пользуетесь для эмуляции?
        +8
        На вашем примере мне не очень понятно зачем же мастерить нейронную сеть, если суть сводится к наличию в системе отрицательной обратной связи.

        В том плане, что если взять самую примитивную линейную систему, она также решит эту задачу благодаря ООС.
          +1
          Решит разумеется и в простейших случаях куда круче, но линейная система не адаптивна, да и расчитывать её вручную нада, а тут взял нейросеть и она сама настроится как надо.
            +2
            Я просто не могу понять в чём же фокус/польза/отличие=)…

            Я так понимаю, Вы запихнули учителя прям в нейросеть (датчик боли и не боли говорят что правильно. а что нет)… при этом учитель стал как бы менее строг, и его решения более расплывчатые, а не просто «правильно», «не правильно»… наверное, соль в этом=)

            Осталось понять какая от этого польза… например, при распознавании изображений.
            Отличие будет в том, что если мне подсунули такую нейросеть… и я смогу её доучить, если она ошибётся? Просто вроде распознавалка лиц гугла тоже дообучивается… или я что-то упустил?

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

                Я вот про что: с моей точки зрения, Вам удалось запихать учителя в систему, тем самым получив самообучение, только из-за того, что критерии «хорошо», «плохо» в Вашем примере можно получить очень просто: у вас есть правильное направление, отклонятся от него плохо (простая ООС). Благодаря простоте критерия «хорошо»/«плохо» Вы его реализовали прям в сети. Тем самым в ней с самого начала содержатся требуемые знания.

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

                И ещё интересно, я тут всё про ООС… датчик приятного сильно нужен? С точки зрения ТАУ без него по идее всё должно работать…
                Как написал чуть ниже Artima, было бы любопытно взглянуть на трассировки с одним датчиком.
                  0
                  без датчика приятного он не прийдет к цели.
            0
            сама найдет решение?
            +2
            Интересная статья. Было бы любопытно почитать продолжение, если вы будете делать что-то более сложное, чтобы была какое-то развитие сети, а то и взаимодействие нескольких эмоциональных сетей.
              +1
              А можно посмотреть на трассировку при отключенном кнуте (т.е. только с пряником)?
                0
                смотря как его сориентировать в начале, если отвернут от цели будет стоять, если повернуть устремится к ней
                0
                Кроме вариантов машинного обучения «с учителем» и «без учителя» есть еще третий вариант, о котором часто забывают, «обучение с подкреплением». Собственно этот вариант Вы и реализовали.
                  0
                  Обучение с подкреплением действительно является отдельной категорией, но по сути вопроса обучения мало чем отличается от обучения с учителем, так как во всех реализациях обучения с подкреплением при взаимодействии со средой изначально должны задаваться ценности/полезность некоторых абстрактных состояний среды. Таким образом, в любом случае вводится некоторый внешний контроллер (помимо агента и среды), который назначает эти значения. Конечно, можно сослаться на вышедшую в этом году статью Сингха и Льюиса «Where do rewards come from?», в которой они пытаются применить эволюционный алгоритм для генерации этих значений, однако ничего путного по сути там так и не вышло.

                  При этом безусловно автор реализовал именно обучение с подкреплением.
                    0
                    Соглашусь, что порой довольно сложно отличить категорию «обучение с подкреплением» от «обучение с учителем». Но не соглашусь с необходимостью наличия внешнего контроллера, поощряющего или наказывающего обучаемого агента. Если мне холодно или больно, то это моя внутренняя реакция, а не сообщения от внешнего агента.
                    Вопрос в том, откуда агент знает, что «больно» или «холодно» это плохо? Тут может быть как минимум два варианта: врожденный (запрограммированный) или приобретенный (обучение) рефлекс.
                  +1
                  Обучение с подкреплением действительно является отдельной категорией, но по сути вопроса обучения мало чем отличается от обучения с учителем, так как во всех реализациях обучения с подкреплением при взаимодействии со средой изначально должны задаваться ценности/полезность некоторых абстрактных состояний среды. Таким образом, в любом случае вводится некоторый внешний контроллер (помимо агента и среды), который назначает эти значения. Конечно, можно сослаться на вышедшую в этом году статью Сингха и Льюиса «Where do rewards come from?», в которой они пытаются применить эволюционный алгоритм для генерации этих значений, однако ничего путного по сути там так и не вышло.

                  При этом безусловно автор реализовал именно обучение с подкреплением.
                    +1
                    Интересно посмотреть, что будет делать амёба, когда достигнет цели. Продолжит ли она двигаться «по инерции», или нейросеть переобучится практически мгновенно?
                      0
                      она будет практически дрейфовать у цели, туда сюда
                      –2
                      По поводу: «Эмоциональные датчики. Тоже что и обычные датчики, но устанавливают неизменяемые связи, только позитивного или негативного характера в зависимости от типа датчика и не могут поменять состояние этих связей.»

                      В алгебре нет разницы между положительным и отрицательным, боль советую выражать белым шумом, а насчет удовольствия я пока точно не знаю, если от обратного, то должен быть какой-то синхронизирующий всю сеть паттерн, ну и понятное дело с подкреплениями за какой-то период в прошлом
                        0
                        Не думаю, что имеет смысл так «очеловечивать» ИИ.
                        Эмоции — штука неформализуемая, также как и юмор.

                        Вы переизобрели обычные рефлексы и инстинкты.
                          0
                          Мне понравилось как Де Боно рассуждал о юморе в своей книге «Серьезное творческое мышление». Если рассмотреть юмор как неожиданный переход от одного шаблона в мышлении к другому через общую для этих двух шаблонов точку и согласиться с таким объяснением юмора, то он становится вполне формализуемым. Для наглядности приведу пример анекдота, в котором «общая точка» — слово:
                          Петька прибегает к Василию Ивановичу весь в мыле и потрепаный, заплетаясь говорит:
                          — В.А. в лесу полно белых!
                          — Да надоели эти грибы уже, мяса хочется…
                          Пересечение понятий «белая армии» и «белый гриб». Правда это всего лишь один «тип» шуток, если так можно сказать. Ну и пусть, первый шаг к формализации.
                            0
                            Попробуйте сами воспроизвести такой алгоритм, и создать новую шутку.
                            Возникнут определённые проблемы, я думаю.
                              0
                              Безусловно, в первую очередь в количестве и качестве доступных шаблонов. Кстати если взять бредогенератор, то переодически (по теории вероятностей) он как раз генерирует шутки примерно выше описанного плана.
                              Кстати из идеи попробовать может выйти что-то интересное, спасибо. Надеюсь не очередной бредогенератор.
                            0
                            с чего то надо было начинать
                            0
                            А что если сделать несколько видов поверхности, например движение по гравию — боль, движение по асфальту — всё нормально. И чувство голода, нарастание которого приводило б к боли и реализовать появление новых точек с едой, как в змейке.
                              0
                              ага, все наращивается, по немногу, пытаюсь добавить преграды, посмотрим что с ними будет делать амеба
                                0
                                «Современный сети»
                                … нные…
                                  +1
                                  Начем писал? Исходниками не поделишься? :)
                                    0
                                    срр, придет время, выкладу
                                      0
                                      я, конечно, тормоз.
                                      но на статью наткнулся только сейчас :)
                                      зато вполне можно полюбопытстсовать есть ли прогресс в создании более сложных систем (с более чем одной «эмоцией»)?
                                        0
                                        только наткнулся на комент, читай мои новые статьи)
                                          +1
                                          Статьи посмотрю, но там вроде не про эмоции.

                                          А эмоции то самое интересное какраз в комплексе, с разнонаправленными потребностями.
                                            0
                                            Ну это да. С эмоциами как бы косяк, есть только предположения.
                                            Могу для тренировки ваших извилин предложить www.niisi.ru/iont/ni/Journal/V3/N1/Vityaev.pdf
                                            объедиение теории эмоций Симонова и теории функциональных систем Анохина. Последнее рунетное.
                                              0
                                              Спасибо за ссылку! Не знал об этой работе.
                                              В очереди на прочтение пока лежит только «Cognitive structure of emotions» Ortony-Clore-Collins
                                        0
                                        Как поведет себя «амеба» оказавшись на 180' повернутым от цели?
                                          0
                                          во первых все датчики срабатывают только на перепад измеряемой велечины
                                          во вторых для амебы реализован постоянный тремор (на 3 порядка меньшие случайные перемещения чем минимальные управляемые перемещения )

                                        Only users with full accounts can post comments. Log in, please.