Алгоритм PPO сходится только на одном действии - PullRequest
0 голосов
/ 03 мая 2020

Я взял некоторые эталонные реализации алгоритма PPO и пытаюсь создать агента, который может воспроизводить космические захватчики. К сожалению, начиная со 2-го испытания и далее (после обучения актера и критиков c N Networks в первый раз), распределение вероятностей действий сходится только к действию, а потери PPO и потери критических c сходятся только к одному значению. .

Хотел понять возможные причины, по которым это может произойти. Я действительно не могу запустить код в моих облачных виртуальных машинах, не будучи уверенным, что я ничего не пропустил, поскольку виртуальные машины очень дороги в использовании. Буду признателен за любую помощь или совет в этом отношении .. если потребуется, я также могу опубликовать код. Используются следующие гиперпараметры:

clipping_val = 0,2 crit_discount = 0,5 entropy_beta = 0,001 гамма = 0,99 лямбда = 0,95

1 Ответ

0 голосов
/ 06 мая 2020

Одной из причин может быть то, что вы не нормализует входные данные для CNN в диапазоне [0,1] и, таким образом, насыщаете свои нейронные сети. Я предлагаю вам использовать функцию preprocess () в вашем коде для преобразования ваших состояний (входов) в сеть.

def preprocess(self,img):
    width = img.shape[1]
    height = img.shape[0]
    dim = (abs(width/2), abs(height/2))
    resized = cv2.resize(img,(80,105) ) #interpolation = cv2.INTER_AREA)
    resized = resized/255.0 # convert all pixel values in [0,1] range
    resized = cv2.cvtColor(resized, cv2.COLOR_BGR2GRAY)
    resized = resized.reshape(resized.shape+(1,))
    return resized
...