Почему этот бинарный формат состояния так гораздо эффективнее, чем небинарный?

Вопрос или проблема

Я сам обучаюсь глубокому Q-обучению (и машинному обучению в целом), используя Python и TensorFlow, чтобы играть в Змейку. Мое первоначальное обучение в значительной степени было основано на этой статье. Я переписал это в своем собственном стиле программирования, и все работает хорошо.

Теперь я экспериментирую с различными параметрами и информацией о состоянии. Состояние для моей игры представляет собой массив из 11 значений, который выглядит так:

0 - Опасность на 1 шаг впереди
1 - Опасность на 1 шаг справа
2 - Опасность на 1 шаг слева
3 - Змейка движется влево
4 - Змейка движется вправо
5 - Змейка движется вверх
6 - Змейка движется вниз
7 - Еда слева
8 - Еда справа
9 - Еда выше
10 - Еда ниже

Все эти значения бинарные, либо 0, либо 1. Для эксперимента я хотел заменить элементы с 3 по 6 константами, которые я использую для направления.

DIR_UP = 1
DIR_RIGHT = 2
DIR_DOWN = 3
DIR_LEFT = 4

Таким образом, объект состояния будет массивом из 8 элементов, при этом 3-й элемент будет не бинарным:

0 - Опасность на 1 шаг впереди
1 - Опасность на 1 шаг справа
2 - Опасность на 1 шаг слева
3 - Направление движения змейки
4 - Еда слева
5 - Еда справа
6 - Еда выше
7 - Еда ниже

На мой взгляд, это все еще имеет ту же информацию, но в другом формате, однако DQN, по всей видимости, так не считает. После 150 итераций обучения в первом формате я получаю компетентную змейку, которая регулярно набирает 40 и более очков. Чтобы получить те же результаты во 2-м формате, мне пришлось провести 800 итераций с более медленным уменьшением эпсилон. А в тестировании (без какой-либо случайности) она все равно выбирает непрямые пути и периодически врезается в стену, чего, как мне казалось, следовало бы избежать.

Так что мой основной вопрос: что я не понимаю о формате состояния, что делает мой первый вариант намного более эффективным, чем второй?

А под-вопросы: состояния должны быть бинарными? Что если мне нужно учесть что-то, например, расстояние, что нельзя легко представить таким образом?

Большое спасибо за ваше время и мнение!

Вы увеличиваете пространство состояния, вводя не бинарные опции. Это увеличивает сложность, которую модели нужно изучить, чтобы достичь того же уровня производительности.

В частности, вы создаете вложенную структуру, что делает более трудным присвоение вознаграждения конкретной опции. Иерархические варианты: “Должна ли змейка двигаться?” затем “Если да, то в каком направлении?” замедляют процесс присвоения вознаграждения направленному движению. Плоская структура “Должна ли змейка двигаться вверх?” позволяет более прямо присвоить вознаграждение этому решению.

Ответ или решение

Вопрос о том, почему бинарный формат состояния оказывается более эффективным, чем небинарный, особенно в контексте обучения с подкреплением, является не только интересным, но и многоуровневым. Давайте подробнее рассмотрим, как это работает, основываясь на вашем примере с игрой Snake.

### 1. Простота структуры состояния

Бинарная структура состояния, где каждое значение может принимать только два состояния (например, 0 или 1), обеспечивает более простую и понятную модель для агента обучения без учителя. В вашем первом формате состояние представляется 11 элементами, где каждый из них отвечает за конкретный аспект игры, например, “Опасность на шаг вперед” или “Еда слева”. Это дает модели четкое и неразмытое представление о текущей ситуации, что значительно упрощает обучение.

С другой стороны, в небинарном формате, где направление движения представлено числами (например, DIR_UP = 1, DIR_RIGHT = 2 и т.д.), вы увеличиваете размер состояния и сложность модели. Теперь агента необходимо понимать, как различные числовые представления соотносятся друг с другом. Это делает обучение менее эффективным из-за добавления уровней неопределенности и вложенности.

### 2. Увеличение размерности состояния

При переходе от бинарного к небинарному формату вы увеличиваете размерность пространства состояний. Это может привести к проблеме «мертвых областей», когда алгоритм не может эффективно исследовать всю область, что затрудняет обучение. Увеличение размерности делает необходимым гораздо большее количество итераций, чтобы агент смог выявить оптимальные стратегии и научиться принимать верные решения.

### 3. Затрудненное распределение вознаграждения

При использовании небинарной модели образуется более сложная иерархия, где определение вознаграждения за конкретное решение становится менее прямолинейным. Ваша структура с бинарными значениями предоставляет более прямой путь для определения, что конкретное состояние (например, “Движение влево”) непосредственно связано с конкретным вознаграждением. При наличии небинарного представления у агента возникает необходимость сначала определить, следует ли двигаться вообще, а затем — в какую сторону, что усложняет процесс получения вознаграждений.

### 4. Качество представления информации

Бинарное представление информации более гибкое и способно явно различать состояния. Например, если в игре есть угроза, бинарная система может легко зафиксировать это (+1) или опустить (+0). А в небинарной системе часть информации может быть потеряна из-за сложности в представлении различных состояний, что, в свою очередь, снижает качество обучения модели.

### 5. Представление расстояний

По поводу вашего второстепенного вопроса о том, как учитывать расстояние: в таких случаях можно использовать нормализованные числовые значения или векторы, которые можно добавить в бинарное представление. Например, вместо того чтобы просто сигнализировать о наличии еды (0 или 1), можно использовать функцию, возвращающую расстояние до ближайшей еды, что обеспечит более детальную информацию, оставаясь при этом в рамках бинарной модели.

### Заключение

В общем, бинарный формат состояния значительно упрощает обучение агенту, так как он позволяет более эффективно исследовать пространство состояний, легче присваивать вознаграждения и упрощает процесс обучения. В вашем случае использование небинарного представления привело к увеличению сложности модели и дольше время на обучение. Применяя бинарные значения, вы предоставляете алгоритму более четкие сигналы о том, что нужно делать, и тем самым достигаете более быстрого и точного обучения.

Если у вас есть дальнейшие вопросы или нуждаетесь в помощи, не стесняйтесь обращаться!

Оцените материал
Добавить комментарий

Капча загружается...