Эксперимент Обучения ИИ (искусственного интеллекта) — это особый тип эксперимента, предназначенный для выгрузки готовых для обучения с подкреплением (reinforcement learning) моделей AnyLogic на платформы, предназначенные для работы с нейросетями (ИИ).
В настоящий момент эксперимент обучения ИИ позволяет экспортировать модели AnyLogic на платформу Microsoft Project Bonsai. В будущем появятся и другие варианты интеграции.
Обратите внимание, что в настоящий момент эксперимент ИИ не подразумевает возможности запуска моделей с машинным обучением непосредственно в программе AnyLogic. Этот инструмент лишь предоставляет функциональность для подготовки моделей к выгрузке на специализированные ресурсы.
Чтобы узнать больше о способах внедрения AnyLogic в процесс обучения ИИ-агентов, посетите специальную страницу на веб-сайте AnyLogic.
Демо-модель: Activity Based Cost Analysis (RL)Чтобы подготовить модель к обучению с подкреплением — то есть, сделать ее подходящей основой для экспериментов обучения ИИ, — удостоверьтесь, что она отвечает следующим требованиям:
- У модели имеется набор регулируемых настроек (конфигурация), в которые можно вносить изменения перед каждым «прогоном»;
- Модель способна сообщать свое текущее состояние ИИ-агенту;
- В модели можно осуществлять действия, выбранные ИИ-агентом.
На некоторых платформах (например, Microsoft Project Bonsai) подразумевается, что в логику модели будут включены определенные точки (во времени), при достижении которых ИИ-агенту необходимо решить, какое действие предпринять следующим. Если вы используете подобные платформы в вашем процессе обучения, вам придется включить в модель такие точки принятия решений (decision points). Эти точки следует связать с событиями, требующими действий от ИИ-агента. Примерами таких событий являются:
- События, происходящие с определенным интервалом (например, каждые 2 дня модельного времени);
- События, соответствующие срабатыванию определенных механизмов внутри модели (например, переходы диаграммы состояний, события, происходящие при выполнении условия, а также действия, привязанные к библиотечным блокам).
При появлении этих событий ИИ-агент не реагирует автоматически — чтобы он предпринял какое-то действие, ему необходима точка принятия решения, сгенерированная в результате события. Ознакомьтесь с разделом ниже — Создание точки принятия решения.
Чтобы правильно настроить эксперимент обучения ИИ, ознакомьтесь с тремя основных определениями реализации этого эксперимента в AnyLogic. Все эти определения описывают некоторые числовые значения, которые используются при обучении ИИ-агента.
-
Наблюдения — это те значения, которые передаются ИИ-агенту в ходе обучения для дальнейшего анализа. Это могут быть статичные значения, используемые моделью, значения, полученные в результате вычислений внутри модели, и так далее.
- Действия — это значения, которые ИИ-агент рассчитывает в ходе «прогона» модели, а затем назначает переменным или функциям внутри модели прежде, чем перейти к следующему «прогону» (или «эпизоду», если использовать терминологию Project Bonsai).
- Конфигурация — это набор значений, определяющих состояние модели перед началом «прогона». Этот код выполняется перед стартом запуска каждого «прогона», осуществляемого в рамках обучения с подкреплением. При выполнении конфигурации агент верхнего уровня уже создан, но выполнение модели еще не началось.
Во внутренней структуре эксперимента обучения ИИ AnyLogic все эти значения являются Java-классами.
Эксперимент обучения ИИ можно использовать, чтобы задать и модифицировать все эти значения внутри модели еще до того, как начнется фактический процесс обучения с подкреплением в Project Bonsai.
Чтобы создать эксперимент обучения ИИ
- В панели Проекты щелкните правой кнопкой мыши (Mac OS: нажмите Ctrl и сделайте щелчок) по имени модели, для которой хотите создать новый эксперимент, и выберите Создать >
Эксперимент из контекстного меню.
-
Появится диалоговое окно Новый эксперимент.
ВыберитеОбучение ИИ из списка Тип эксперимента.
- Введите имя эксперимента в поле Имя.
- Выберите агента верхнего уровня для этого эксперимента из выпадающего списка Агент верхнего уровня.
- Если вы хотите применить к создаваемому эксперименту временные установки другого эксперимента, оставьте установленным флажок Копировать установки модельного времени из и выберите эксперимент из расположенного справа выпадающего списка.
- Щелкните по кнопке Готово.
Новый эксперимент появится в панели Проекты. Щелкните по нему, чтобы открыть его свойства.
Чтобы экспортировать модель и эксперимент, подготовленные для обучения с подкреплением
Чтобы экспортировать модель или эксперимент, выполните одно из следующих действий:
- Выберите любой из элементов модели в панели Проекты, после чего выберите Файл >
Экспорт >
Обучение ИИ из главного меню.
-
Щелкните правой кнопкой мыши по имени модели в панели и выберите пункт
Экспорт >
Обучение ИИ из контекстного меню.
Если элемент меню не активен, убедитесь, что модель содержит эксперимент обучения ИИ. - Появится окно мастера Экспорт модели. Выберите нужную платформу для обучения в выпадающем списке Платформа обучения ИИ и задайте нужные значения с помощью мастера.
Информация о каждой доступной платформе — в разделах ниже.
- Настройте эксперимент с обучением ИИ с помощью опций, доступных в секциях Наблюдение, Действие и Конфигурация свойств эксперимента обучения ИИ.
- Щелкните по ссылке Экспорт в Microsoft Bonsai, находящейся в верхней секции свойств эксперимента.
-
В открывшемся диалоговом окне, в поле Расположение ZIP-файла, укажите путь к директории, в которой хотите сохранить ZIP-файл эксперимента обучения ИИ, или
Щелкните по кнопке Выбрать... и откройте нужную директорию. После этого укажите желаемое имя ZIP-файла в поле Имя файла, затем щелкните по кнопке Сохранить. - Щелкните по кнопке Далее.
- На следующем шаге мастера щелкните по ссылке Microsoft Bonsai platform, чтобы открыть веб-сайт Microsoft Project Bonsai в браузере, который используется в системе по умолчанию, и следуйте предложенным инструкциям.
- Когда от вас потребуется предоставить ZIP-файл с моделью, щелкните по ссылке Показать zip-файл в окне мастера, чтобы перейти к расположению файла на компьютере.
- Щелкните по кнопке Готово, чтобы закрыть окно мастера.
- Продолжайте обучение ИИ на платформе Microsoft Project Bonsai.
- Основные
-
Имя — Имя эксперимента.
Поскольку AnyLogic генерирует для каждого эксперимента соответствующий Java класс, при задании имени эксперимента нужно руководствоваться правилами названия классов в Java. Пожалуйста, начинайте имя эксперимента с заглавной буквы.Исключить — Если опция выбрана, то эксперимент будет исключен из модели.
Экспорт в Microsoft Bonsai — Щелкните по этой ссылке, чтобы начать подготовку модели к экспорту на платформу Microsoft Project Bonsai.
Более подробная информация доступна в разделе выше.Агент верхнего уровня — Здесь задается агент верхнего уровня этого эксперимента. Агент этого типа будет играть роль корня иерархического дерева агентов модели, запускаемой этим экспериментом.
- Наблюдение
-
Поля с данными, которые передаются платформе обучения на каждом шаге — Объявляет переменные, определяющие пространство наблюдения.
Поддерживаются следующие типы переменных: int, double, double[]. Чтобы задать значения переменных, заполните поле Введите код, чтобы задать данные наблюдений из 'root'.Введите код, чтобы задать данные наблюдений из 'root' — Задает код, который ассоциирует числовые значения модели с полями с данными, указанными выше. Позволяет получать значения от агента верхнего уровня модели (root). Вы можете либо указывать непосредственно на количественные значения внутри модели, либо указывать на функции, возвращающие такие значения.
Условие остановки "прогона" — Задает условие остановки. «Прогон» модели прерывается, когда заданное в этом поле выражение возвращает true. Это можно использовать для остановки «прогона» в тех случаях, когда модель находится в нежелательном состоянии, или если продолжение выполнения эксперимента не принесет ценности в процесс обучения ИИ.
Позволяет получать значения от агента верхнего уровня модели (root). - Действие
-
Данные действий, возвращаемые с платформы обучения при каждом шаге — Указывает переменные, которые будут переданы модели после выполнения действия агентом.
Поддерживаются следующие типы переменных: int, double, double[]. Чтобы задать значения переменных, заполните поле Введите код, чтобы применить поля с данными действий к 'root'.Введите код, чтобы применить поля с данными действий к 'root' — Задает код, который назначает подсчитанные ИИ-агентом значения элементам внутри модели. Позволяет взаимодействовать с агентом верхнего уровня модели (root). Вы можете либо указывать непосредственно на количественные значения внутри модели, либо указывать на функции, возвращающие такие значения.
- Конфигурация
-
Данные о конфигурации, возвращаемые с платформы обучения для запуска нового "прогона" — Объявляет переменные, которые передаются модели перед началом «прогона».
Поддерживаются следующие типы переменных: int, double, double[]. Чтобы задать значения переменных, заполните поле Введите код, чтобы применить поля с данными о конфигурации к 'root'.Введите код, чтобы применить поля с данными о конфигурации к 'root' — Задает код, который назначает подсчитанные ИИ-агентом значения элементам внутри модели. Позволяет взаимодействовать с агентом верхнего уровня модели (root). Вы можете либо указывать непосредственно на количественные значения внутри модели, либо указывать на функции, возвращающие такие значения.
- Локальное обучение
-
В этом разделе свойств находятся ссылки, с помощью которых вы можете скачать программное обеспечение, необходимое для локального обучения вашего ИИ-агента.
- Модельное время
-
Остановить — Здесь вам нужно задать, когда вы хотите, чтобы моделирование было остановлено. Если вы хотите, чтобы моделирование продолжалось бесконечно, до тех пор, пока вы сами его не остановите, выберите из выпадающего списка Нет. Если же вы хотите, чтобы моделирование длилось до заданного времени или заданной даты, выберите здесь соответственно В заданное время или В заданную дату. В этом случае время остановки будет задаваться элементом управления Начальное время/Начальная дата.
Начальное время — Начальное время моделируемого интервала времени.
Начальная дата — Начальная календарная дата моделируемого интервала времени.
Конечное время — Конечное время моделируемого интервала времени (количество единиц модельного времени, по прошествии которого модель будет остановлена).
Конечная дата — Конечная календарная дата моделируемого интервала времени.
- Случайность
-
Генератор случайных чисел — В стохастических моделях важную роль играет заданное вами начальное число генератора случайных чисел — от этого будет зависеть, будут ли «прогоны» стохастической модели уникальными или воспроизводимыми. Здесь вы можете выбрать, хотите ли вы задать случайное число, чтобы «прогоны» были уникальными, фиксированное число, чтобы они были воспроизводимыми, или вообще задать свой собственный генератор случайных чисел вместо используемого AnyLogic по умолчанию.
В большинстве сценариев обучения с подкреплением подходит генератор, использующий Случайное начальное число, чтобы ИИ-агент мог обучаться в среде, демонстрирующей свою случайную природу. Фиксированное начальное число больше подходит для тестирования ИИ-агента по упрощенному сценарию, так как ему несвойственна вариативность, характерная для подходов, рассматривающих примеры из реального мира.Случайное начальное число (уникальные "прогоны") — Если опция выбрана, то «прогоны» модели будут уникальными и не смогут быть воспроизведены в силу того, что при каждом новом запуске модели генератор случайных чисел будет инициализироваться другим числом.
Фиксированное начальное число (воспроизводимые "прогоны") — Если опция выбрана, то генератор случайных чисел модели будет всегда инициализироваться одним и тем же начальным числом (оно задается в поле Начальное число), поэтому все запуски модели будут идентичными и воспроизводимыми.
Нестандартный генератор (подкласс класса Random) — Если по каким-либо причинам вас не устраивает качество стандартного генератора Random, то вы можете использовать вместо него ваш собственный ГСЧ. Для этого создайте его (это должен быть подкласс Java класса Random, например, MyRandom), выберите данную опцию и введите выражение, возвращающее экземпляр класса вашего ГСЧ, в расположенном справа поле, например: new MyRandom() или new MyRandom( 1234 ). Подробнее см. здесь. - Описание
- В этой секции находится поле, в котором вы можете составить описание эксперимента.
Чтобы указать, что определенное событие является точкой принятия решения для ИИ-агента (и от него требуется предпринять какое-то действие), вызовите статическую функцию ExperimentReinforcementLearning.takeAction(agent), передав в нее в качестве аргумента agent — любого агента вашей модели. Этот аргумент используется функцией для получения доступа к агенту верхнего уровня, в контексте которого будет выполняться вся необходимая в рамках эксперимента обучения ИИ работа с данными — например, получение данных наблюдений.
Наиболее частый пример: если событие находится внутри какого-либо агента, то Действие этого события должно содержать следующую строку:
ExperimentReinforcementLearning.takeAction(this).
-
Как мы можем улучшить эту статью?
-