Обобщающие функции для Q-Learning - PullRequest
1 голос
/ 09 октября 2009

Мне нужно поработать с Q Learning о парне, который должен передвигать мебель по дому (в основном это так). Если дом достаточно маленький, у меня может быть просто матрица, которая представляет действия / награды, но по мере того, как размер дома увеличивается, этого будет недостаточно. Так что вместо этого я должен использовать какую-то функцию обобщения. Мой учитель предлагает использовать не один, а несколько, чтобы я мог сравнить их и так. Что вы, ребята, рекомендуете?

Я слышал, что для этой ситуации люди используют машины опорных векторов, а также нейронные сети. Я на самом деле не в поле, поэтому я не могу сказать. В прошлом у меня был некоторый опыт работы с нейронными сетями, но SVM кажется более сложным для понимания. Есть ли другие методы, которые я должен искать? Я знаю, что их должно быть около миллиона, но мне нужно кое-что только начать.

Спасибо

1 Ответ

2 голосов
/ 13 октября 2009

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

...