Точно так же, как освежая терминологию, в Q-learning вы пытаетесь изучить Q-функции, которые зависят от состояния и действия:
Q(S,A) = ????
Стандартная версия Q-обучения, преподаваемая в большинстве классов, говорит вам, что для каждого из S и A вам нужно выучить отдельное значение в таблице и рассказывает, как выполнять обновления Беллмана, чтобы сходиться к оптимальному значения.
Теперь предположим, что вместо таблицы вы используете другой аппроксиматор функции. Например, давайте попробуем линейные функции. Возьмите пару (S, A) и подумайте о множестве функций, которые вы можете извлечь из них. Одним из примеров функции является «Я рядом со стеной», другим - «Поместит ли действие объект рядом со стеной» и т. Д. Пронумеруйте эти функции f1 (S, A), f2 (S, A),. ..
Теперь попробуйте изучить функцию Q как линейную функцию этих функций
Q(S,A) = w1 * f1(S,A) + w2*f2(S,A) ... + wN*fN(S,A)
Как вы должны узнать вес w? Ну, так как это домашнее задание, я позволю вам подумать об этом самостоятельно.
Однако в качестве подсказки предположим, что у вас есть K возможных состояний и M возможных действий в каждом состоянии. Допустим, вы определяете функции K * M, каждая из которых является индикатором того, находитесь ли вы в определенном состоянии и собираетесь ли выполнить определенное действие. Так
Q(S,A) = w11 * (S==1 && A == 1) + w12 * (S == 1 && A == 2) + w21 * (S==2 && A==3) ...
Теперь обратите внимание, что для любой пары состояние / действие только одна особенность будет 1, а остальные - 0, поэтому Q (S, A) будет равно соответствующему w, и вы по сути изучаете таблицу. Таким образом, вы можете думать о стандартном Q-обучении за столом как об особом случае обучения с этими линейными функциями. Итак, подумайте, что делает обычный алгоритм Q-обучения, и что вы должны делать.
Надеюсь, вы найдете небольшую базу функций, значительно меньшую, чем K * M, которая позволит вам хорошо представлять свое пространство.