type
status
date
slug
summary
tags
category
icon
password
😀
epsilon-greedy I am greedy too!🤣🤣🤣
 

📝 主旨内容

epsilon-greedy

首先先给出一个函数
看不懂代码先不要慌张,先听我娓娓道来
dqn是一个常见的强化学习策略,我们首先有一个聪明的agent,和它所处的环境,我们在这成为env。那在强化学习前,我们没有数据怎么办?
是这样的,先让agent与环境进行交互,得到我们的数据,agent交互的动作就成为sample_action,sample_action怎么确定呢,我们这里选择了epsilon-greedy策略,也是dqn任务中常用的sample_action策略,下面让我们仔细看看这个函数。
  1. 函数参数
      • obs:当前环境的状态,智能体根据这个状态来选择动作。
      • epsilon:一个介于0和1之间的参数,用于控制探索和利用的平衡。当epsilon较高时,智能体倾向于探索;当epsilon较低时,智能体倾向于利用已知的信息。
  1. 函数内部
      • 首先,self.forward(obs)调用智能体的神经网络来获取当前状态obs下所有可能动作的Q值。
      • random.random()生成一个从0到1的随机数,用于决定是探索还是利用。
      • if coin < epsilon:如果随机数小于epsilon,智能体将随机选择一个动作(random.randint(0, 1))。这表示智能体在探索环境中未知的部分。
      • else:如果随机数大于或等于epsilon,智能体将选择Q值最高的动作(out.argmax().item())。out.argmax()找到Q值最大的动作的索引,.item()将输出转换为一个标准Python整数,表示所选择的动作。这表示智能体在利用已知的最佳策略。
  1. 返回值
      • 函数返回一个整数,表示智能体基于当前状态obs和epsilon-greedy策略选择的动作。
 
相信看到这里,你就差不多懂了,那么还需要给出epsilon、获取action的完整代码,我放一点,仅供参考

🤗 总结归纳

总结文章的内容
epsilon-greedy策略是一种简单有效的方法,用于平衡探索新策略的需要和利用当前最佳策略之间的关系。在强化学习的早期阶段,探索是重要的,因为智能体需要了解环境。随着学习过程的进行,利用变得更加重要,因为智能体开始更好地理解哪些动作在给定状态下是最优的。
在实际应用中,epsilon通常会随着时间或经过的episode数量逐渐减小,这样智能体就可以从更多的探索转变为更多的利用。

📎 参考文章

💡
有关这篇博客的任何问题,欢迎您在底部评论区留言,我会在github邮箱中第一时间收到邮件,让我们一起交流~
LLama3小羊驼DQN
  • Giscus
Zachary_Yang
Zachary_Yang
一个普通的干饭人🍚
Announcement
🎉欢迎来到我的博客🎉
-- 亲爱的读者们,你们好! ---
👏在这里,我希望能够和你们一起分享我对生活的观察、对技术的理解和热爱,暂将博客分为以下几个栏目👏
🌿 心绪漫卷边:一些小随笔
🌌 智绘非遇路:AI领域
😊 浅笑编程边:前后端开发
🛠 技术汇流石下:零散技术分享

祝好,
Zachary_Yang