?-жадная политика относится только к балансу между разведкой и эксплуатацией. И эпсилон должен быть одинаковым для всех рук. По сути, проблема многорукого бандита состоит в том, чтобы иметь несколько «рук», которые вы можете тянуть, как в игровых автоматах, и вам необходимо выяснить, какое действие лучше всего предпринять в каждой точке.
?-жадныйпомогает алгоритму выбирать между произвольным выбором руки и лучшей рукой в соответствии с текущей оценочной величиной, которую вы сохранили для каждой руки в текущем состоянии. Например, для ? = 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
Награда рассчитывается по нормальному распределению, которое вы дали.