Deep learning 如何保证演员选择正确的动作?
在深度确定性策略梯度(DDPG)算法的训练阶段,简单地进行动作选择Deep learning 如何保证演员选择正确的动作?,deep-learning,Deep Learning,在深度确定性策略梯度(DDPG)算法的训练阶段,简单地进行动作选择 action = actor(state) 其中,state是环境的当前状态,actor是一个深度神经网络 我不明白如何保证返回的操作属于所考虑环境的操作空间 例如,状态可以是大小为4的向量,动作空间可以是实数的区间[-1,1],或者[-1,1]x[-2,2]的笛卡尔积。为什么在执行action=actor(state)之后,返回的action将属于[-1,1]或[-1,1]x[-2,2],具体取决于环境 我在GitHub上阅
action = actor(state)
其中,state
是环境的当前状态,actor
是一个深度神经网络
我不明白如何保证返回的操作
属于所考虑环境的操作空间
例如,状态可以是大小为4
的向量,动作空间可以是实数的区间[-1,1]
,或者[-1,1]x[-2,2]
的笛卡尔积。为什么在执行action=actor(state)
之后,返回的action
将属于[-1,1]
或[-1,1]x[-2,2]
,具体取决于环境
我在GitHub上阅读了一些DDPG的源代码,但我在这里遗漏了一些东西,我无法找到答案。参与者通常是一个神经网络,参与者的动作的原因是[-1,1]中的限制通常是因为actor
网络的输出层使用了类似于Tanh
的激活功能,可以处理该输出以使操作属于任何范围
actor
之所以能够根据环境选择好的行为,是因为在MDP(Markov decision process)中,actor
在环境中进行反复试验,并对actor
做得好或坏得到奖惩,也就是说,actor
net获得了朝向更好的操作的梯度
注意:PPG、PPO、SAC、DDPG等算法可以保证参与者在理论上为所有状态选择最佳动作!(即假设学习时间无限,参与者净能力无限等)在实践中,通常没有保证,除非行动空间是离散的,环境非常简单
理解RL算法背后的思想将极大地帮助您理解这些算法的源代码,毕竟,代码就是这个思想的实现。我想知道这是否是一个更好的地方。因为动作是NN输出,所以输出层需要适合动作空间。例如,激活tanh的单个输出神经元只能从[-1,1]
输出。两个神经元和一些缩放可以让你[-1,1]x[-2,2]