Общие принципы реализации среды

Архив Проекта | |

Пожалуйста, не редактируйте эту страницу! |






*Эта статья часть материалов*:**проекта RNAFoldingAI**

## Содержание

## Вопросы, которые нужно осветить

- Среда/Агент
- Матрица переходов
- Понятие эксперимента
- Сенсоры <- Состояния
- Эффекторы -> Действия

## Среда

*См. также*: Способы постановки эксперимента*См. также*: Q-learning

Файл:SupervisedLearningSystem.png | Файл:QLearning World.png | Файл:AU.png |

Вид нашего эксперимента обучение с подкреплением.
|
Представление среды в виде графа в марковских процессах принятия решений | Биологическая среда (нуклеотиды au) |


Файл:2RO2 1.jpg | Файл:2RO2 2.jpg |

Биологическая среда (последовательность 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.