莫煩強化學習筆記整理(八)Actor Critic

2021-10-25 10:32:12 字數 3467 閱讀 5602

2、actor critic 演算法

actor critic**.

actor 基於概率選行為, critic 基於 actor 的行為評判行為的得分, actor 根據 critic 的評分修改選行為的概率。

可以進行單步更新, 比傳統的 policy gradient 要快。

難收斂。為了解決收斂問題, google deepmind 提出了 actor critic 公升級版 deep deterministic policy gradient(ddpg) 後者融合了 dqn 的優勢, 解決了收斂難的問題。

# 用 tensorflow 建立 actor 神經網路,

# 搭建好訓練的 graph.

def learn

(self, s, a, td)

: # s, a 用於產生 gradient ascent 的方向,

# td 來自 critic, 用於告訴 actor 這方向對不對.

def choose_action

(self, s)

: # 根據 s 選 行為 a

with tf.

variable_scope

('exp_v'):

log_prob = tf.

log(self.acts_prob[

0, self.a]

) # log 動作概率

self.exp_v = tf.

reduce_mean

(log_prob * self.td_error) # log 概率 *

td 方向

with tf.

variable_scope

('train'):

# 因為我們想不斷增加這個 exp_v

(動作帶來的額外價值)

, # 所以我們用過 minimize

(-exp_v) 的方式達到

# maximize

(exp_v) 的目的

# 用 tensorflow 建立 critic 神經網路,

# 搭建好訓練的 graph.

def learn

(self, s, r, s_)

: # 學習 狀態的價值

(state value)

,不是行為的價值

(action value)

, # 計算 td_error =

(r + v_)

- v,

# 用 td_error 評判這一步的行為有沒有帶來比平時更好的結果,

# 可以把它看做 advantage

return # 學習時產生的 td_error

with tf.

variable_scope

('squared_td_error'):

self.td_error = self.r +

gamma

* self.v_ - self.v

self.loss = tf.

square

(self.td_error) # td_error =

(r+gamma*v_next)

- v_eval

with tf.

variable_scope

('train'):

self.train_op = tf.train.

adamoptimizer

(lr)

.minimize

(self.loss)

for i_episode in

range

(max_episode):

s = env.

reset()

t =0 track_r =

# 每回合的所有獎勵

while true:

ifrender

: env.

render()

a = actor.

choose_action

(s) s_, r, done, info = env.

step

(a)if done: r =

-20 # 回合結束的懲罰

track_r.

(r) td_error = critic.

learn

(s, r, s_) # critic 學習

actor.

learn

(s, a, td_error) # actor 學習

s = s_

t +=

1if done or t >=

max_ep_steps

: # 回合結束, 列印回合累積獎勵

ep_rs_sum =

sum(track_r)

if'running_reward' not in

globals()

: running_reward = ep_rs_sum

else

: running_reward = running_reward *

0.95

+ ep_rs_sum *

0.05

if running_reward >

display_reward_threshold

:render

= true # rendering

print

("episode:"

, i_episode,

" reward:"

,int

(running_reward)

)break

強化學習筆記整理

強化學習 自動進行決策並且可以做連續決策,包括agent 狀態 行動 獎勵四部分,目標是獲得最多的累計獎勵 原理 求解最優策略等價於求解最優的值函式 值函式選取策略更新的方式 原理 通過隨機取樣的經驗平均來估計期望值 一次實驗,學習速度慢,效率不高 步驟 agent與環境互動後得到互動序列,通過序列...

機器學習筆記(八) 強化學習

前面我們介紹的機器學習演算法都屬於人工餵給機器資料,然後機器從這些資料中學得模型。而我們人類的學習過程並不是這樣,人類通過自身的感官感知環境,而後從環境中獲得經驗 知識,因此單純地依靠前面所介紹的方法並不能實現通用人工智慧。那麼有沒有辦法使得機器也能自動地不斷從周圍環境中獲得經驗或 知識 呢?阿蘭。...

莫煩pytorch學習筆記

此處x,y為資料集的tensor torch dataset data.tensordataset data tensor x,target tensor y loader data.dataloader dataset torch dataset,batch size batch size,shu...