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策略,下面让我们仔细看看这个函数。
- 函数参数:
obs
:当前环境的状态,智能体根据这个状态来选择动作。epsilon
:一个介于0和1之间的参数,用于控制探索和利用的平衡。当epsilon
较高时,智能体倾向于探索;当epsilon
较低时,智能体倾向于利用已知的信息。
- 函数内部:
- 首先,
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整数,表示所选择的动作。这表示智能体在利用已知的最佳策略。
- 返回值:
- 函数返回一个整数,表示智能体基于当前状态
obs
和epsilon-greedy策略选择的动作。
相信看到这里,你就差不多懂了,那么还需要给出epsilon、获取action的完整代码,我放一点,仅供参考
🤗 总结归纳
总结文章的内容
epsilon-greedy策略是一种简单有效的方法,用于平衡探索新策略的需要和利用当前最佳策略之间的关系。在强化学习的早期阶段,探索是重要的,因为智能体需要了解环境。随着学习过程的进行,利用变得更加重要,因为智能体开始更好地理解哪些动作在给定状态下是最优的。
在实际应用中,
epsilon
通常会随着时间或经过的episode数量逐渐减小,这样智能体就可以从更多的探索转变为更多的利用。📎 参考文章
有关这篇博客的任何问题,欢迎您在底部评论区留言,我会在github邮箱中第一时间收到邮件,让我们一起交流~
- Author:Zachary_Yang
- URL:https://notion-next-git-main-little1ds-projects.vercel.app//article/dqn-epsilon-greedy
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!