Не могли бы вы помочь мне решить эту проблему:
Насколько нам известно, функция вознаграждения является важнейшим компонентом обучения подкреплению.Но редкое вознаграждение (такое как r∈ {+1, -1}) не могло получить быструю сходимость.Поэтому я стараюсь использовать непрерывную функцию в качестве своей функции вознаграждения, функцию вознаграждения мягкого шага.Ниже приведена оригинальная функция вознаграждения , которая взята из статьи, опубликованной OpenAI о HalfCheetah .
# original reward function
r = 0 , if x ≤ 0
r = 2 * x^2, if 0 < x ≤ 0.5
r = 1 - 2(x - 1)^2, if 0.5 < x ≤ 1
r = 1, if x > 1
ps ^
означаетpower
И я могу дать отрицательное вознаграждение, когда агент совершил очень плохое действие, поэтому я изменил вышеуказанную функцию мягкого шага на:
# modified reward function
r = -1, when x ≤ -0.1
r = 0, when -0.1 ≤ x ≤ 0.1
r = 2 * x^2, when 0.1 < x ≤ 0.5
r = 1 - 2(x - 1)^2, when 0.5 < x ≤ 1
r = 1, when x > 1
Нона самом деле, производительность вышеописанной модифицированной функции вознаграждения была не очень хорошей, что привело к практически неизменным действиям для следующего шага.Это звучит очень плохо.С другой стороны, первоначальная функция вознаграждения, по-видимому, не соответствовала измененной.
Не могли бы вы сказать, почему модифицированная функция вознаграждения стала хуже работать?
А как мне оформить действительное вознаграждение, если я хочу назначить отрицательное наказание агенту?