Мой алгоритм Deep Q Learning не улучшается, и я не понимаю, почемуPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Мой алгоритм Deep Q Learning не улучшается, и я не понимаю, почему

Сообщение Anonymous »

Я разработал алгоритм Q-обучения, который работает хорошо, поэтому я бы попытался использовать алгоритм DeepQ-обучения, чтобы изучить среду CartPole в среде тренажерного зала. Поэтому, основываясь на моем алгоритме Q-обучения, я безуспешно пытался развить его на алгоритме обучения DeepQ в течение 2-3 дней.
Моя проблема в том, что я просто не понимаю, почему это не работает:
  • Это потому, что я допустил глупую ошибку?
  • Это потому, что моя модель не сходится, потому что я обновляю ее на каждом шагу?
  • Это потому, что я не использую правильные гиперпараметры (эпсилон, альфа)?
Я здесь потому что сам не нашел ответа ^^
Чтобы решить мои проблемы:

[*]Попробуйте множество способов уменьшения значения эпсилона, чтобы сбалансировать исследование-эксплуатацию моей жадной политики эпсилон (также попробуйте исправить значение эпсилона)

[*]Попробуйте несколько вариантов параметры скорости обучения для моей нейронной сети (от 0,1 до 0,0001)

[*]Попробуйте найти глупую ошибку (очень надеюсь, что это не так, лол)< /p>

[*]Попробуйте другой тип оптимизатора (Адам, SGD)


Я действительно хочу настоять на том, чтобы найти в Интернете алгоритм обучения DeepQ, который решает эту проблему, но они использовали пакетное обновление, я действительно хочу понять, почему мой алгоритм не улучшается.
Я кстати, используйте Pytorch для нейронной сети.
Буду признателен за идею, почему это не работает !!!
Спасибо за чтение и вот мой код :)
Нейронная сеть:

Код: Выделить всё

class Neural_Network(nn.Module):
def __init__(self,lr=0.1,input_dims=2,fc1_dims=512,fc2_dims=512,output_dims=3):
super().__init__()

self.lr=lr

self.input_dims=input_dims
self.fc1_dims=fc1_dims
self.fc2_dims=fc2_dims
self.output_dims=output_dims

self.fc1=nn.Linear(input_dims,fc1_dims)
self.fc2=nn.Linear(fc1_dims,fc2_dims)
self.fc3=nn.Linear(fc2_dims,output_dims)

return

def forward(self,x):
x = T.tensor(x,dtype=T.float)

x = F.relu( self.fc1(x) )
x = F.relu( self.fc2(x) )
x = self.fc3(x)

return x
Код агента:

Код: Выделить всё

class Agent_DeepQ:
def __init__(self,lr=0.01, states_dims=2,nbr_actions=3):
self.gamma = 0.99
self.epsilon = 1

self.NN = Neural_Network(lr=lr, input_dims= states_dims, output_dims = nbr_actions)

self.input_dims = states_dims
self.nbr_actions = nbr_actions
self.lr = lr

return

def choose_greedy_action(self,state):
Q_Values = self.NN(state).detach()

a=np.argmax(Q_Values)

return a

def choose_epsilon_action(self,state):

#epsilon policy
if np.random.rand()= 100 ):
moving_average.append( np.mean(reward_history[-100:] ))

x=np.arange(100,len(moving_average)+100)
plt.plot(x,moving_average)
plt.show()

return agent
Скользящее среднее значение 100 последних эпизодов, в которых мы видим, что вознаграждение не улучшается

Подробнее здесь: https://stackoverflow.com/questions/785 ... rstand-why
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»