Эволюционный эксперимент - Часть 2. Модель организма
В данной статье опишем организм который будет участвовать в нашем эволюционном эксперименте.
Можно предварительно прочитать вступление.
Взаимодействие с внешним миром
Движение. Тут все просто - организм будет иметь возможность двигаться только в одном направлении со скоростью от нуля до максимально допустимой. В это же время у него будет возможность повернуться влево или вправо на определенный угол за единицу времени.
Другими словами, организм будет иметь два двигательных органа. Один будет отвечать за движение вперед, а второй будет отвечать за поворот. И лишь этими двумя органами будет управлять нервная система.
Зрение. Как было сказано, зрение будет единственным ощущением организма. А так как в окружении организма будет лишь пища, то и видеть ему необходимо лишь пищу.
У нашего организма будет три сенсора, каждый из которых будет отвечать за свой сектор . Т.е. центральный сенсор будет воспринимать лишь пищу которая находится прямо, а левый сенсор лишь пищу которая находится немного левее. При этом общее зрение (со всех 3х сенсоров) будет ограничено как сектором видимости (не будет видимости на 360 градусов), так и максимальным расстоянием на котором организм будет что-то различать.
Для максимального упрощения работы сенсоров, предполагается что сенсор будет реагировать только на ближайшую пищу. При этом чем ближе пища к организму, тем сильнее будет возбуждение сенсора-нейрона.
Питание. Питание тоже упростим по максимуму. Организм будет поглощать пищу, к которой он приблизился в упор. При этом он не управляет процессом поглощения пищи :) Но, тут важный фактор, что поглощение пищи должно изменять внутреннее состояние организма. Это будет аналог удовлетворения от приема пищи.
Жизненное состояние организма
Для контроля организма введем понятие "запаса сил". Это будет некая величина, которая будет уменьшаться со временем. Запас сил будет быстрее уменьшаться при интенсивном движении. А пополняться запас сил будет при приеме пищи. Важно чтобы запас сил был ограничен сверху. Ну, а если запас сил иссякает, то организм погибает.
А для того чтобы организм не смог жить вечно, кроме запаса сил будем исчислять его возраст и ограничим его. Напомню, показателем "разумности" организма будет служить длительность его жизни.
Нервная система организма
Вот мы и подобрались к самому интересному, ведь именно мутации нервной системы будут обеспечивать эволюцию.
Ощущения. Для восприятия мира нашему организму потребуется всего 4 рецептора - 3 для зрения и 1 для восприятия запаса сил.
Моторика. Мы определили что нервная система организма будет управлять всего лишь двумя органами движения. А значит два нейрона должны выдавать управляющие сигналы для этих органов.
Естественно, что между сенсорами и управляющими нейронами должны быть интернейроны (в нейронных сетях их называют скрытыми нейронами). Сложно сказать какое количество и какая структура внутренних взаимосвязей должны быть. Но, так как организм мы постоянно упрощаем, то упростим и этот момент - пусть их будет всего 5 и пусть они не будут связаны друг с другом.
Казалось бы осталось связать все сенсоры с интернейронами, а интернейроны с управляющими и структура нервной системы организма готова. Но мы ведь должны опираться на существующую нейрофизиологическую информацию. Сейчас абсолютно очевидно, что модель дуги совершенно неверна и что необходимо использовать хотя бы модель кольца (когда управляющие нейроны также воздействуют на интернейроны). Так что прибавим еще обратные связи от управляющих нейронов к интернейронам.
Итак, нервная система нашего организма, которая будет состоять из искусственных нейронов:
Передача информации происходит сверху вниз, кроме обратных связей, которые обозначены стрелками. Прямоугольниками обозначены рецепторы, а окружностями рабочие нейроны. Стоит заметить, нейрон будет моделироваться искусственным нейроном с сигмоидальной функцией активации.
Возможно нервная система организма будет незначительно изменена при тестировании, но концепция останется та же.
Продолжение следует.
7 комментариев:
Можно полюбопытствовать почему внутренний слой содержит именно 5 нейронов и почему именно сигмоидальная функция будет служить для активации?
Это взять на обум, проводились тесты что так сеть будет эффективней обучаться или же есть какие-то общие правила?
И к тому же очень важный момент -- как будет проходить обучение и на основании каких данных сеть будет обучаться?
Дмитрий, спасибо за интерес.
По поводу обучения - обучение будет исключительно эволюционным методом, т.е. путем мутаций и отбора лучших. В следующем посте как раз об этом и планировал написать.
А теперь по поводу нейронов.
Сигмоидальная функция выбрана по двум соображениям: 1. нелинейность функции; 2. она быстрее вычисляется по сравнению с тем же гиперболическим тангенсом.
А вот почему 5 нейронов в скрытом слое, я не смогу ответить на 100%. Есть огромное количество эвристических правил по поводу структуры нейросети. Но главный фактор в выборе структуры - опыт :) Так что выбор количества скрытых нейронов - это просто мое субъективное решение.
Еще хочу сказать, что в случае длительного развития этой темы, я планирую сделать эволюционное развитие самой структуры нейронной сети, а не только связей между нейронами.
Меня смутил выбор сигмоидальной функции потому, что значение поворота должно иметь 3 значения поворачивать влево, не поворачивать и направо. А сигмоид обычно используют для получения двух разных значения.
Может имеет смысл сделать два нейрона, один будет отвечать за поворот налево, а второй направо. Если оба активны, значит нужно двигаться вперед.
Или же 3 нейрона. Первый отвечает за движение. Второй включает/выключает поворот, а третий уже направляет налево или направо. Но этот вариант мне не нравится и скорей всего обучение будет проходить не эффективней.
Крайне удивлен вашими выводами, Дмитрий.
Видимо, кто-то вас ввел в заблуждение по поводу функций активации. Два значения получают при пороговой функции активации, которую уже очень давно не используют. А сигмоид выдает значение на промежутке (0;1).
Сейчас расскажу как можно интерпретировать значения из этого промежутка относительно поворотов и все станет ясно.
Итак, r є (0;1).
Для очевидности сделаем линейное преобразование результатов.
r2 = 2*r - 1;
Теперь r2 є (-1;1).
Если r2 = 0, то поворот не осуществляется.
Если r2<0, поворот налево на угол пропорциональный модулю r2.
Если r2>0, поворот направо на угол пропорциональный модулю r2.
Например, r2=-0.3 . В таком случае организм будет поворачивать влево на угол 30% от максимально возможного.
Прочитал на википедии про использование сигмоида.. мда, действительно перепутал.
Ну что ж, тогда ждем продолжения. Особенно про выбор алогритма обучения -- уж там есть из чего выбрать.
извините, что врываюсь вот так без приглашения ;-), но если хотите использовать эволюционные алгоритмы, да и еще и подбирать одновременно размер скрытого слоя, то вам однозначно стоит ознакомиться с этими работами, особенно с этой
Я ее брал за основу при написании выпускной работы бакалавра и могу уверить, что генетический алгоритм в комбинации с RBF сетью работает отлично. Правда персептрон с методом Монте-Карло себя тоже хорошо проявил.
Спасибо, Юрий.
Сама книга "Генетические алгоритмы, искусственные нейронные сети и проблемы виртуальной реальности” по неизвестным причинам недоступна :(
Но диссертацию Махотило скачал и почитаю.
Отправить комментарий