Общие принципы реализации среды
Архив Проекта | |
Пожалуйста, не редактируйте эту страницу! |
- Эта статья — часть материалов: проекта RNAFoldingAI
Вопросы, которые нужно осветить
- Среда/Агент
- Матрица переходов
- Понятие эксперимента
- Сенсоры <- Состояния
- Эффекторы -> Действия
Среда
- См. также: Способы постановки эксперимента
- См. также: Q-learning
Вид нашего эксперимента обучение с подкреплением. | Представление среды в виде графа в марковских процессах принятия решений | Биологическая среда (нуклеотиды au) |
Биологическая среда (последовательность gggagaccugaaguggguuuccc) | Биологическая среда (последовательность gggagaccugaaguggguuuccc) |
Чем отличается представление среды в марковских процессах принятия решений от нашей постановки ? В первую очередь, тем что во внешней среде происходят действия независимо от наличия или отсутствия агента. Таким образом, моделируется естественный ход вещей в среде. В нашем случае в среде происходит случайный поиск все лучшей и лучшей позиции при которой РНК-цепь имеет наименьшую оценку энергии.
Важно отделить агента от среды. В реальных задачах это бывает не тривиально. В нашем случае в качестве агента будет выступать собственно цепь РНК. Средой для агента будет энергетическая поверхность окружающая цепь РНК и формирующая ее 3-х мерную поверхность.
Отсутствие матрицы переходов
Понятно, что в таком случае представлять среду в виде графа нет возможности. Среда представляет собой непрерывное множество состояний. (Замечание: на самом деле, реальное число состояний конечно и дискретно, но представляет собой астрономическое число, поэтому нет возможности это так рассматривать.)
В соответствии с этим нельзя ввести матрицу переходов. Казалось бы, это серьезным образом отдаляет нашу постановку от постановки в виде марковских процессов принятия решений с конечным числом состояний (MDP). На самом деле это не так. Матрица переходов в действительности не используется агентом при выполнении алгоритма обучения. Она нужна исключительно для моделирования поведения среды, как ограничения возможных переходов из состояния в состояние. А раз так нам совершено без разницы как будет моделироваться процесс сворачивания цепи РНК и какие ограничения при поворотах там заложены.
Постановка экспериментов
Класс Expirement - предназначен для управления ходом эксперимента. При этом экспериментатор может управлять как средой так и агентом. Эксперименты характеризуются длительностью (числом итераций поиска - IterationCount) и числом экспериментов (ExperimentCount). Каждый новый эксперимент начинается с исходного состояния, при котором РНК цепь полностью развернута и отличается лишь другим фактором случайности. Таким образом, за каждый эксперимент строится одна модель сворачивания цепи с соответствующей траекторией.
Наблюдающий агент
Любое интеллектуальное влияние начинается с наблюдения. Для того, чтобы подключится к наблюдению среды выполняется подписка на событие среды Observe с указанием метода агента, который будет осуществлять наблюдение. Между экспериментами среда ставится в исходное состояние и каждую итерацию прибавляется время (метод locWorld.NextTime).
public class Expirement
{
public void Run(int IterationCount, int ExperimentCount)
{
SJ.RNAWorld.RNAWorld locWorld = new SJ.RNAWorld.RNAWorld();
SJ.RNAAgent.RNAAgent locAgent = new SJ.RNAAgent.RNAAgent(1);
locWorld.Observe += new ObserveHandle(locAgent.Observe);
for (int n = 0; n < ExperimentCount; n++)
{
locWorld.CurrentPose = locWorld.StartPose.Clone();
locWorld.LowPose = locWorld.StartPose.Clone();
locWorld.CurrentState.TimeActionList = new List<int>();
locWorld.LowScore = float.MaxValue;
for (int i = 0; i < IterationCount; i++)
{
locWorld.NextTime();
}
}
}
}
public class RNAAgent : Agent
{
public void Observe(Sensor argSensor)
{
if (argSensor == null) return;
...
}
}
В метод Observe среда передаст заполненный объект «Сенсор» (Sensor), на основании которой агент сможет решить, что он увидел и использовать так или иначе полученные данные.
Влияющий агент
Как только агент накопил данные и решил повлиять на среду, ему нужно выполнить подписку на событие среды Influence с указанием метода агента, который будет влиять на среду.
public class Expirement
{
public void Run(int IterationCount, int ExperimentCount)
{
...
locWorld.Influence +=new Interaction(locAgent.Influence);
...
}
}
public class RNAAgent : Agent
{
public Effector Influence()
{
Effector.oAction = QLearning.WhatAction(this);
return Effector;
}
}
/// Виды действий
public enum ActionType
{
/// Естественное действие
Natural = 0,
/// Техногенное действие
Technogenic = 1
}
Задача агента в этом случае передать объект «Эффектор» (Effector), с заполненным действием которое он хочет осуществить. При этом важно, чтобы тип действия был Technogenic.