Часть III • Продвинутые возможности глубокого обучения с TensorFlow.js
Как демонстрирует блок A на рис. 11.3, переменная
x
в каждый момент времени
захватывает местоположение тележки на рельсах. Мгновенная скорость тележки
обозначается
x'
. Кроме того, еще одна переменная,
θ
, захватывает угол наклона
шеста. Угловая скорость шеста (как изменяется
θ
и в каком направлении) обо
значается
θ
'. Все вместе эти четыре физические величины (
x
,
x'
,
θ
и
θ
') полностью
наблюдаются агентом на каждом шаге и составляют наблюдение данной задачи RL.
Моделирование завершается при выполнении одного из двух условий.
z
z
Значение
x
выходит за заданные пределы, или в физическом смысле тележка на
талкивается на одну из стен по сторонам рельсов (блок Б на рис. 11.3).
z
z
Модуль
θ
превышает определенное пороговое значение, или в физическом смыс
ле шест слишком сильно отклоняется от вертикального положения (блок В на
рис. 11.3).
Среда также завершает эпизод после 500го шага моделирования, предотвращая
слишком длительную игру (что случается, когда агент научился слишком хорошо
играть). Верхнюю границу количества шагов можно настраивать в UI. Агент по
лучает единичное вознаграждение (
1
) на каждом шаге моделирования вплоть до
завершения игры. Таким образом, чтобы получить максимальное суммарное воз
награждение, агент должен найти способ продержать шест вертикально как можно
дольше. Но каким образом он управляет системой «тележка — шест»? Тутто мы
и сталкиваемся с действиями в данной задаче RL.
Как показывают стрелки «Сила» в блоке A на рис. 11.3, агент на каждом ходе
ограничен двумя возможными действиями: приложение силы к тележке вправо
или влево. Агент должен выбрать одно из этих двух направлений приложения силы.
Величина прикладываемой силы фиксирована. После приложения силы модель
использует ряд математических уравнений для вычисления следующего состояния
(новых значений
x'
,
x'
,
θ
и
θ
') среды, описывающих классическую механику Ньютона.
Мы не станем углубляться в подробности этих уравнений, поскольку они для нас
неважны, но, если вам интересно, их можно найти в файле
cart-pole/cart_pole.js
.
Аналогично код визуализации системы «тележка — шест» на HTMLхолсте можно
найти в файле
cart-pole/ui.js
. Он подчеркивает преимущества написания алгорит
мов RL на языке JavaScript (в частности, на TensorFlow.js): возможность написания
UI и алгоритмов обучения на одном языке и тесной интеграции их друг с другом.
Что, в свою очередь, упрощает визуализацию и повышает интуитивную понятность
задачи, а также ускоряет процесс разработки. Резюмируем задачу удержания равно
весия шеста в тележке, описав ее в канонической постановке RL (табл. 11.1).
Do'stlaringiz bilan baham: |