Данная статья посвящена исследованию возможностей нейронных сетей при использовании их в качестве основы индивидуального разума моделируемого объекта.
Цель: показать, способна ли нейронная сеть (или данная ее реализация) воспринимать «окружающий» мир, обучаться самостоятельно и на основе собственного опыта принимать решения, которые можно считать относительно разумными.
Задания
- Описать и построить информационную модель.
- Реализуйте модель и объекты на языке программирования.
- Осознайте основные свойства, присущие разумным существам.
- Реализовать мыслительный аппарат и механизмы «восприятия» модели окружающего мира объектом.
- Реализовать механизм взаимодействия модельного объекта с окружающим миром и другими объектами.
1. Информационная модель
Для описания информационной модели нам необходимо понять, какие основные характеристики объекта мы хотим видеть; В качестве «основных» характеристик разумного существа я выделил следующие:- Наличие механизмов восприятия окружающего мира;
- Наличие механизма взаимодействия с внешним миром;
- Наличие памяти;
- Наличие систем мышления (какими бы они ни были);
- Способность принимать решения о взаимодействии с внешним миром на основе воспринятой и полученной информации.
Механизмы восприятия в космосе может быть по-другому; в этой модели такие механизмы займут 4 датчика , объекты, которые могут предоставить информацию об окружающем нас мире.
Информация об окружающем мире будет означать определенную величину, пропорциональную расстояние до ближайшего другой объект .
Поскольку 4 датчика будут смещены относительно «центра» объекта, он получит представление о том, где находится ближайший объект (теоретически).
Механизм взаимодействия в модели примем следующее: 4 «движителя», каждый из которых представляет, насколько быстро объект стремится двигаться в ту или иную сторону.
4 «пропеллера» позволят вам свободно передвигаться внутри самолета.
Взаимодействием в данном случае будет возможность перемещения в пространстве.
Наличие памяти реализовать это можно следующим образом: объект будет сохранять информацию о данных датчиков и текущих «ускорениях» в движителях, таким образом, имея массив такой информации, можно составить полную информацию о том, что произошло с объектом.
Под система мышления будет подразумеваться нейронная сеть в той или иной конфигурации.
Умение принимать решения из-за архитектуры нейронная сеть , опыт и воспринимаемая информация предоставляются Память И датчики .
Для того, чтобы решения имели смысл Примем «стремления» к объектам:
1. «Съесть» другой объект (в нашем случае объект будет «съеден» другим, если он подойдет достаточно близко и будет «достаточно сильным»).
2. «Не быть съеденным», в нашем случае старайтесь не подпускать к себе другие предметы, чтобы не дать им возможности «съесть» вас.
Для принятия решения о «силе» ближайшего объекта возьмем еще 1 канал информации, который будет указывать «сильнее ли ближайший объект».
Таким образом, описанная объектная модель удовлетворяет всем заявленным требованиям.
2. Реализация модели
Для реализации модели будет использоваться язык программирования C#.В качестве реализации нейронная сеть будет применяться Платформа машинного обучения Encog .
Он очень гибкий и быстрый, не говоря уже о том, что он прост в использовании.
Код модели довольно просто, это не единственно возможная реализация, эту модель может дополнять и изменять кто угодно.
Функционирование объекта в данной реализации модели построено вокруг функции DoLive(), в которой поочередно происходят следующие этапы жизни объекта: RefreshSense — обновление данных датчиков (посмотрел вокруг); Двигаться - сделал шаг (переместился в пространстве); Сохранить в память — обновил память, вспомнил текущую ситуацию; Тренироваться — «выучил», проанализировал память; Вычислить — принимал решение о положении двигателей на основе опыта и информации о ближайшем объекте; Выход — установить параметры движителя на основании принятого решения:
Таким образом, каждый жизненный цикл всех объектов происходит на протяжении всего их существования.
3. Проверка модели
Для просмотра результата моделирования потребуется каким-то образом извлечь информацию о текущем состоянии модели на каждом этапе, поскольку для динамической модели наиболее эффективным будет использование видеозаписи.Для реализации вывода в видеофайл воспользуемся библиотекой AForge.Video.FFMPEG .
Пример 1. Без информации о силе ближайшего объекта (нет желания избежать смерти): Пример 2. Высокая «инерция» мышления (реже прекращает думать об окружающем мире и анализировать опыт): Пример 3. Окончательная реализация Пример 4. С функциями «разведения» и «охоты».
Пример 5. Расширенная модель, «генетическое» наследование «успешных» генов, мутации генов при наследовании, большее генетическое разнообразие (16 типов активации нейронов, разное количество и конфигурация слоев) Пример 6. Расширяя возможности восприятия, предметы воспринимают не только ближайший предмет, но и другие предметы.
Пример 7. Частичное наследование памяти от «родителя».
4. Выводы
Объектам давался минимум информации; не было правил относительно движения или управления движителями, только информация об окружающем пространстве, объектах и обратная связь об их состоянии.Этой информации оказалось достаточно для объектов» научился «Самостоятельно найти и «съесть» «слабого» и «убежать» от «сильного».
В целом нейронную сеть можно использовать для моделирования вполне разумных действий.
Использование нейронных сетей при моделировании может иметь и практическое значение, например при управлении игровыми объектами; достаточно описать" возможности ", то объекты будут "проживать" свою жизнь, используя имеющиеся возможности себе во благо.
Принцип, показанный в статье, может найти применение в робототехнике; достаточно предоставить программе доступ к сенсорным системам, системам управления и настроить цель, благодаря памяти и нейросети устройство может самостоятельно " учиться «управлять имеющимися системами так, чтобы поставленная цель была достигнута.
Все материалы, исходные коды бесплатны и доступны каждому.
Надеюсь, эта статья поможет тем, кто хочет научиться использовать нейронные сети.
п.
с.
более интересная статья на эту же тему доказательство функциональности идеи о том, что достаточно сложная нейронная сеть может научиться использовать то, что у нее есть.
Теги: #C++ #нейронные сети #умные машины #они поймут, где я живу #Аномальное программирование #Развлекательные задачи #программирование #C++ #Машинное обучение
-
Рекомендации По Хорошему Поисковому Контенту
19 Oct, 24 -
Кельтские Языки
19 Oct, 24 -
О Рейтингах И Sbc
19 Oct, 24 -
Селен Для Python. Глава 5. Ожидания
19 Oct, 24