бандит н-дро с эпсилон-жадной политикой - PullRequest
0 голосов
/ 08 ноября 2019

Я хочу понять эпсилон-жадную политику. Рассмотрим трехрукого бандита. Функции вознаграждения следующие:

arm1 : N(1, 0.5)
arm2 : N(0, 1)
arm3 : N(-2, 10)

Я хочу обучить агента на 1000 испытаний, используя политику ?-жадности с ?∈ {0.5,0.7,0.9} и построить среднее значениевознаграждение за каждое испытание, как я могу это сделать?

Спасибо!

1 Ответ

1 голос
/ 08 ноября 2019

?-жадная политика относится только к балансу между разведкой и эксплуатацией. И эпсилон должен быть одинаковым для всех рук. По сути, проблема многорукого бандита состоит в том, чтобы иметь несколько «рук», которые вы можете тянуть, как в игровых автоматах, и вам необходимо выяснить, какое действие лучше всего предпринять в каждой точке.

?-жадныйпомогает алгоритму выбирать между произвольным выбором руки и лучшей рукой в ​​соответствии с текущей оценочной величиной, которую вы сохранили для каждой руки в текущем состоянии. Например, для ? = 0,3 вы будете выбирать случайные действия в 30% случаев и выбирать действия в соответствии с вашей политикой в ​​70% случаев.

Политика может быть задана, например, наилучшим значением междуУсредненное вознаграждение от каждой руки. Пример псевдокода:

values = [0]*n_arms
t_visted = [0] * n_arms
eps = 0.3
for episode in range(1000):
    rnd = random between 0 and 1
    if rnd < eps:
        arm = Random between all arms
    else:
        arm  = Select maximum between "values" array

    t_visited[arm] += 1
    values[arm] += 1/(t_visited[arm]) * (reward - values[arm]) # update value for that arm

Награда рассчитывается по нормальному распределению, которое вы дали.

...