Policy Gradient【强化学习的数学原理】

目录

[policy 与表格方式的区别:](#policy 与表格方式的区别:)

[metric to define optimal policies](#metric to define optimal policies)

[1. weighted averge](#1. weighted averge)

[2. the average reward](#2. the average reward)

问题:

梯度计算

如何理解policy-gradient?


policy gradient与表格方式(value based)的区别:

policy 通过参数化的函数来表示:

函数近似与表格方式的区别:

  1. 在状态空间很大时,相比表格形式会更高效

  2. 对最优策略的定义:

  • 表格形式:能够最大化每个状态值的策略是最优策略;

  • 函数形式:最大化certain scalar metrics的是最优策略;

  1. access action的概率:
  • 查表

  • 计算给定参数和函数结构下的值

  1. 更新policy:
  • 直接更改表中的值

  • 通过改变参数来更改

metric to define optimal policies

1. weighted averge

.

d(s)是一个概率分布。

. where

如何选择分布d?

  1. d独立与policy : 梯度更容易计算。这种情况下d -> , as

如何选择

  • 将所有状态看作同等重要的,

  • 只对特殊状态感兴趣。一些任务总是从相同的状态开始,所有我们只关心从 开始的长期:

  1. d 依赖于policy

, 其中P是状态转移矩阵。

如果一个状态经常被访问,那么它会产生更多的权重。相反,则是更少的权重

2. the average reward

weighted average one-step reward 或者average reward:

. 从状态s开始的one-step immediate reward

  • 从某个状态出发,跑无穷多步,reward的平均是:
  1. basic idea of policy gradient methods:
  • 这些metrics都是的函数,是由参数化的,这些metrics是的函数。

  • 通过最大化metrics来寻找最优的值;

  • 直觉上, 是短视的(只考虑即时reward),考虑了所有step的总共reward;

  • 但是,这两个metrics是彼此相等的(在discounted case中):

问题:

  • 这个metric与之前的关系?

clarify and understand this metric:

and

梯度计算

将其转换为期望的形式,就可以通过采样的方式来求解梯度:

如何转换得到的?

其中 要求是>0的,所以 采用softmax函数的形式,(对应网络中的激活层);策略是stochastic的且探索性的。

那么如果action是无穷多个怎么办?

gradient-ascent algorithm(REINFORCE)

采样:

也是未知的,可以通过采样来近似(MonteCarlo等)

如何来采样?

  • how to sample S? , distribution d is a long-run hehavior under

  • how to sample A ? , should be sampled following at

so , policy gradient is on-policy.

REINFORCE是online还是offline的?

如何理解policy-gradient?

其中

  • , 选择的概率被加强

可以很好的平衡exploration and exploitation

正比于分子,算法会倾向于加强有更大值的action

反比于分母,会探索有更小概率被选择的action

相关推荐
-dzk-14 小时前
【代码随想录】LC 59.螺旋矩阵 II
c++·线性代数·算法·矩阵·模拟
风筝在晴天搁浅15 小时前
hot100 78.子集
java·算法
Jasmine_llq15 小时前
《P4587 [FJOI2016] 神秘数》
算法·倍增思想·稀疏表(st 表)·前缀和数组(解决静态区间和查询·st表核心实现高效预处理和查询·预处理优化(提前计算所需信息·快速io提升大规模数据读写效率
超级大只老咪15 小时前
快速进制转换
笔记·算法
m0_7066532315 小时前
C++编译期数组操作
开发语言·c++·算法
故事和你9115 小时前
sdut-Java面向对象-06 继承和多态、抽象类和接口(函数题:10-18题)
java·开发语言·算法·面向对象·基础语法·继承和多态·抽象类和接口
qq_4232339016 小时前
C++与Python混合编程实战
开发语言·c++·算法
TracyCoder12316 小时前
LeetCode Hot100(19/100)——206. 反转链表
算法·leetcode
m0_7155753416 小时前
分布式任务调度系统
开发语言·c++·算法