blog icon indicating copy to clipboard operation
blog copied to clipboard

TensorFlow 2.0 (九) - 强化学习 70行代码实战 Policy Gradient | 极客兔兔

Open geektutu opened this issue 5 years ago • 6 comments

https://geektutu.com/post/tensorflow2-gym-pg.html

TensorFlow 2.0 入门系列文章,第九篇,使用强化学习算法策略梯度(Policy Gradient),实战 OpenAI gym CartPole,代码仅70行。

geektutu avatar Jul 06 '19 10:07 geektutu

博主有时间能写写DDPG算法吗,期待哈哈,感觉您的代码逻辑很强!

youwv avatar Nov 09 '20 09:11 youwv

@youstick 很高兴得到你的认可 😸,有时间会继续写的~

geektutu avatar Nov 10 '20 13:11 geektutu

你好,想问下为什么这里损失函数不用交叉熵sparse_categorical_crossentropy呢

YiKangOY avatar Mar 18 '21 00:03 YiKangOY

根据论文中的公式policy gradient损失函数不能用简单的mse,而是用交叉熵求对数。 博主写的不错,适合小白入手。然后对比了几个大佬的文章内容后,才搞明白。

wendyzhang1114 avatar Sep 30 '21 02:09 wendyzhang1114

想要請問為何程式碼中,訓練模型僅使用當回合的數據,policy gradient 不是要把過去玩的回合的數據一起納入訓練??

weslythisway avatar Dec 29 '23 01:12 weslythisway

while True: a = choose_action(s) next_s, r, done, _ = env.step(a) replay_records.append((s, a, r))

    score += r
    s = next_s
    if done:
        train(replay_records)

def train(records): s_batch = np.array([record[0] for record in records]) # action 独热编码处理,方便求动作概率,即 prob_batch a_batch = np.array([[1 if record[1] == i else 0 for i in range(ACTION_DIM)] for record in records]) # 假设predict的概率是 [0.3, 0.7],选择的动作是 [0, 1] # 则动作[0, 1]的概率等于 [0, 0.7] = [0.3, 0.7] * [0, 1] prob_batch = model.predict(s_batch) * a_batch r_batch = discount_rewards([record[2] for record in records])

model.fit(s_batch, prob_batch, sample_weight=r_batch, verbose=0)

是否是因为没有使用记忆回放,推荐你到B站看王树森的深度DRL课程,讲的很清楚。

WY @.***

 

------------------ 原始邮件 ------------------ 发件人: "geektutu/blog" @.>; 发送时间: 2023年12月29日(星期五) 上午9:34 @.>; @.@.>; 主题: Re: [geektutu/blog] TensorFlow 2.0 (九) - 强化学习 70行代码实战 Policy Gradient | 极客兔兔 (#19)

想要請問為何程式碼中,訓練模型僅使用當回合的數據,policy gradient 不是要把過去玩的回合的數據一起納入訓練??

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

youwv avatar Jan 04 '24 13:01 youwv