强化学习 - 在 800k 时间步之后,代理不会学习

数据挖掘 强化学习
2022-03-02 23:46:28

我正在学习并尝试强化学习。现在我正在使用健身房和稳定基线。

我的项目有一个步骤,我用函数计算奖励。

-> step()
-> calculate_reward()
-> 返回计算的奖励
-> 在 step() 中:我设置了 total_reward = -1000Done = True

但是代理每次都会中断这一步,因为它使用相同的动作。

Tick: 23
Price: 131.067600 - Next Price: 126.127800 - Action: 0 - Reward: 4.939800
Tick: 24
Price: 128.367200 - Next Price: 130.804100 - Action: 0 - Reward: -2.436900
Tick: 23
Price: 131.067600 - Next Price: 126.127800 - Action: 0 - Reward: 4.939800
Tick: 24
Price: 128.367200 - Next Price: 130.804100 - Action: 0 - Reward: -2.436900
Tick: 23
Price: 131.067600 - Next Price: 126.127800 - Action: 0 - Reward: 4.939800
Tick: 24
Price: 128.367200 - Next Price: 130.804100 - Action: 0 - Reward: -2.436900

我的概念有什么问题?我的笔记本 colab 是:https ://colab.research.google.com/drive/1HxjONW_QvYPagk7clUrUPFAkpJ59OwZ8?usp=sharing

1个回答

您可以更改 A2C 模型的一些参数,可能是学习率或 alpha/epsilon/gamma/momentum,例如:

model = A2C('MlpLstmPolicy', env, verbose=1, learning_rate=0.0001, alpha=0.001, momentum = 0.02)

或使用不同的 LSTM 架构,例如:

policy_kwargs = dict(net_arch=[64, 'lstm', dict(vf=[128, 128, 128], pi=[64, 64])])
model = A2C('MlpLstmPolicy', env, verbose=1,policy_kwargs = policy_kwargs)

我不知道哪个参数可能是最好的,这取决于您的数据。

请注意,股票市场可能需要数据缩放技术才能获得更好的结果。