强化学习-03--policy gradient

突然从基于值的算法到基于策略的算法,有点很难以理解,代码理解也不是那么顺畅。关于policy gradient的算法原理讲解的内容不较少,或者说所写的内容不容易让人理解,这里推荐下面这些链接供大家学习参考:
深度增强学习之Policy Gradient方法1
Policy gradient(策略梯度详解)

一、Policy Gradient算法

在这里插入图片描述

二、Policy Gradient算法新理解

1、与Q-learning,Sarsa,DQN的区别

(1)Q-learning,Sarsa,DQN:这些输出是状态动作的值,根据值的大小选择适当的动作。
policy gradient :输出直接是动作或者每个动作的概率,根据概率选择适当的动作。

(2)一个是value based,一个是policy based。

(3)Q-learning,Sarsa,DQN:有误差,减少loss,进行反向传播。
Policy Gradient:没有误差,根据奖励结果提高奖励大的动作的概率,降低奖励小的动作的概率。

(4)Q-learning,Sarsa,DQN:适用于离散动作
Policy Gradient:适用于连续动作

(5)Q-learning,Sarsa,DQN:单步更新,从一个状态,执行一个动作,到达下一个状态并获得奖励之后就进行更新。
Policy Gradient:回合更新,当一个episode执行完之后,获得总奖励,得到梯度,最后再进行参数更新。

2、理解

Policy Gradient算法的思想是先将策略表示成一个连续函数,然后用连续函数的优化方法去寻找最优的策略。最常用的是优化方法是梯度上升法(与最小化loss的梯度下降相对),这样,得先找出梯度优化的目标函数,有以下三种情况:
(1)最简单的优化目标就是初始状态收获的期望
(2)但是有的问题是没有明确的初始状态的,那么我们的优化目标可以定义平均价值
(3)或者定义为每一时间步的平均奖励

无论采用哪一种情况来表示优化目标,最终对参数求导的梯度都结果都是一样的可以表示为:
∇𝜃𝐽(𝜃)=𝔼𝜋𝜃[∇𝜃𝑙𝑜𝑔𝜋𝜃(𝑠,𝑎)𝑄𝜋(𝑠,𝑎)]
具体证明步骤可以参考策略梯度的论文附录1里面,有详细的证明过程。

Policy Gradient不通过误差反向传播,它通过观测信息选出一个行为直接进行反向传播,出人意料的是他并没有误差,而是利用reward奖励直接对选择行为的可能性进行增强和减弱,好的行为会被增加下一次被选中的概率,不好的行为会被减弱下次被选中的概率。

总的来说,可以这样理解Policy Gradient算法:根据当前policy参数采样得到N个Trajectory,计算一次期望reward,然后梯度上升的方法更新policy参数,用更新后的policy再进行下一轮采样,如此往复直到收敛,得到期望reward最大的policy。最终该policy(神经网络表示)就学会了根据游戏画面做合适的action,最终赢得游戏。

梯度上升 法方法更新policy参数:
在这里插入图片描述

3、Policy Gradient算法优缺点

优点:

  • 连续的动作空间(或者高维空间)中更加高效;
  • 可以实现随机化的策略;
  • 某种情况下,价值函数可能比较难以计算,而策略函数较容易。

缺点:

  • 通常收敛到局部最优而非全局最优;
  • 评估一个策略通常低效(这个过程可能慢,但是具有更高的可变性,其中也会出现很多并不有效的尝试,而且方差高)。

三、tips

在这里插入图片描述

这里列举了使用policy gradient算法的一个小tips,使用tips是让我们慢慢发现我们现在正在学的这个算法还要哪些不足,还可以怎么优化,如何去更改,逐步锻炼我们的思考能力,其实还有其他tips,想了解的同学可以看李宏毅老师的视频:
李宏毅深度强化学习(国语)课程(2018)

四、总结

这次策略梯度算法看了好长时间,莫烦Python的代码又看了大概三遍,才把代码完全看明白。建议在学习强化学习算法的时候要看,就一次性学明白,再进行下一个算法,不建议看一遍什么都看不懂,觉得好难就放弃了,这样到最后还是什么也没有学到。强化学习的小伙伴们加油哦!

参考链接:

【强化学习】Policy Gradient算法详解
强化学习(十三) 策略梯度(Policy Gradient)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面我将为您介绍一个简单的强化学习 policy gradient 的实例。 假设我们有一个小车在一条直线上移动,小车只能向左或向右移动一格,并且每次移动会消耗一定的能量。我们的目标是让小车尽可能快地到达终点,同时尽量少地消耗能量。 为了解决这个问题,我们可以使用 policy gradient 方法。具体来说,我们可以定义一个策略网络,它的输入是当前小车所处的位置,输出是一个概率分布,表示小车向左或向右移动的概率。我们使用该策略网络来生成小车的移动轨迹,并计算每个轨迹的总能量消耗和到达终点所需的步数。然后,使用 policy gradient 方法来更新策略网络的参数,使得总能量消耗最小化。 下面是具体的步骤: 1. 定义策略网络。假设我们使用一个简单的全连接神经网络,它的输入是当前小车所处的位置,输出是一个两维向量,表示小车向左或向右移动的概率。 2. 定义损失函数。我们使用交叉熵作为损失函数,即将策略网络的输出与实际移动方向的 one-hot 向量进行比较,并计算交叉熵损失。 3. 生成轨迹。使用当前的策略网络生成小车的移动轨迹,并计算每个轨迹的总能量消耗和到达终点所需的步数。 4. 计算梯度。使用 policy gradient 方法计算梯度。具体来说,对于每个轨迹,我们计算其总能量消耗和到达终点所需的步数与所有轨迹中的平均值的差异,并将该差异乘以该轨迹的梯度。最终,将所有轨迹的梯度进行平均,得到策略网络的梯度。 5. 更新策略网络参数。使用梯度下降或其他优化算法来更新策略网络的参数,使得总能量消耗最小化。 6. 重复步骤 3-5,直到策略网络收敛。 以上就是一个简单的强化学习 policy gradient 的实例。当然,在实际应用中,还需要考虑许多细节和优化,如使用基线来减小方差、使用函数逼近器来处理高维状态空间等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值