1、基于策略搜索的RL
之前介绍的都是基于值函数的RL,通过神经网络来毕竟值函数,然后通过greedy策略或者贪婪策略去选择action,基于值函数的RL存在一个缺陷,那就是动作空间必须是有限的且是离散的,当动作空间是连续的或者无穷大时便无法处理。此时基于策略搜索的RL就开始起到作用了

实际上觉得上面这个分类有点怪怪的


在不同的情形下,累积回报的期望是否最大的衡量方式是不同的

分类

其中应该还有逆强化学习,但是这个基本上没有被划分进去,而且讲解的也都是理论知识。

2、策略梯度
策略梯度的推导可以从似然率和重要性采样的角度来推导
2.1似然率




存疑:
最后一步的推理感觉很奇怪:

前面那个概率难道就省去了吗?为什么变成这个样子了呢?
![]()
为什么可以使用经验平均来获取呢?
2.2重要性采样

这里的第一个问题是:

这里是如何实现的呢?

第二个问题这里是如何推导出来的:


似然率策略梯度





为什么轨迹的似然率可以写成上面这个样子呢?



![]()


为什么上面这里会多上一个求和的操作?

证明:


除了上⾯介绍的增加基线的⽅法外,修改回报函数也可以进⼀步减⼩⽅差。


为了使方差最小,可以利用前面的方法求解相应的基线b
3、策略梯度实例

还是不是很清楚这个地方到底是怎么来的






with tf.name_scope('loss'):
# to maximize total reward (log_p * R) is to minimize -(log_p * R), and the tf only have minimize(loss)
#第二层网络传入的值
neg_log_prob = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=all_act, labels=self.tf_acts) # this is negative log of chosen action
# or in this way:
# neg_log_prob = tf.reduce_sum(-tf.log(self.all_act_prob)*tf.one_hot(self.tf_acts, self.n_actions), axis=1)
#计算loss值
loss = tf.reduce_mean(neg_log_prob * self.tf_vt) # reward guided loss
with tf.name_scope('train'):
self.train_op = tf.train.AdamOptimizer(self.lr).minimize(loss)
基于回合进行更新的,就是一次回合才会更新一次。
本文探讨了基于策略搜索的强化学习(RL)方法,对比基于值函数的RL,适用于连续或无限大的动作空间。深入解析策略梯度原理,包括似然率和重要性采样的推导,并提供了一个具体的策略梯度实例,展示了如何使用TensorFlow实现基于回合更新的策略梯度算法。
5522

被折叠的 条评论
为什么被折叠?



