您的位置:首页 > 汽车 > 新车 > PPO代码理解

PPO代码理解

2024/11/17 11:40:51 来源:https://blog.csdn.net/qq_64671439/article/details/139796934  浏览:    关键词:PPO代码理解

目录

# Finding the ratio (pi_theta / pi_theta__old): ratios = torch.exp(logprobs - old_logprobs.detach()) 

advantages = rewards - state_values.detach()

surr1 = ratios * advantages

surr2 = torch.clamp(ratios, 1-self.eps_clip, 1+self.eps_clip) * advantages

loss = -torch.min(surr1, surr2) + 0.5*self.MseLoss(state_values, rewards) - 0.01*dist_entropy

为什么最大化用新旧策略概率比率乘以优势函数,即ratios * advantages这个式子就可以代表最大化收益?

详细解释一下上面回答的第一个公式,即策略梯度定理给出的策略参数的梯度形式

详细解释一下0.5*self.MseLoss(state_values, rewards)它的意义

为什么价值网络可以估计在给定状态下,智能体未来能获得的总奖励的期望值,它是怎么估计出来的?

详细解释一下0.01*dist_entropy它的意思

优势函数 A(s,a) 表示在状态 s 下采取动作 a 相对于平均水平的优劣程度。正值表示该动作优于平均水平,负值表示该动作劣于平均水平。为什么state_values可以代表平均水平

V(s)在代码中只是个神经网络呀,输入736个特征,输出一个值,为什么它就是对所有可能动作的期望奖励的估计

PPO的第二项:0.5*self.MseLoss(state_values, rewards),是让状态-动作值函数Q(s,a)接近状态值函数V(s),可是状态-动作值函数Q(s,a)意思是在某个状态 s 下采取动作 a 所能带来的预期奖励,而状态值函数V(s)意思是在状态 s 下采取所有可能动作的平均奖励,这两个不是一个东西呀,为什么损失函数想让他俩越接近越好

状态-动作值函数Q(s,a)意思是采取动作 a 所能带来的预期奖励,而状态值函数V(s)意思是采取所有可能动作的平均奖励,采取的动作都不一样,为什么要让他们接近

状态-动作值函数Q(s,a)意思是采取动作 a 所能带来的预期奖励,而状态值函数V(s)意思是采取所有可能动作的平均奖励,采取的动作都不一样,状态值函数V(s)神经网络的意思是让采取所有可能动作的平均奖励接近采取动作 a 所能带来的预期奖励吗


# Finding the ratio (pi_theta / pi_theta__old): 
ratios = torch.exp(logprobs - old_logprobs.detach()) 

# Finding the ratio (pi_theta / pi_theta__old): 
ratios = torch.exp(logprobs - old_logprobs.detach())

 


advantages = rewards - state_values.detach()

advantages = rewards - state_values.detach()


surr1 = ratios * advantages

surr1 = ratios * advantages


surr2 = torch.clamp(ratios, 1-self.eps_clip, 1+self.eps_clip) * advantages

surr2 = torch.clamp(ratios, 1-self.eps_clip, 1+self.eps_clip) * advantages


loss = -torch.min(surr1, surr2) + 0.5*self.MseLoss(state_values, rewards) - 0.01*dist_entropy

loss = -torch.min(surr1, surr2) + 0.5*self.MseLoss(state_values, rewards) - 0.01*dist_entropy


为什么最大化用新旧策略概率比率乘以优势函数,即ratios * advantages这个式子就可以代表最大化收益?

\pi代表策略,某个状态在该策略下选择该动作的概率乘以选择该动作后的收益,最大化这个值。期望E是对一批数据求平均。 


详细解释一下上面回答的第一个公式,即策略梯度定理给出的策略参数的梯度形式


详细解释一下0.5*self.MseLoss(state_values, rewards)它的意义


为什么价值网络可以估计在给定状态下,智能体未来能获得的总奖励的期望值,它是怎么估计出来的?


详细解释一下0.01*dist_entropy它的意思


优势函数 A(s,a) 表示在状态 s 下采取动作 a 相对于平均水平的优劣程度。正值表示该动作优于平均水平,负值表示该动作劣于平均水平。为什么state_values可以代表平均水平


V(s)在代码中只是个神经网络呀,输入736个特征,输出一个值,为什么它就是对所有可能动作的期望奖励的估计


PPO的第二项:0.5*self.MseLoss(state_values, rewards),是让状态-动作值函数Q(s,a)接近状态值函数V(s),可是状态-动作值函数Q(s,a)意思是在某个状态 s 下采取动作 a 所能带来的预期奖励,而状态值函数V(s)意思是在状态 s 下采取所有可能动作的平均奖励,这两个不是一个东西呀,为什么损失函数想让他俩越接近越好


状态-动作值函数Q(s,a)意思是采取动作 a 所能带来的预期奖励,而状态值函数V(s)意思是采取所有可能动作的平均奖励,采取的动作都不一样,为什么要让他们接近


状态-动作值函数Q(s,a)意思是采取动作 a 所能带来的预期奖励,而状态值函数V(s)意思是采取所有可能动作的平均奖励,采取的动作都不一样,状态值函数V(s)神经网络的意思是让采取所有可能动作的平均奖励接近采取动作 a 所能带来的预期奖励吗

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com