|
|
## Проверка политики
|
|
|
|
|
|
Поскольку Q-таблица перечисляет "привлекательность" каждого действия в каждом состоянии, довольно легко использовать ее для определения эффективной навигации в нашем мире. В самом простом случае мы можем выбрать действие, соответствующее наивысшему значению в Q-таблице: (кодовый блок 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)
|
|
|
```
|
|
|
|
|
|
> Если вы попробуете код выше несколько раз, вы можете заметить, что иногда он "виснет", и вам нужно будет нажать кнопку ОСТАНОВИТЬ в блокноте, чтобы прервать его. Это происходит из-за того, что могут быть ситуации, когда два состояния "указывают" друг на друга с точки зрения оптимального Q-значения, в этом случае агенты будут бесконечно перемещаться между этими состояниями.
|
|
|
|
|
|
## 🚀Задача
|
|
|
|
|
|
> **Задача 1:** Измените `walk` function to limit the maximum length of path by a certain number of steps (say, 100), and watch the code above return this value from time to time.
|
|
|
|
|
|
> **Task 2:** Modify the `walk` function so that it does not go back to the places where it has already been previously. This will prevent `walk` from looping, however, the agent can still end up being "trapped" in a location from which it is unable to escape.
|
|
|
|
|
|
## Navigation
|
|
|
|
|
|
A better navigation policy would be the one that we used during training, which combines exploitation and exploration. In this policy, we will select each action with a certain probability, proportional to the values in the Q-Table. This strategy may still result in the agent returning back to a position it has already explored, but, as you can see from the code below, it results in a very short average path to the desired location (remember that `print_statistics`, чтобы он запускал симуляцию 100 раз): (кодовый блок 10)
|
|
|
|
|
|
```python
|
|
|
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-таблицы, перезаписывая их новыми значениями. Это, как правило, должно минимизироваться путем уменьшения скорости обучения (например, в конце обучения мы корректируем значения Q-таблицы лишь на небольшое значение).
|
|
|
|
|
|
В целом, важно помнить, что успех и качество процесса обучения значительно зависят от параметров, таких как скорость обучения, уменьшение скорости обучения и коэффициент дисконтирования. Эти параметры часто называют **гиперпараметрами**, чтобы отличить их от **параметров**, которые мы оптимизируем в процессе обучения (например, коэффициенты Q-таблицы). Процесс поиска лучших значений гиперпараметров называется **оптимизацией гиперпараметров**, и ему следует уделить отдельную тему.
|
|
|
|
|
|
## [Пост-лекционный тест](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/46/)
|
|
|
|
|
|
## Задание
|
|
|
[Более Реалистичный Мир](assignment.md)
|
|
|
|
|
|
**Отказ от ответственности**:
|
|
|
Этот документ был переведен с использованием машинных переводческих услуг на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неверные интерпретации, возникающие в результате использования этого перевода. |