C# — Моделирование «Разумной» Жизни На Основе Нейронных Сетей

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

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



C# — Моделирование «разумной» жизни на основе нейронных сетей



Задания

  • Описать и построить информационную модель.

  • Реализуйте модель и объекты на языке программирования.

  • Осознайте основные свойства, присущие разумным существам.

  • Реализовать мыслительный аппарат и механизмы «восприятия» модели окружающего мира объектом.

  • Реализовать механизм взаимодействия модельного объекта с окружающим миром и другими объектами.



1. Информационная модель

Для описания информационной модели нам необходимо понять, какие основные характеристики объекта мы хотим видеть; В качестве «основных» характеристик разумного существа я выделил следующие:
  • Наличие механизмов восприятия окружающего мира;
  • Наличие механизма взаимодействия с внешним миром;
  • Наличие памяти;
  • Наличие систем мышления (какими бы они ни были);
  • Способность принимать решения о взаимодействии с внешним миром на основе воспринятой и полученной информации.

Под окружающий мир давайте примем пространство на плоскости с евклидовой метрикой , с некоторым конечным числом моделируемых объектов.

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

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

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

Механизм взаимодействия в модели примем следующее: 4 «движителя», каждый из которых представляет, насколько быстро объект стремится двигаться в ту или иную сторону.

4 «пропеллера» позволят вам свободно передвигаться внутри самолета.

Взаимодействием в данном случае будет возможность перемещения в пространстве.



C# — Моделирование «разумной» жизни на основе нейронных сетей

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



C# — Моделирование «разумной» жизни на основе нейронных сетей

Под система мышления будет подразумеваться нейронная сеть в той или иной конфигурации.

Умение принимать решения из-за архитектуры нейронная сеть , опыт и воспринимаемая информация предоставляются Память И датчики .



C# — Моделирование «разумной» жизни на основе нейронных сетей

Для того, чтобы решения имели смысл Примем «стремления» к объектам: 1. «Съесть» другой объект (в нашем случае объект будет «съеден» другим, если он подойдет достаточно близко и будет «достаточно сильным»).

2. «Не быть съеденным», в нашем случае старайтесь не подпускать к себе другие предметы, чтобы не дать им возможности «съесть» вас.

Для принятия решения о «силе» ближайшего объекта возьмем еще 1 канал информации, который будет указывать «сильнее ли ближайший объект».

Таким образом, описанная объектная модель удовлетворяет всем заявленным требованиям.



2. Реализация модели

Для реализации модели будет использоваться язык программирования C#.

В качестве реализации нейронная сеть будет применяться Платформа машинного обучения Encog .

Он очень гибкий и быстрый, не говоря уже о том, что он прост в использовании.

Код модели довольно просто, это не единственно возможная реализация, эту модель может дополнять и изменять кто угодно.

Функционирование объекта в данной реализации модели построено вокруг функции DoLive(), в которой поочередно происходят следующие этапы жизни объекта: RefreshSense — обновление данных датчиков (посмотрел вокруг); Двигаться - сделал шаг (переместился в пространстве); Сохранить в память — обновил память, вспомнил текущую ситуацию; Тренироваться — «выучил», проанализировал память; Вычислить — принимал решение о положении двигателей на основе опыта и информации о ближайшем объекте; Выход — установить параметры движителя на основании принятого решения:

C# — Моделирование «разумной» жизни на основе нейронных сетей

Таким образом, каждый жизненный цикл всех объектов происходит на протяжении всего их существования.



3. Проверка модели

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

Для реализации вывода в видеофайл воспользуемся библиотекой AForge.Video.FFMPEG .

Пример 1. Без информации о силе ближайшего объекта (нет желания избежать смерти): Пример 2. Высокая «инерция» мышления (реже прекращает думать об окружающем мире и анализировать опыт): Пример 3. Окончательная реализация Пример 4. С функциями «разведения» и «охоты».

Пример 5. Расширенная модель, «генетическое» наследование «успешных» генов, мутации генов при наследовании, большее генетическое разнообразие (16 типов активации нейронов, разное количество и конфигурация слоев) Пример 6. Расширяя возможности восприятия, предметы воспринимают не только ближайший предмет, но и другие предметы.

Пример 7. Частичное наследование памяти от «родителя».



4. Выводы

Объектам давался минимум информации; не было правил относительно движения или управления движителями, только информация об окружающем пространстве, объектах и обратная связь об их состоянии.

Этой информации оказалось достаточно для объектов» научился «Самостоятельно найти и «съесть» «слабого» и «убежать» от «сильного».

В целом нейронную сеть можно использовать для моделирования вполне разумных действий.

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

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

Все материалы, исходные коды бесплатны и доступны каждому.

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

п.

с.

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

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

Вместе с данным постом часто просматривают: