PPO學習記錄

2021-10-05 07:49:58 字數 1469 閱讀 4306

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))

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,

openai **解讀:

莫煩**理解:

PPO 莫煩 ReLU啟用函式的缺點

morvanzhou def build anet self,name,trainable with tf.variable scope name l1 tf.layers.dense self.tfs,100,tf.nn.relu,trainable trainable 訓練的時候很 脆弱 很容易...

task 03 策略梯度及 PPO 演算法

在 reinforcement learning 中有 3 個components,乙個actor,乙個environment,乙個reward function。如果要 learn 的 agent 跟和環境互動的 agent 是同乙個的話,這個叫做on policy 同策略 如果要 learn 的...

mysql學習記錄 MySQL學習記錄 2

in 子查詢 select from student where id in 1,2 not in 不在其中 select from student where id not in 1,2 is null 是空 select from student where age is null is not...