Функции обобщения для Q-Learning
Вопрос
Мне нужно поработать над Q Learning, о парне, который должен передвигать мебель по дому (по сути, это так).Если дом достаточно мал, я могу просто иметь матрицу, представляющую действия/награды, но по мере увеличения размера дома этого будет недостаточно.Поэтому вместо этого мне придется использовать какую-то функцию обобщения.Мой учитель предлагает мне использовать не один, а несколько, чтобы я могла их и так сравнить.Что вы, ребята, рекомендуете?
Я слышал, что в этой ситуации люди используют машины опорных векторов, а также нейронные сети.На самом деле я не в поле, поэтому не могу сказать.В прошлом у меня был некоторый опыт работы с нейронными сетями, но SVM кажется гораздо более сложной для понимания.Есть ли какие-либо другие методы, которые мне следует искать?Я знаю, что их должно быть около миллиона, но мне нужно что-то, чтобы начать.
Спасибо
Решение
В качестве освежения терминологии в Q-обучении вы пытаетесь изучить 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, которая позволит вам хорошо представить ваше пространство.