Deep learning 如何保证演员选择正确的动作?

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上阅

在深度确定性策略梯度(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上阅读了一些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]