Проектирование агентов с индивидуальной адаптивной архитектурой в системе ISIDA
Руководство по проектированию агентов с индивидуальной адаптивной архитектурой в системе ISIDA: принципы поэтапного развития, теория МВАП, практические методики
Ресурсы
Исходный код пропекта: GitHub Теория: МВАП Виде-канал: AI agent ISIDA Инсталлятор: AIStudio.rar
Введение
Проект ISIDA (Incremental System for Intelligent Development of Agents) представляет собой системное развитие концепций, исследованных в рамках проекта Beast, и осуществляет переход от экспериментального прототипа к целостной архитектуре построения интеллектуальных агентов с иерархическими механизмами гомеостатической регуляции и адаптивного поведения.
Базовые механизмы эволюционного развития индивидуальной адаптивности не зависят от способа их реализации (биологическая, электронная, программная) и могут быть воспроизведены любым подходящим техническим способом.
Система индивидуальной адаптивности в любой реализации имеет строго причинно-следственную, схемотехническую суть, что требует соответствующего подхода к её анализу и проектированию (см. «Схемотехника адаптивных систем»: fornit.ru/67666).
Ключевым принципом архитектуры ISIDA, вытекающим из этих постулатов, является строго поэтапное, стадийное развитие агента, имитирующее как филогенез (эволюционное развитие вида), так и онтогенез (индивидуальное развитие особи).
Теоретические принципы
Развитие начинается с «нулевой стадии», аналога внутриутробного развития или эволюционного базиса, где закладываются наследственно передаваемые безусловные рефлексы и простейшие адаптивные действия — минимальный набор для выживания. Последующие стадии моделируют постнатальный онтогенез: обретение более сложных навыков, сначала под управлением оператора (выполняющего роль «родителя» в авторитарном режиме), а затем через взаимодействие со всей средой, вплоть до формирования сложных психических функций.
Данный подход основан на универсальном нейробиологическом принципе, согласно которому когнитивное развитие происходит строго последовательно, где каждая стадия формирует необходимый фундамент для следующей. Пропуск или нарушение последовательности стадий ведет к необратимым дефицитам в развитии.
Хотя программная реализация снимает многие ограничения биологических систем (такие как неточность распознавания и воспроизведения стимулов), принцип поэтапного развития остается фундаментальным. Это обусловлено иерархической организацией адаптивных механизмов: сложные навыки (комплексные действия) функционально и структурно зависят от корректного формирования более простых, базовых элементов (моторных примитивов).
Попытка начать обучение со сложных стадий, минуя базовые, приводит к формированию неполноценных, «хрупких» внутренних моделей, неспособных к эффективной генерализации и устойчивой адаптации в изменчивой среде. Напротив, поэтапное развитие, даже с неизбежным формированием избыточного количества связей на ранних этапах (аналог «младенческого лепета»), обеспечивает создание более устойчивой системы, способной в дальнейшем к тонкой настройке и сложным формам обучения. Этот принцип является общим для любых сложных адаптивных систем, независимо от их физической реализации.
Стадии развития агента
В данном руководстве излагаются принципы поэтапного формирования онтогенеза индивидуальной адаптивности агента в рамках архитектуры ISIDA — от базовых безусловных рефлексов, через условно-рефлекторные связи и автоматизмы, к сложным формам поведения и полноценной когнитивной автономии.
Конечной целью является создание самодостаточного агента, способного к самостоятельному целеполаганию, планированию и принятию решений в изменяющейся среде, по аналогии с развитием живого существа от полной зависимости к самостоятельности.
Все примеры и методики даются в контексте условной симулированной среды, имеющей два основных канала восприятия:
| Канал восприятия | Описание | Примеры |
|---|---|---|
| Вербальный | Текстовые сообщения | Команды, вопросы, описания среды |
| Гомеостатический | Прямые воздействия на внутреннее состояние | Повреждение, температурное воздействие, метаболические изменения |
На начальном уровне моделируются именно физиологические, а не психические реакции. Однако по мере развития архитектуры, начиная со стадии формирования базовых автоматизмов, вводятся механизмы оценки эффективности действий, основанные на принципах положительного и отрицательного подкрепления (поощрение/наказание).
На этом этапе формируется прото-значимость действий: агент обучается избегать поведенческих актов, ведущих к негативным гомеостатическим сдвигам (аналог «наказания»), и стремиться к действиям, нормализующим состояние (аналог «поощрения»).
Это закладывает основу для будущих сложных психических феноменов, которые возникают эмерджентно на более высоких уровнях архитектуры (с появлением эпизодической памяти, системы значимости, формирования моделей понимания) как результат иерархической интерпретации и интеграции этих базовых сигналов. Таким образом, психика не возникает внезапно, а является продуктом постепенного усложнения и интеграции механизмов адаптации, от простой корректировки поведения до сложной смысловой оценки.
Практическая реализация
При практической реализации предложенная архитектура должна быть адаптирована к реальным сенсорным каналам и исполнительным системам конкретного физического или программного агента. В связи с обобщенным характером архитектуры ISIDA, руководство фокусируется на универсальных механизмах адаптивности, не привязываясь к конкретной реализации агента (робот, виртуальный ассистент, кибернетическая система и т.п.).
Предлагаемые методы и подходы основаны на нейрофизиологических и кибернетических принципах и могут быть использованы для создания широкого спектра автономных систем с индивидуальным поведением.
Структура файлов программы
При установке программы автоматически создаются две группы каталогов:
- Каталог с исполняемыми файлами - расположен по пути, указанному при установке (по умолчанию:
C:\Program Files\AIStudio)- Исполняемый файл
AIStudio.exe - Дополнительные файлы библиотек (
isida.dllи другие)
- Исполняемый файл
- Каталог с данными агента -
C:\ProgramData\ISIDA…\Data- корневой каталог данных агента…\Actions- файлы адаптивных действий и гомеостатических влияний…\Gomeostas- файлы данных гомеостаза агента…\Reflexes- файлы данных рефлексов агента…\Sensors\Verbal- каталог вербальной сенсорной системы агента
…\Diagnostics- корневой каталог тестовых файлов системы…\Logs- корневой каталог логов системы…\Settings- корневой каталог файлов настроек системы
Формат файлов:
Все файлы представляют собой обычный текстовый файл, но с разными типами расширений. Каждый файл имеет «шапку» служащую для пояснения формата заполнения файла, за исключением файлов сенсорной системы.
Не рекомендуется изменять данные «шапок», так как при автоматической валидации файлов при сохранении/изменении в них данных происходит, в том числе, и проверка соответствия «шапки» файлов заложенному в системе шаблону.
При первом запуске программы по умолчанию загружаются данные системы гомеостаза из шаблонов. В дальнейшем все изменения происходят в файлах данных.
Если при работе программы произошли ошибки, то причину можно попробовать посмотреть в системных логах ('C:\ProgramData\ISIDA\Logs\SaveErrors.log'). Например, может быть такое сообщение:
[2025-08-28 22:02:37] Ошибка сохранения гомеостатических воздействий ('C:\ProgramData\ISIDA\Data\Actions\InfluenceActions.dat'): Данные не прошли проверку на корректность
Здесь явно указывается, что в файле, который пытались сохранить, не корректные данные.
Интерфейс программы
Видео. При открытии программы появляется главное окно, которое служит центральным узлом управления и навигации. Интерфейс построен по принципу вертикального разворачивающегося меню, расположенного с левой стороны окна:
Это меню содержит основные разделы системы. При выборе пункта меню соответствующая страница открывается в основной рабочей области справа, без создания дополнительных окон. Это обеспечивает удобство работы, целостность восприятия и позволяет быстро переключаться между функциональными модулями, не теряя контекста текущей задачи. Главное окно остаётся активным в течение всей сессии работы программы.
По умолчанию развернут раздел меню «Агент» и активен пункт «Данные агента», загружая тем самым страницу визуализации основных данных агента.
На страницах могут быть кнопки сохранения, очистки, навигации, фильтров и т.п., чье назначение понятно по их текстовому обозначению. Также элементы навигации и действий снабжены всплывающими подсказками при наведении курсора на элемент.
Элементы управления интерфейса:
- Вертикальное меню – навигация по разделам системы
- Рабочая область – отображение активной страницы
- Панель пульсации – управление временем жизни агента
- Всплывающие подсказки – помощь по элементам интерфейса
В нижней части главного окна программы расположена панель запуска пульсации агента.
Управление пульсацией:
При нажатии надписи «СТАРТ» запускается пульсация с частотой 1 сек и надпись меняет текст на «СТОП» для возможности остановки пульсации. Также на панели отражается глобальное время жизни агента в формате:
лет, месяцев, дней, часов, минут, секунд
Время жизни автоматически сохраняется в файле свойств агента (C:\ProgramData\ISIDA\Data\Gomeostas\AgentProperties.dat) каждые 10 сек. Сбросить время жизни можно нажатием на кнопку «Х» на панели.
Страница «Данные агента»
Видео. Эта страница открывается автоматически при старте программы. Так же ее можно запустить из пункта меню: Агент – Данные агента.
Это основная страница взаимосвязи Агента и Оператора. На ней можно задать свойства агента «Имя» и «Описание» в соответствующих полях редактирования. ДБ-клик по полю «Описание» запускает окно ввода, где можно ввести расширенное описание. Через выпадающий список «Стадия» устанавливается текущая стадия развития/обучения агента. Для сохранения изменений свойств агента нужно нажать кнопку «Сохранить».
Переход по стадиям может быть только строго последовательным, перескакивание стадий блокируется. Кроме того при попытке вернуться на предыдущие стадии, данные более старших стадий удаляются. Об этом будет предупреждение.
Редактирование можно производить только при выключенной пульсации. При включенной пульсации поля редактирования и кнопки сохранения блокируются. Это касается всех страниц-редакторов.
В разделе «Жизненные параметры агента» отображаются плашки визуализации параметров, которые создаются на странице: Гомеостаз – Жизненные параметры.
На каждой плашке есть 5 элементов, показывающие свойства параметра:
- Кружок вверху слева – передает состояние параметра при помощи цвета. Плохо – красный, Норма – желтый, Хорошо – зеленый.
- Надпись – текстовое обозначение параметра
- Цифра вверху справа – текущее значение параметра. Меняется при пульсации
- Индикаторная градиентная полоса – через градиент от красного к зеленому показывает зоны параметра. Красная зона – негативные значения, зеленая зона – позитивные. Переход между зонами через желтый градиент визуализирует пороговое значение параметра
- Вертикальная черная полоска – визуально показывает текущее положение значения параметра относительно его зон и порога
При наведении курсора на текстовое обозначение параметра появляется всплывающая подсказка с описанием параметра.
Текстовое обозначение раздела показывает текущее интегральное состояние агента в виде его обозначения и выделения цветом по аналогии с состоянием параметров: Плохо – красный, Норма – желтый, Хорошо – зеленый. Аналогичной индикацией в виде цветной рамки вокруг плашки параметра показывается его текущее состояние, на основе которого определяется интегральное.
В разделе «Стили реагирования» показаны все текущие доступные агенту стили, заведенные на странице: Гомеостаз – Стили реагирования.
Индикаторная плашка стиля показывает 3 основных свойства стиля реагирования:
- Надпись – текстовое обозначение стиля
- Число в % справа внизу – вес стиля
При наведении курсора на текстовое обозначение стиля появляется всплывающая подсказка с ее описанием. При включенной пульсации активные плашки начинают ритмично «дышать» в такт пульсу, тем самым дополнительно акцентируя на себе внимание.
В разделе «Адаптивные действия» показываются текущие активные ответные адаптивные действия агента в виде цветных текстовых названий:
Действия отличаются по типу источника, которым может быть: безусловный рефлекс, условный рефлекс, автоматизм. Так же в качестве ответного действия может выступать фраза.
Действия редактируются на странице: Гомеостаз – Адаптивные действия. Цвет действия так же как цвет плашки стиля реагирования показывает его вес по тому же принципу: чем больше вес, тем выше по частотной шкале цвет: от красного к синему (инфракрасный - ультрафиолет). При включенной пульсации текстовые обозначения так же начинают «ритмично дышать», тем самым дополнительно акцентируя на себе внимание.
В разделе «Пульт взаимодействия с агентом» оператор может посылать текстовые сообщения агенту, сопровождая их гомеостатическим воздействием на его параметры.
В окне ввода «Сообщение агенту» оператор может ввести текст и нажав кнопку «Отправить» послать его агенту. В окне «Распознанный текст» отображается текст, который агент смог распознать из введенного оператором. Согласно настройкам по умолчанию, каждая новая фраза распознается и запоминается после трех отправлений (не обязательно подряд), но если поставить флажок «Авторитарная запись» распознавание будет с первого раза. Такое выдерживание фраз служит простым «мусорным фильтром», чтобы не фиксировать опечатки. Агент по умолчанию способен распознавать символы кириллицы и латиницы, подробнее можно посмотреть файл первичных сенсоров, который можно расширять любыми символами:
C:\ProgramData\ISIDA\Data\Sensors\DefaultVerbalPrimaries.tmp
Справа от окон ввода расположен блок «Воздействие на агента» где можно дополнительно выбрать гомеостатическое воздействие и отправить его совместно с сообщением или отдельно. При этом учитывается невозможность отправки антагонистических воздействий. Например, на картинке показано, что выбрано действие «Поощрить», при этом заблокировались все его антагонисты.
Раздел меню Гомеостаз
В этом разделе заполняются данные относящиеся к системе гомеостаза агента, поэтому заполнять их нужно в нулевой стадии «До рождения».
Страница «Адаптивные действия»
Видео. Страница запускается из пункта меню: Гомеостаз – Адаптивные действия. Служит для создания адаптивных действий, которые могут активироваться в безусловных и условных рефлексах, а также в качестве базовой реакции на изменения состояний параметров гомеостаза. Представляет собой аналог врожденных базовых адаптивных действий живых организмов, передаваемых по наследству.
Данные заносятся в таблицу, содержащую следующие поля:
- ID – уникальный идентификатор адаптивного действия (генерируется автоматически)
- Наименование – название адаптивного действия
- Описание – описание действия (двойной клик открывает форму для расширенного комментария)
- Энергичность – энергичность выполнения действия, по умолчанию 5 (-10…+10)
- Антагонисты – несовместимые действия (заполняются только через специальный редактор, запускаемый ДБ-кликом по полю)
Надо учитывать, что у каждого действия обычно есть не совместимые с ним антагонисты, которые не могут выполняться с ним одномоментно. И это необходимо указать в соответствующем поле таблицы при помощи редактора
Адаптивные действия заполняются исключительно на нулевой стадии развития агента. После перехода на следующую стадию таблица блокируется для редактирования, включая очистку всех данных. Так же как и во всех других таблицах-редакторах, при пульсации ее редактирование блокируется.
В нижней части страницы расположены кнопки для сохранения изменений и полной очистки таблицы. При удалении действия автоматически удаляются все ссылки в связанных с действиями таблицах, например «Рефлексы». Кроме того, при попытке сохоранить не корректные данные будет выдано сообщение об этом и сохранение будет отклонено.
Удалить строки из таблицы можно выделив одну или несколько строк и нажав клавишу 'DELETE'
Страница «Стили реагирования»
Видео. Страница запускается из пункта меню: Гомеостаз – Стили реагирования. Редактор стилей реагирования, которые служат контекстом для выполнения адаптивных действий.
Данные заносятся в таблицу, содержащую следующие поля:
- ID – уникальный идентификатор стиля (генерируется автоматически)
- Наименование – название стиля
- Описание – описание стиля (двойной клик открывает форму для расширенного комментария)
- Антагонисты – несовместимые стили (заполняются только через специальный редактор, запускаемый ДБ-кликом по полю)
Форма редактор списка антагонистов аналогична редактору антагонистов для адаптивных действий:
Здесь так же нужно выбрать стили, не совместимые с тем, с поля которого была запущена форма.
Стили реагирования на этой странице заполняются только в нулевой стадии. Как только будет переключена стадия на следующий уровень, таблица блокируется на редактирование, включая очистку всех данных. Так же как и во всех других таблицах-редакторах, при пульсации ее редактирование блокируется
В нижней части страницы находятся кнопки для сохранения и для полной очистки таблицы. В последнем случае при удалении стилей автоматически вычищаются и все ссылки на них в связанных таблицах, например «Параметры гомеостаза». Кроме того, при попытке сохранить не корректные данные будет выдано сообщение об этом и сохранение будет отклонено. Удалить строки из таблицы можно выделив одну или несколько строк и нажав клавишу 'DELETE'
В левом нижнем углу расположена кнопка «Матрица антагонистов», которая открывает форму для более удобного заполнения антагонистов стилей, но как уже указывалось ранее – только в нулевой стадии.
В заголовках строк и столбцов показаны коды стилей, а крестик в ячейке означает наличие антагонистической пары для этих стилей. Клик по ячейке высвечивает желтым две симметричные пары, например на скриншоте показаны:
Напряжение (ID8) – Ступор (ID6), Ступор (ID6) - Напряжение (ID8)
Зеленый, или при выделении желтый цвет ячейки показывает симметричные пары антагонистов, а красный – ассиметричные. Если навести курсор на ячейку, всплывающая подсказка покажет, есть ли проблемы с симметрией у данного стиля.
Например, в данном случае она подсказывает, что у стиля Игра задан антагонистом стиль Ступор, а у стиля Ступор не задан симметрично антагонистом стиль Игра, что и является ассиметричной антагонистической связью. Ее можно исправить, вернувшись на страницу таблицы стилей и убрав из антагонистов стиля Игра стиль Ступор, или наоборот, добавив ему в антагонисты стиль Игра. Либо просто нажать кнопку Сохранить, и тогда система валидации обнаружив асимметрию стилей выбросив окно диалога, предложит автоматически ее исправить.
Страница «Параметры гомеостаза»
Видео. Страница запускается из пункта меню: Гомеостаз – Жизненные параметры. Представляет собой редактор жизненных параметров гомеостаза агента.
Данные заносятся в таблицу, содержащую следующие поля:
- ID – уникальный идентификатор параметра (генерируется автоматически)
- Наименование – название параметра
- Описание – описание параметра (двойной клик открывает форму для расширенного комментария)
- Значение – текущее значение параметра (0…1000), автоматически обновляется при пульсации
- Вес – степень влияния параметра на другие параметры и приоритет при нормализации
- % изменения – скорость убывания/нарастания параметра при пульсации (-10…+10)
- Критический минимум – минимальное допустимое значение для жизненно важных параметров. Ниже приводит к смерти агента
- Критический максимум – максимальное допустимое значение для жизненно важных параметров. Выше приводит к смерти агента
- Активация стилей – указывается список стилей, которые должны активироваться при определенных значениях параметра. Поле закрыто для ручного редактирования, только через специальный справочник, запускаемый ДБ-кликом по полю
- Жизненно важный – флаг, указывающий что параметр является жизненно важным. Критические мин/макс значения только таких параметров могут вызвать 'смерть' агента
Типы параметров:
Знак в поле "% затухания" определяет тип параметра: отрицательный - убывающий, положительный - нарастающий. Нарастающие параметры обычно инициализируются значением 0, убывающие 100.
Параметры гомеостаза на этой странице заполняются только в нулевой стадии. Как только будет переключена стадия на следующий уровень, таблица блокируется на редактирование, включая очистку всех данных. Как и во всех других таблицах-редакторах, при пульсации ее редактирование блокируется
Редактор активации стилей
Форма-редактор активации/деактивации стилей реагирования запускается двойным кликом по полю «Активация стилей»:
В ней фиксированное число строк (7) по числу зон параметра гомеостаза, от 0 до 6. Как видно из названий, они служат для привязки активации стилей к факторам выхода/возврата из зоны (в зону) позитивных значений параметра, а так же для привязки к определенной степени отклонения при выходе параметра из нормы: слабое, значительное, сильное, критическое. В каждом случае, очевидно, нужно активировать разные стили, так как ситуации по степени важности различаются.
Для указания стилей необходимо использовать специальный редактор, запускаемый двойным кликом по соответствующему полю:
Однако при указании списка стилей для активации уже не получиться как с антагонистами выбрать любую их комбинацию потому, что если у стиля указаны антагонисты, то их выбор для одновременной активации запрещен, так как возникнет противоречивая комбинация. Поэтому при выборе стиля автоматически блокируется выбор его антагонистов. Это видно на рисунке – часть флажков стилей погашена именно по этой причине.
В нижней части страницы находятся кнопки для сохранения и для полной очистки таблицы. При сохранении происходит проверка данных на корректность: поиск циклических зависимостей взаимовлияний параметров (для исключения ситуаций типа: потеря энергии увеличивает стресс, а увеличение стресс увеличивает потери энергии), дополнительно проверяется противоречивые активации стилей-антагонистов (хотя это блокируется уже на уровне ввода через редакторы).
В левом нижнем углу расположена кнопка «Матрица связей», открывающая форму для более удобного редактирования связей стилей с параметрами гомеостаза агента:
На этой форме показаны все жизненные параметры агента и 7 их зон, в ячейках отражены коды стилей для соответствующих параметра/зоны. При наведении на надписи параметров и зон, а так же ячеек, появляются всплывающие подсказки с уточняющим сообщением. Двойной клик по ячейке открывает редактор выбора стилей для зоны аналогично ДБ-клику по полю активации стилей в таблице параметров.
Хотя матрица позволяет видеть сразу все параметры, зоны и стили агента, ее главная особенность, ради которой она сделана, состоит в другом – возможности быстро находить дублеры стилей, что является важным, если нужно получить максимальную вариабельность контекстного реагирования. В данном случае, для 7 параметров и 7 зон это 49 вариантов комбинаций стилей. Для поиска дублеров служит соответствующий список-фильтр в правом верхнем углу матрицы, а для визуализации конкретного стиля нужно выбрать значение в фильтре «Фильтр по стилю». Для максимальной вариабельности контекстного реагирования нужно добиться, чтобы список «Поиск дублеров» был пустой. Для этого ДБ кликом по ячейкам надо запускать редактор привязки стилей и менять ее для проблемных ячеек.
Страница «Вербальные деревья
Видео. Страница запускается из пункта меню: Гомеостаз – Сенсорная система. Служит для быстрой набивки и анализа дерева слов и фраз. Заполнение деревьев при стандартных воздействиях на агента со страницы «Данные агента» – Раздел «Пульт взаимодействия с агентом» происходит в штатном режиме, в момент отправки текстового сообщения.
В верхней части страницы окно ввода, куда можно ввести осмысленный текст и нажав кнопку «Добавить» отправить его на запись в деревья. Чтобы минимизировать запись «мусора», слова и фразы записываются лишь после выдержки в «песочнице» - отдельном хранилище для слов и фраз, где после нескольких повторов встреч в посылаемых текстах, они переносятся в деревья и удаляются из песочницы. Количество повторов для такой выдержки задается в поле «Порог подтверждения» и в аналогичном поле на странице общих настроек программы. Кроме того, можно задать ограничение на фиксирование максимальной длины фразы через параметр «Макс. длина фразы». Это значит, что введенный текст будет разбиваться на фразы заданной длины и такими блоками записываться в дерево фраз.
Структура сенсорной системы в виде деревьев подразумевает аналогичную многоуровневую систему в природной нейросети, когда на базе первичных примитивов строятся вторичные. В данном случае первичными сенсорами будут одиночные символы (буквы, знаки пунктуации), вторичными слова. Из них формируется дерево слов. Аналогичным образом из слов формируется дерево фраз, где первичными сенсорами служат слова. И в обоих случаях конечные узлы деревьев, точнее их ID, определяют искомый элемент, слово или фразу:
| Дерево слов: | Дерево фраз: |
|
П(1)
Р(2)
И(3)
В(4)
Е(5)
Т(6): ID=6 – код слова «привет»
К(7)
А(8)
К(9)
Д(10)
Е(11)
Л(12)
А(13)
|
ПРИВЕТ(1)
КАК(2)
ДЕЛА(3): ID=3 – код фразы «привет как дела»
|
Это можно наглядно видеть в деревьях, если развернуть их узлы. Только для наглядности в дереве слов показаны только целые ветки-слова, без разбивки по буквам. Но если посмотреть сам файл дерева слов (C:\ProgramData\ISIDA\Data\Sensors\Verbal\Words.dat) станет понятно, как слово хранится в системе – в виде ветки дерева, где каждый узел отдельный символ (первичный примитив). А основа дерева это файл самих первичных примитивов (C:\ProgramData\ISIDA\Templates\Sensors\DefaultVerbalPrimaries.tmp). Это значит, что вербальные деревья агента смогут распознавать только такие слова/фразы, в которых есть эти начальные примитивы. Так же как и в реальной сенсорной системе: нет зрительных рецепторов, распознающих определенный спектр цвета – животное не будет его воспринимать.
То, что в сенсорной системе деревья названы «вербальными» не означает, что такой древовидный принцип распознавания годится только для «слухового» анализатора. Точно такой же принцип организации от простейшего примитива до сложных составных образов, где собираются ID узлов от разных деревьев, не только сенсорных, в мозге присутствует повсеместно. Но так как данная версия ISIDA в основном экспериментальная и ввиду ограниченности ресурсов разработчиков, у агента только один такой канал, хотя аналогичным образом можно их создать сколько угодно. То есть в данной ситуации проще и нагляднее было сделать дерево слов и фраз, демонстрирующее общий принцип реализации большинства сенсорных систем.
Для поиска слов и фраз над каждым деревом есть поля фильтров и кнопки «Найти» и «Сброс», чей функционал очевиден из их названия. Кроме того, можно полностью вычистить все деревья нажатием кнопки «Очистить» внизу формы.
Очистка деревьев возможна только в стадии 0, так как вербальные сенсоры могут быть использованы уже начиная с 1 стадии формирования условных рефлексов, и удаление сенсоров может привести к сбою системы распознавания образов.
Сенсорные деревья ISIDA, организованные по вышеописанному принципу, принадлежат к так называемым префиксным деревьям. Их особенность, что ключи искомых элементов не хранятся явно, а зависят от положения узла в дереве. Это приводит к некоторым особенностям, которые нужно учитывать. Например, если отправить для записи в деревья фразу «привет как дела», в дереве слов запишутся слова, в дереве фраз вся фраза. Но если после этого отправить фразу «приветствую как дела», то в дереве слов мы увидим слово «приветствую», а слово «привет» уже не будет. Хотя поиск по дереву его найдет и выдаст его ID, фактически оказалось, что в одной ветке «приветствую» хранятся два слова: «привет» и «приветствую». Просто ID слова «привет» это будет код узла «Т», а слова «приветствую» код узла «Ю».
Такая особенность префиксных деревьев позволяет хранить в одной ветке теоретически столько ID, сколько в ней узлов. В нашем случае это значит, что вербальная система записав слово «привет» сформировала не один сенсор на слово, а 5 сенсоров на слоги + 1 сенсор на слово: п – пр – при – прив – приве – привет. Это позволяет легко организовать поиск по неточному совпадению, то есть по части слова.
Страница «Внешние воздействия»
Видео. Страница запускается из пункта меню: Гомеостаз - Внешнее воздействие. Служит для создания непосредственных воздействий на систему гомеостаза агента, имитирующих его физическое взаимодействие с реальностью.
Страница предназначена для настройки имитации внешних стимулов, непосредственно влияющих на параметры гомеостатической системы агента. Данный функционал позволяет моделировать прямое физиологическое воздействие (например, повреждение, температурные изменения или метаболические сдвиги), которое изменяет внутреннее состояние системы и формирует первичную гомеостатическую значимость — базовую оценку «стало лучше или хуже».
Эта значимость является фундаментальным механизмом обратной связи, на основе которого в дальнейшем строятся более сложные поведенческие реакции, оценки воспринимаемых образов и эффективности действий. На низшем уровне система оперирует категориями «плохо», «норма», «хорошо», определяемыми через отклонение параметров гомеостаза от оптимальных значений и интегральное состояние агента.
В программной реализации воздействия симулируются, однако в физических системах (таких как роботы) эти же принципы применяются напрямую: данные с датчиков, отражающие реальные изменения в системе, используются для формирования объективной оценки последствий внешних воздействий.
Описание полей таблицы:
- ID – уникальный идентификатор воздействия, генерируется автоматически
- Наименование – наименование воздействия
- Описание – описание воздействия. Двойной клик по полю открывает форму ввода, где можно написать развернутый комментарий
- Воздействие на гомеостаз – указываются параметры гомеостаза, на которые воздействие оказывает влияние. Поле недоступно для ручного редактирования, только через специальный редактор, запускаемый двойным кликом по полю. Формат отображения данных:
ID параметра : величина влияния (-10…+10) - Антагонисты – антагонистические воздействия, которые не совместимы с указанным в строке. Поле недоступно для ручного редактирования, только через специальный редактор, запускаемый двойным кликом по полю
Формы редакторов гомеостатических воздействий на параметры гомеостаза и выбора воздействий-антагонистов идентичны формам для таблицы параметров гомеостаза.
Данные на этой странице заполняются только в нулевой стадии. Как только будет переключена стадия на следующий уровень, таблица блокируется для редактирования, включая очистку всех данных. Также, как и во всех других таблицах-редакторах, при пульсации её редактирование блокируется.
В нижней части страницы находятся кнопки для сохранения и для полной очистки таблицы. При удалении воздействий автоматически удаляются все ссылки на них в связанных таблицах.
Рефлексы
Безусловные рефлексы
Видео. Страница запускается из раздела меню: Рефлексы – Безусловные рефлексы. Служит для формирование базы безусловных рефлексов 2 типов: по полному и не полному стимулу, а так же фиксированных цепочек рефлексов.
Безусловные рефлексы агента заполняются только в нулевой стадии, на следующих стадиях страница блокируется на редактирование.
Описание полей таблицы:
- ID – уникальный идентификатор рефлекса, генерируется автоматически
- Интегральное состояние – первый уровень дерева условий запуска рефлекса (Level 1), интегральное состояние агента, выбирается из списка подстановок с тремя значениями: Плохо, Норма, Хорошо.
- Контексты реагирования – второй уровень дерева условий запуска рефлекса (Level 2), возможная комбинация стилей реагирования (по данным поля «Активация стилей» редактора «Параметры гомеостаза»). При ДБ-клике открывается форма для выбора одной из существующих комбинаций:
- Внешние стимулы – третий уровень дерева условий запуска рефлекса (Level 3), акции (триггер) воздействий оператора с пульта. ДБ клик по полю запускает форму выбора воздействий, где флажками выделяются нужные. Источником данных формы служит редактор внешних воздействий.
- Адаптивные действия – действие рефлекса, которое выводится на пульт, если системой распознается заданный в строке набор условий (Level 1 + Level 2 или Level 1 + Level 2 + Level 3). ДБ клик по полю запускает форму выбора действий, где флажками выделяются нужные. Источником данных формы служит редактор адаптивных действий.
- Цепочка – последовательность действий, выполняемая после завершения действия рефлекса. ДБ клик по полю запускает форму редактор цепочки, если она задана, а контекстное меню позволяет очистить привязку цепочки, добавить новую или прицепить другую цепочку из существующих.
Форма выбора комбинации стилей реагирования
В ней нужно выбрать из списка комбинацию и нажать кнопку «Применить». Если список пустой или не полный, например, были добавлены новые параметры гомеостаза или изменена привязка стилей к их зонам, список нужно обновить, для чего нажимается соответствующая кнопка слева внизу формы. Справочная надпись серого цвета показывает, сколько теоретически можно собрать уникальных групп комбинаций из всех стилей в количестве от 1 до 3 в группе, а так же реальное число комбинаций, заданных в редакторе параметров гомеостаза.
Для создания нового рефлекса достаточно кликнуть по пустой строке внизу таблицы, заполнить поля таблицы и нажать кнопку «Сохранить». Кнопка «Очистить» удаляет все рефлексы, кнопка «Обновить» обновляет привязку рефлексов в дереве условий их запуска, что может потребоваться при ручном заполнении файла данных рефлексов, например с привлечением нейро-ботов, задав им соответствующий промпт.
Допускается создавать 2 типа рефлексов: на не полный набор условий запуска (Level 1 + Level 2) и на полный (Level 1 + Level 2 + Level 3). В первом случае будет реакция на изменение состояния и стилей реагирования агента, что, по сути является опосредованной реакцией на стимул без учета конкретики (триггера). То есть, если по каким-то причинам изменилось состояние и стиль реагирования агента – это спровоцировало запуск рефлекса.
Так как такой набор рефлексов, являясь стандартным минимумом рефлекторной базы агента, по сути означает задать реакции на все возможные сочетания стилей реагирования (согласно данным редактора параметров гомеостаза), то это можно сделать автоматически через кнопку «Сгенерировать рефлексы». Правда при этом всем рефлексам будет назначено действие по умолчанию, которое нужно потом заменить на более адекватное.
Действие по умолчанию запускается так же и на любой триггер с пульта, если нет рефлекса на полный набор условий.
Цепочки безусловных рефлексов
Основой инстинктивного поведения агента являются не одиночные рефлекторные действия, а цепочки действий, так как одиночным действием, как правило, не удается добиться необходимой цели. В данном случае речь идет о бессознательных, гомеостатических целях, которые определяются текущим стилем реагирования. То есть каждая цепочка выполняется строго в своем стиле – что и определяет «цель», как последовательность связанных общим «смыслом» действий, приводящих к определенному результату. Термины взяты в кавычки, чтобы подчеркнуть, что на данном уровне рефлекторного реагирования никаких целей в привычном понимании нет потому, что система адаптивности агента строго реактивная.
Цепочки являются продолжением действия рефлекса, где оно становится стартовым звеном. При этом происходит удержание текущего стиля реагирования на время выполнения одного действия (задается в настройках) * кол-во действий в цепочке, чтобы дать возможность ей полностью отработать. Однако если в процессе выполнения цепочки оператор пошлет новый триггер с пульта, или состояние агента станет критическим, цепочка прервется и стиль реагирования переключится на адекватный ситуации (согласно привязкам стилей в редакторе параметров гомеостаза).
В самом простом случае, если в системе есть рефлексы на неполный набор условий (Level 1 + Level 2) могут образовываться динамические (виртуальные цепочки) действий по следующему принципу:
- Оператор послал триггер с пульта, на такой набор условий (Level 1.1 + Level 2.1 + Level 3.1) есть б/у рефлекс, который активируется
- Триггер с пульта воздействуя на параметры гомеостаза изменил состояние агента и его стиль, возникло новое текущее состояние: Level 1.2 + Level 2.2. На такой не полный набор условий тоже есть рефлекс, который не запускается сразу, а становится в очередь, ожидая завершения действия первого рефлекса на условия Level 1.1 + Level 2.1 + Level 3.1. При этом активируется удержание стилей, чтобы дать ему возможность потом активироваться.
- Если не было нового триггера с пульта, состояние агента не критическое, после отработки первого действие активируется второе – происходит «склейка» действий от двух рефлексов в одном контексте, формируя простейшую двух-звенную цепочку.
- По завершении второго действия удержание прекращается, состояние агента и стили реагирования возвращаются в исходное состояние, какое было до триггера с пульта (если состояние было Норма). Возникает третий набор условий Level 1.3 + Level 2.3 который так же может запустить рефлекс, если он есть. Но это уже не будет продолжением цепочки, так как стиль изменился.
Такие цепочки позволяют получить более вариабельное реагирование агента, но могут быть и не совсем адекватными, так как собираются на лету. Более качественные цепочки это фиксированный набор действий, задаваемый в специальном справочнике, который можно запустить ДБ-кликом по полю таблицы «Цепочка». Появится диалоговое окно с вопросом: создать новую цепочку или выбрать из существующих? Если нажать «Да» откроется редактор цепочки, если «Нет» редактор управления цепочками. Их так же можно запустить через контекстное меню, нажав правой кнопкой мыши по полю «Цепочка».
В редакторе цепочек нужно задать нужное количество строк цепочки, выбрав для каждой действие и указав направление ветвления при удачном/не удачном завершении звена, что имитирует сигнал от проприорецепторов выполнения действия. Например, согласно скриншоту в данном случае сформирована цепочка:
- Шаг 1 – [Удивляется]. Если успех, то переход на Шаг 2, если не успех, то переход на Шаг 3
- Шаг 2 – [Исследует]. Конечное звено цепочки.
- Шаг 3 – [Злится]. Если успех, то конец цепочки, если не успех, то переход на Шаг 4.
- Шаг 4 – [Просит помощи]. В любом случае, успеха или не успеха, завершаем цепочку.
Как видим, фактически тут задается сценарий реагирования (если…то…иначе), выдержанный в какой-то адаптивной логике действий, ветвление которого определятся сигналами успеха/не успеха выполнения звена. В случае с роботом, это должны быть показатели датчиков «окончания движений», «достижения контакта с объектом» и т. п. Но для виртуального агента на пульт просто выведен переключатель, который появляется при активации цепочки, и оператор в любой момент выполнения цепочки может его переключить в одно из положений успеха/не удачи. Либо может его не трогать, оставив текущее положение как сигнал по умолчанию.
Такой переключатель является дополнительным элементом воздействия оператора на агента, делая его реагирование более гибким.
Редактор управления цепочками позволяет произвольно привязывать цепочки к рефлексам, а так же удалять их. При этом автоматически очищается привязка к этой цепочке у всех рефлексов, где она была указана. Для действия с цепочкой нужно выделить нужную строку в таблице цепочек и нажать соответствующую кнопку.
Условные рефлексы
Страница запускается из раздела меню: Рефлексы – Условные рефлексы. Служит для формирования базы условных рефлексов. Таблица заполняется автоматически и поэтому не доступна для ручного редактирования, за исключением удаления строк или полной очистки таблицы. Видео
Создание условных рефлексов становится доступным, начиная с 1 стадии развития агента. С этой стадии начинается активный процесс адаптации агента путем наращивания вариабельности реагирования через формирование условных рефлексов как простейшего способа фиксации причинно-следственной связи между новыми пусковыми стимулами и существующими рефлекторными действиями. Результирующим действием условного рефлекса всегда является рефлекторное действие, условное или безусловное.
Описание полей таблицы:
- ID – уникальный идентификатор рефлекса, генерируется автоматически
- Cостояние – первый уровень дерева условий запуска рефлекса (Level 1), интегральное состояние агента с тремя значениями: Плохо, Норма, Хорошо
- Контексты реагирования – второй уровень дерева условий запуска рефлекса (Level 2), возможная комбинация стилей реагирования (по данным поля «Активация стилей» редактора «Параметры гомеостаза»)
- Образ восприятия – интегральный образ воздействия от оператора с пульта, включающий в себя действия и фразы
- Адаптивные действия исходного рефлекса – действия от безусловного рефлекса, которые активируются на новый стимул условного рефлекса
- Крепость – крепость связи между новым стимулом и безусловным рефлексом. Убывает при пульсации и нарастает при активации стимула условного рефлекса
- Последняя активация – время последней активации (в пульсах) условного рефлекса
- Исходный рефлекс – ID безусловного рефлекса, активируемого на новый стимул
Внизу формы расположены кнопки для полной очистки таблицы и изменения настроек системы условных рефлексов. При нажатии на кнопку «Настройки» открывается соответствующий редактор:
В этой форме задаются настройки, по которым укрепляется или распадается крепость связи условных рефлексов с действием исходного безусловного рефлекса, а так же порог активации условного.
Модель формирования условных рефлексов
В основе работы системы условных рефлексов ISIDA лежит психофизиологическая модель Рескорлы–Вагнера. Эта модель была предложена в 1970-х годах американскими психологами Робертом Рескорлой и Алленом Вагнером для объяснения процессов обучения у животных и человека. Она широко используется в нейронауках, искусственном интеллекте и робототехнике для формирования причинно-следственных связей между событиями.
Модель Рескорлы–Вагнера подходит для систем, где нужно:
- Учитывать силу ассоциации между стимулами
- Управлять скоростью обучения и забывания
- Поддерживать реалистичную динамику: прочные связи забываются медленнее, слабые — быстрее
- Адаптироваться к изменениям среды без полного стирания предыдущего опыта
В проекте ISIDA эта модель позволяет агенту «учиться на опыте»: замечать закономерности, запоминать полезные реакции и постепенно забывать неактуальные.
Создание условного рефлекса
Условный рефлекс образуется, когда новый стимул (например, определённая фраза оператора) регулярно предшествует безусловному рефлексу (врождённой реакции агента) в заданном в настройках временном окне корреляции (от 1 до 10 пульсов). Процесс происходит следующим образом:
- Оператор посылает агенту новый стимул, на который нет безусловного или условного рефлекса, например, фразу «Привет». Для этого надо ввести фразу в окно ввода и нажать кнопку «Отправить». Если эта фраза не входит в словарь, то потребуется несколько повторений (задается в настройках, по умолчанию 3), после которых фраза попадает в дерево слов. Но если поставить флажок «Авторитарная запись» то фраза запишется в память агента с первого раза.
- В течение временного окна оператор посылает агенту гомеостатический стимул, установив флажок одного или группы действий на пульте и нажав кнопку «Отправить».
- Если на такой стимул есть безусловный рефлекс, то сформируется условный рефлекс, где скопируются первые два уровня условий запуска Level 1 (состояние агента) и Level 2 (стиль реагирования агента) на момент подачи стимула, и к ним добавится Level 3 – новый стимул, в данном случае фраза. Действие условного рефлекса так же будет аналогично действию исходного безусловного. Но крепость связи будет на 0,1 выше минимальной, при которой рефлекс удаляется (0,1 по умолчанию), но ниже пороговой (0,6 по умолчанию) при достижении которой условный рефлекс активируется.
- Далее при каждой активации этой фразы и стимула с пульта в течении временного окна, крепость связи будет увеличиваться не линейно, согласно модели Рескорлы-Вагнера. И на каждом пульсе будет ослабляться, но с меньшей скоростью, чем укрепление. Эти скорости задаются коэффициентами обучения и затухания через форму настроек.
- Когда крепость связи превысит порог активации условного рефлекса, он начнет активироваться уже без второй активации гомеостатического стимула с пульта, и укрепляться при каждом повторении нового стимула. Но так как на каждом пульсе происходит ослабление связи, то при длительной неактивности нового стимула крепость связи может стать ниже порога. А когда она упадет до критического минимума (минимальная крепость связи в настройках) условный рефлекс удалится.
При закреплении, крепость связи нарастает по асимптотическому закону: каждый успешный опыт приближает её к максимальному значению (1.0), но чем ближе к максимуму, тем медленнее рост. Это предотвращает «переобучение» и обеспечивает стабильность установившихся рефлексов.
При затухании, крепость связи уменьшается по экспоненциальному закону с адаптивной скоростью: чем прочнее рефлекс, тем медленнее он забывается. Слабые ассоциации распадаются быстро, прочные сохраняются долго.
Всё это происходит автоматически в процессе «общения» оператора с агентом, в соответствии с настройками, которые можно регулировать в редакторе (скорость обучения, затухания, пороги). Это позволяет балансировать между гибкостью обучения и стабильностью поведения.
Если у безусловного рефлекса есть цепочка, она так же будет активирована после выполнения основного действия рефлекса при его запуске по новому стимулу. Этим обеспечивается эффект смены модели поведения при создании условного рефлекса, а не просто переключения его действия на новый пусковой стимул. Дело в том, что практически все безусловные рефлексы это реакция на изменение состояния и стилей реагирования агента в ответ на триггер с пульта. При этом смена стилей обрывает цепочку безусловного рефлекса, не дав ей запуститься. Но так как вербальный стимул, который обычно является пусковым стимулом для условного рефлекса, никак не влияет на гомеостаз агента, такие цепочки от исходного безусловного рефлекса могут без проблем запускаться от нового условного. В итоге получается, что если на триггер с пульта запускался только одиночный рефлекс, то на вербальный стимул с пульта, который стал запускать действие этого рефлекса, теперь стала запускаться и его цепочка. Этим обеспечивается существенное адаптивное преимущество условных рефлексов перед безусловными – они могут служить триггером запуска цепочек действий, которые не запускались раньше.
Настройки проекта
Общие настройки
Видео. Страница запускается из раздела меню: Настройки – Общие настройки. Служит для указания путей к каталогам данных и шаблонов проекта, а так же значений по умолчанию для переменных. С помощью этой страницы редактируется файл общих настроек программы: C:\ProgramData\ISIDA\Settings\ AIStudio.Settings.xml.
В разделе «Настройки путей приложения» можно указать пользовательские пути к каталогам, что позволяет создавать множество разных агентов и переключаться между ними, меняя настройки. По умолчанию после установки программы все каталоги расположены: C:\ProgramData\ISIDA\...
В разделе «Настройки гомеостаза» можно указать:
- Стиль реагирования по умолчанию – будет активировать для ситуаций, когда все стили не активны
- Адаптивное действие по умолчанию – будет выполняться для ситуаций, когда для данных условий не найдено ни одного подходящего действия
Указание этих настроек означает, что если все таблицы данных гомеостаза пустые, на все ситуации, когда нужно реагировать, будут выполняться только эти реакции. В то же время, если эти настройки заполнены, то при попытке полностью очистить таблицы стилей, действий и рефлексов, в них окажутся сохраненными заданные по умолчанию настройки. Об это будет выведено предупреждение.
Для функционирования системы гомеостаза должны быть заданы следующие настройки:
- Интегральный порог состояния – определяет общий, интегральный порог гомеостатического состояния агента, пересечение которого служит триггером для переключения состояний Плохо, Норма, Хорошо. Чем он больше, тем больше нужно учитывать состояний отдельных параметров для изменения общего состояния агента
- Мин. детектирование параметра – определят минимальную величину изменений значений параметров для определения их состояния в динамике. Чем больше этот параметр, тем менее чувствительна система к воздействию на гомеостаз. А чем меньше параметр, тем более проявляется эффект «дребезга» возле пороговых значений.
- Время удержания состояний – определяет время в сек. удержания состояния Хорошо и Плохо
- Число повторов для записи сенсора – определяет сколько надо повторений слова/фразы в получаемых агентом текстах, чтобы посчитать его «не мусорным» и записать в деревья слов/фраз
Для сохранения настроек нужно нажать кнопку «Сохранить». При этом будет выдано предупреждение, что для вступления в силу новых настроек, программу необходимо перезапустить.
Логирование
В программе есть раздел мониторинга в реальном времени — логи. Он нужен, чтобы следить за работой агента: какие рефлексы срабатывают, какие стили активны, как меняются параметры. Логи открываются из меню: Логирование — Логи системы / Логи стилей / Логи параметров.
Логи системы
Страница показывает пошаговую историю: что произошло на каждом пульсе — какое состояние, какой стиль, какой триггер, какие рефлексы и автоматизмы сработали. Это удобно для отладки и понимания поведения агента.
Колонки таблицы:
- Время — время записи
- Пульс — номер пульса
- Состояние — интегральное состояние агента (Плохо/Норма/Хорошо)
- Стиль — активный стиль реагирования
- Триггер — ID воздействия с пульта, если было
- ОР — ориентировочный рефлекс
- Б/у рефлекс — безусловный рефлекс
- Усл. рефлекс — условный рефлекс
- Автоматизм — ID автоматизма
- Цепочка РФ / Цепочка АВ — цепочки рефлексов и автоматизмов
Кнопка «Очистить» удаляет записи. Переключатель автообновления включает или выключает поступление новых записей в таблицу.
Логи стилей
Страница показывает, какие стили реагирования активны в тот или иной момент. По ним видно, какой параметр гомеостаза доминирует, в какой зоне находится значение и какие стили из этого вытекают.
Колонки таблицы:
- Время — время записи
- Пульс — номер пульса
- Доминирующий параметр — параметр гомеостаза, который сильнее всего влияет на стиль
- Зона — зона параметра (например, Норма, Возврат в норму)
- Активные стили — список стилей, которые в данный момент активны
Это помогает понять, почему агент ведёт себя именно так и как меняются его стили под влиянием параметров.
Логи параметров
Страница показывает значения всех параметров гомеостаза на каждом пульсе. В каждой колонке — один параметр: текущее значение, срочность, состояние, зона.
Что показывает каждая колонка параметра:
- Знач — текущее значение параметра
- Срочн — степень срочности
- Сост — состояние (Норма, Хорошо, Плохо и т.п.)
- Зона — номер зоны и границы зон
По этим данным видно, как меняется внутреннее состояние агента, и можно сравнивать параметры между собой. Кнопка «Очистить» очищает таблицу.
