#machine-learning #dynamic-programming #reinforcement-learning #q-learning
#машинное обучение #динамическое программирование #подкрепление-обучение #q-learning
Вопрос:
В Q-learning, исходя из своего текущего состояния, агент выполняет действие на каждом дискретном временном шаге, и после выполнения действия агент получает немедленное вознаграждение за доступ к успеху или неудаче выполненного действия. Допустим, мы хотим контролировать скорость транспортного средства с помощью Q-learning, где действия являются целевыми скоростями, а цель агента — достичь стоп-линии (которая находится в 1 км от начальной точки) как можно быстрее.
1) Итак, в этом примере, нужно ли агенту выполнять действие на каждом дискретном временном шаге (1 сек), или агент может получать действие через каждые 100 м вместо каждого дискретного временного шага. Это обязательно для принятия мер на каждом дискретном временном шаге?
2) что подразумевается под отложенным вознаграждением в Q-learning? является ли это обновлением вознаграждения, как только агент достигает цели, вместо обновления вознаграждения после выполнения каждого действия на каждом временном шаге? Заранее спасибо 🙂
Ответ №1:
1) должен ли агент предпринимать действия на каждом дискретном временном шаге (1 сек), или агент может получать действие через каждые 100 м вместо каждого дискретного временного шага. Это обязательно для принятия мер на каждом дискретном временном шаге?
Я думаю, вы, возможно, путаете концепцию временного шага в Q-learning с нашей физической реализацией времени. В Q-learning каждый временной шаг — это время, когда наступает очередь агента сделать ход / предпринять действие. Итак, если игра в шахматы, то каждый временной шаг будет тогда, когда игроку пора играть. Итак, как часто ваш агент может выполнять действие, определяется правилами игры. В вашем примере мне не совсем ясно, каковы правила «игры»? Если в правилах указано, что агент может выбирать действие каждые 1 «секунду», то агент должен будет следовать этому. Если вы считаете, что это слишком часто, вы можете посмотреть, является ли «Нет» доступным вариантом действия для агента или нет.
что подразумевается под отложенным вознаграждением в Q-learning? является ли это обновлением вознаграждения, как только агент достигает цели, вместо обновления вознаграждения после выполнения каждого действия на каждом временном шаге?
Чтобы понять отложенное вознаграждение, возможно, поможет взглянуть на формулу. Как вы можете видеть, на значение Q на временном шаге t влияет не только старое значение Q и немедленное вознаграждение, но и «оцененное оптимальное будущее значение«. Это оцененное оптимальное значение (с настраиваемым коэффициентом скидки гиперпараметра) установлено для учета «отложенного вознаграждения».
Интуиция, лежащая в основе отложенного вознаграждения, заключается в том, что иногда одно действие может показаться плохим действием в данный момент (математически, совершив это действие, агент получил низкую немедленную награду или даже штраф), но каким-то образом это действие приводит к долгосрочной выгоде. Поместите это в свой пример, предположим, что агент находится в позиции P, есть два маршрута, чтобы добраться до стоп-линии. Один маршрут имеет прямое расстояние в 1 км, другой имеет небольшой крюк и имеет расстояние в 1,5 км. Агент выбирает маршрут протяженностью 1,5 км, возможно, он получит меньшую немедленную награду, чем выбор маршрута протяженностью 1 км. Давайте далее предположим, что на маршруте протяженностью 1,5 км ограничение скорости выше, чем на маршруте протяженностью 1 км, что фактически приводит агента к остановке быстрее, чем на маршруте протяженностью 1 км. Эта «будущая награда» является отложенной наградой, которую необходимо учитывать при вычислении значения Q (состояние в позиции P, действие по прохождению 1,5-километрового маршрута) на временном шаге t.
Формула может быть немного запутанной для реализации, поскольку она включает в себя будущее значение Q. Однажды я просто вычислил Q-значение на временном шаге t, не беспокоясь о задержке вознаграждения.
# @ time step t
Q(st, at) = Q(st, at) alpha * immedate_reward - alpha*Q(st, at)
Затем, после достижения временного шага t 1, я вернулся, чтобы обновить предыдущее значение Q на временном шаге t с отложенным вознаграждением.
# @ time step t 1
Q(st 1, at 1) = Q(st 1, at 1) alpha * immedate_reward - alpha*Q(st 1, at t)
Q(st, at) = Q(st, at) alpha * gama * max(Q(st 1, a))
Я надеюсь, что это поможет прояснить и ответить на ваш вопрос…
Комментарии:
1. Большое вам спасибо за пояснения. Теперь я получил четкое представление о временном шаге обновления.
2. @ Zhongyu Kuang.
3. Что касается вознаграждения за задержку,
4. что касается отложенного вознаграждения, основное преимущество метода Q-learning is (методы TD) заключается в том, что вам не нужно знать значения вознаграждения за каждый переход. Итак, если я обновляю функцию Q-value после выполнения каждого действия с немедленной наградой и предполагаемым будущим оптимальным значением, не нарушает ли это фундаментальное преимущество Q-learning? Допустим, что вдоль lkm агент выполняет 5 действий (10 км / ч, 20 км / ч, 40 км / ч, 60 км / ч и 50 км / ч) .. так должен ли я ждать, пока агент достигнет целевого состояния, чтобы обновить функцию Q-value? Или я могу обновлять его сразу после выполнения каждого действия?
5. «Переход» и «состояние» — это разные понятия в обучении с подкреплением. «Переход» был бы функцией состояния @ time step t, а затем выполнял бы действие @ time step t, а затем переходил в другое состояние @ t 1. Однако, если вы посмотрите на функцию Q-learning, Q-value явно является функцией состояния и действия на временном шаге, ему все равно, в какое другое состояние вы попадаете после выполнения действия. В вашем примере вы должны обновлять Q-значение после выполнения каждого действия.