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