PPO学习记录

2020.4.23更新

1、ppo是一种on-policy,先利用old_pi进行一轮互动得到N个experience,用这些经验对策略进行多次训练更新得到new_pi,在此过程中限制new_pi的更新幅度(kl_pen和clip两种方法)

问题:限制了每次的更新幅度进行多次更新,和一次进行大幅度更新 有区别吗?

回答:OpenAI 提出的一种解决 Policy Gradient 不好确定 Learning rate (或者 Step size) 的问题. 因为如果 step size 过大, 学出来的 Policy 会一直乱动, 不会收敛, 但如果 Step Size 太小, 对于完成训练, 我们会等到绝望. PPO 利用 New Policy 和 Old Policy 的比例, 限制了 New Policy 的更新幅度, 让 Policy Gradient 对稍微大点的 Step size 不那么敏感.

2、REINFORCE算法

3、tf.distributions.Normal().prob()函数得到的数是均值为loc,方差为scale的正态分布中,在数5处的概率密度,所以会大于一

import tensorflow as tf

sess=tf.Session()
list=tf.distributions.Normal(loc=5.0,scale=0.1)

p=list.prob(5.0)
sess.run(tf.global_variables_initializer())

print(sess.run(p))

2020.4.20更新

tf.squeeze()函数,删除维度为1的维

squeeze(
    input,
    axis=None,
    name=None,
    squeeze_dims=None
)

该函数返回一个张量,这个张量是将原始input中所有维度为1的那些维都删掉的结果。axis可以用来指定要删掉的为1的维度,此处要注意指定的维度必须确保其是1,否则会报错

#  't' 是一个维度是[1, 2, 1, 3, 1, 1]的张量
tf.shape(tf.squeeze(t))   # [2, 3], 默认删除所有为1的维度

# 't' 是一个维度[1, 2, 1, 3, 1, 1]的张量
tf.shape(tf.squeeze(t, [2, 4]))  # [1, 2, 3, 1],标号从零开始,只删掉了2和4维的1

论文阅读

问题:

怎么表示策略pi的概率分布?

怎么表示新旧策略的KL散度?

莫烦代码中,ppo采用的是on-policy?只用前一个batch(32)次的互动数据,对actor进行M次更新。

1、初始化环境得到状态S

2、用策略pi选择action,

 

2020.4.22 代码下载阅读

openai 代码解读:https://blog.csdn.net/jinzhuojun/article/details/80417179

莫烦代码理解:

https://blog.csdn.net/zhisuihen6347/article/details/88380637

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章