Псевдокод для табличного алгоритма Сарсы в Python - PullRequest
0 голосов
/ 24 января 2019

Поэтому я пытаюсь изменить алгоритм Tabular Sarsa с помощью трассировки приемлемости в Python. Это алгоритм, которому я следую.

В моей ситуации у меня только одно состояние и пять действий. Поэтому мой Q (s, a) будет просто Q (a), а e (s, a) будет просто e (a) из-за того, что я никогда не переключаю состояния. Насколько я понимаю, алгоритм обновляет значения Q, которые затем обновляют трассу приемлемости. Поэтому моя идея состояла в том, чтобы иметь два одномерных массива и обновлять их вместе. Мой Q (s, a) будет Q (a1, a2, a3, a4, a5), а мой e (s, a) будет e (a1, a2, a3, a4, a5). Проблема у меня в том, как обновить эти два массива на основе табличного алгоритма сарсы. Я могу установить значения для своей скорости обучения, вознаграждения и т. Д., Чтобы включить их в формулу, но я не могу понять концепцию того, как будут обновляться эти массивы, и с чего начать даже псевдокод того, как это настроить. На данный момент, я просто установил мои значения на ноль, и я знаю, что массивы должны быть обновлены.

Этот алгоритм будет связываться с нейронной сетью для бота, которого я создаю. Нейронная сеть готова, мне просто нужна помощь с тем, как реализовать этот алгоритм. Единственный прогресс, который у меня сейчас есть, это установка значений равными значениям, установленным в алгоритме.

Qtable = [a1,a2,a3,a4,a5]
eTrace = [a1,a2,a3,a4,a5]

Ожидаемый результат должен обновлять самое новое действие как можно больше, а первое действие - как минимум. Таким образом, если мой бот делает что-то правильно, последнее выполненное действие будет вознаграждено и обновлено в наибольшей степени, а предыдущие действия для перехода на этот шаг также будут обновлены, но в порядке убывания. Если мой бот делает неправильное действие, последнее действие будет наказано больше всего, а предыдущие действия также будут наказаны.

...