You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ML-For-Beginners/translations/ru/8-Reinforcement/1-QLearning
leestott c7a68c1882
🌐 Update translations via Co-op Translator
1 year ago
..
solution 🌐 Update translations via Co-op Translator 1 year ago
README.md 🌐 Update translations via Co-op Translator 1 year ago
assignment.md 🌐 Update translations via Co-op Translator 1 year ago
notebook.ipynb 🌐 Update translations via Co-op Translator 1 year ago

README.md

Визуализация Q-Table

После выполнения алгоритма мы можем визуализировать обновленную Q-Table, чтобы увидеть, как изменились предпочтительные направления движения для каждого состояния. Используйте функцию plot() для отображения таблицы на игровом поле:

def qpolicy_strict(m):
        x,y = m.human
        v = probs(Q[x,y])
        a = list(actions)[np.argmax(v)]
        return a

walk(m,qpolicy_strict)

На каждом шаге вы увидите, как стрелки начинают указывать на оптимальные пути к яблоку, избегая волка и других препятствий.

Результаты обучения

Теперь, когда Q-Table обновлена, мы можем протестировать, насколько хорошо агент (Петр) справляется с задачей. Вместо случайного выбора действий, мы будем использовать значения из Q-Table для определения следующего шага. Это должно значительно сократить количество шагов, необходимых для достижения цели.

  1. Запустите тестовый эксперимент, используя обновленную Q-Table:

def qpolicy(m): x,y = m.human v = probs(Q[x,y]) a = random.choices(list(actions),weights=v)[0] return a

print_statistics(qpolicy)


2. Визуализируйте путь Петра к яблоку:

    ![Путь Петра](../../../../8-Reinforcement/1-QLearning/images/optimized_walk.gif)

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

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

В этом уроке мы изучили основы обучения с подкреплением и алгоритм Q-Learning. Мы научились:

- Определять среду и действия агента.
- Использовать функцию вознаграждения для оценки "хорошести" действий.
- Реализовывать алгоритм Q-Learning для обучения агента.
- Балансировать между исследованием и использованием известных данных.

Этот подход можно применять к множеству задач, где требуется оптимизация поведения агента в сложной среде. Попробуйте адаптировать этот алгоритм к другим сценариям и посмотрите, как он справляется!

## Проверка политики

Поскольку Q-Table содержит "привлекательность" каждого действия в каждом состоянии, использовать её для определения эффективной навигации в нашем мире довольно просто. В самом простом случае мы можем выбрать действие, соответствующее наибольшему значению в Q-Table: (блок кода 9)

```python
def qpolicy_strict(m):
        x,y = m.human
        v = probs(Q[x,y])
        a = list(actions)[np.argmax(v)]
        return a

walk(m,qpolicy_strict)

Если вы попробуете код выше несколько раз, вы можете заметить, что иногда он "зависает", и вам нужно нажать кнопку STOP в ноутбуке, чтобы прервать выполнение. Это происходит из-за того, что могут возникнуть ситуации, когда два состояния "указывают" друг на друга с точки зрения оптимального Q-значения, в результате чего агент бесконечно перемещается между этими состояниями.

🚀Задача

Задание 1: Измените функцию walk, чтобы ограничить максимальную длину пути определённым количеством шагов (например, 100), и посмотрите, как код выше иногда возвращает это значение.

Задание 2: Измените функцию walk, чтобы она не возвращалась в места, где уже была ранее. Это предотвратит зацикливание walk, однако агент всё равно может оказаться "запертым" в месте, из которого он не сможет выбраться.

Навигация

Более эффективной политикой навигации будет та, которую мы использовали во время обучения, совмещающая использование накопленных знаний и исследование. В этой политике каждое действие выбирается с определённой вероятностью, пропорциональной значениям в Q-Table. Эта стратегия всё ещё может привести к тому, что агент вернётся в уже исследованное место, но, как видно из кода ниже, она приводит к очень короткому среднему пути до нужного места (помните, что print_statistics запускает симуляцию 100 раз): (блок кода 10)

def qpolicy(m):
        x,y = m.human
        v = probs(Q[x,y])
        a = random.choices(list(actions),weights=v)[0]
        return a

print_statistics(qpolicy)

После выполнения этого кода вы должны получить значительно меньшую среднюю длину пути, в диапазоне 3-6.

Исследование процесса обучения

Как мы уже упоминали, процесс обучения — это баланс между исследованием и использованием накопленных знаний о структуре пространства задачи. Мы видели, что результаты обучения (способность агента находить короткий путь к цели) улучшились, но также интересно наблюдать, как средняя длина пути изменяется в процессе обучения:

Выводы из обучения:

  • Средняя длина пути увеличивается. На начальном этапе средняя длина пути увеличивается. Это, вероятно, связано с тем, что, не зная ничего об окружающей среде, мы склонны попадать в плохие состояния, такие как вода или волк. По мере того как мы узнаём больше и начинаем использовать эти знания, мы можем дольше исследовать среду, но всё ещё плохо знаем, где находятся яблоки.

  • Длина пути уменьшается по мере обучения. Когда мы узнаём достаточно, агенту становится легче достигать цели, и длина пути начинает уменьшаться. Однако мы всё ещё открыты для исследования, поэтому часто отклоняемся от оптимального пути и пробуем новые варианты, что делает путь длиннее, чем оптимальный.

  • Резкое увеличение длины. На графике также видно, что в какой-то момент длина пути резко увеличивается. Это указывает на стохастическую природу процесса и на то, что мы можем "испортить" коэффициенты в Q-Table, перезаписав их новыми значениями. Это желательно минимизировать, уменьшая скорость обучения (например, ближе к концу обучения мы корректируем значения в Q-Table только на небольшую величину).

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

Тест после лекции

Задание

Более реалистичный мир


Отказ от ответственности:
Этот документ был переведен с помощью сервиса автоматического перевода Co-op Translator. Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода.