Вопрос

Мне нужно поработать над 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, которая позволит вам хорошо представить ваше пространство.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top