-
Install requirements:
pip install -r requirements.txt
-
Clone submodules
git submodule update --remote
-
Run training
python ppo_example.py
⭐️ Описание
Используется алгоритм PPO с дефолтным конфигом:
config["model"] = {
"conv_filters": [
[16, (3, 3), 2],
[32, (3, 3), 2],
[32, (3, 3), 1],
],
"post_fcnet_hiddens": [32],
"post_fcnet_activation": "relu",
"vf_share_layers": False,
}
Значение всех гиперпараметров тоже дефолтно: их tuning требует большего количества времени и ресурсов.
⭐️ Логирование метрик отражено тут (используется wandb).
⭐️ Функции вознаграждения
В рамках экспериментов были протестированы две функции вознаграждения. Результаты первой в логах зафиксированы под именем ppo_1, результаты второй – под именем ppo_2. Вторая функция более простая: она частично заимствует логику функции вознаграждения, описанной в лекции на слайде 21, и также подразумевает поощрение перехода к новым клеткам. Заимствованный из лекции кусочек функции кажется логичным потому, что в этой задаче в момент, когда неиследованных мест в сетке становится мало, находить эти точки становится сложнее, а сама награда становится разреженной. Первая функция, в отличие от второй, делает акцент на скорости, с которой мы изучаем местность. В ней появляются штрафы за повороты и поощрение за открытие неиследованных клеток в конце нашей экспедиции. По результатам экспериментов был сделан выбор в пользу модели со второй функцией вознаграждения – она показала лучший результат, чем функция вознаграждения 1; однако также был сделан вывод, что стоит попытаться потьюнить гиперпараметры / сменить PPO на другой алгоритм, поскольку в целом резутать мог бы быть лучше.