Epsilon-Greedy算法

ε-贪婪算法在机器学习领域广泛应用,尤其适用于多臂匪徒问题。本文详细介绍了该算法如何平衡探索与利用,通过实例解释了算法的具体运作过程。

翻译自 The Epsilon-Greedy Algorithm – James D.McCaffrey

epsilon-greedy算法(通常使用实际的希腊字母 ϵ \epsilon ϵ)非常简单,并且在机器学习的多个领域被使用。epsilon-greedy的一种常见用法是所谓的多臂匪徒问题(multi-armed bandit problem)。

在这里插入图片描述

假设你站在k = 3台老虎机前面。每台机器都会根据不同的概率分布进行支付,而你不知道这些分布。假设你总共可以玩100次。

你有两个目标。第一个目标是使用一些硬币以尝试确定哪台机器的支出最佳。第二个与此相关的目标是获得尽可能多的钱。术语“ explore”和“ exploit”用于表示您必须使用一些硬币进行探索(explore)才能找到最佳机器,并且你希望在最佳机器上使用尽可能多的硬币来利用(exploit)您的知识。

在玩游戏时,你会跟踪每台机器的平均收益。然后,选择当前平均收益最高的机器,概率为 ( 1 – ϵ ) + ( ϵ / k ) (1 – \epsilon)+(\epsilon / k) (1ϵ)+(ϵ/k),其中epsilon是一个很小的值,例如0.10。然后,您选择的机器的当前支出平均值不是最高,概率为 ϵ / k \epsilon / k ϵ/k

下面我们举个例子。假设在开始我们尝试了12次,为了得到平均收益

  • 其中4次玩1号机器,两次赢得1元,两次赢得0元。1号机器的平均值为 2/4 = 0.50元
  • 5次2号机器,赢得了3次1元和两次0元。2号机器的平均支出为3/5 =0.60元
  • 在3号机上玩了3次,一次赢了1元,两次赢了0元。3号机器的平均支出为1/3 = 0.33元

从第13次开始,你就需要选择一个机器尝试了。首先生成一个介于0.0和1.0之间的随机数p。假设 ϵ \epsilon ϵ设置为0.10。如果 p > 0.10 p> 0.10 p>0.10(有90%的机会),则选择2号机器,因为它具有当前最高的平均支出。但是,如果 p < 0.10 p <0.10 p<0.10(只有10%的时间),则选择一台随机计算机,因此每台计算机都有1/3的机会被选中。请注意,由于您是从所有计算机中随机选择的,因此2号计算机仍可能会被拾取。

随着时间的流逝,最好的机器会越来越频繁地被选择,因为选择它将得到更多的收益。简而言之, ϵ \epsilon ϵ贪婪意味着大多数时候都选择当前最佳选项(“贪婪”),但有时选择概率很小的随机选项。

还有许多其他算法可以解决多臂匪徒问题。但是epsilon-greedy非常简单,并且通常比UCB(“upper confidence bound”)等更复杂的算法有更好的效果。

### 老虎机问题中的Epsilon-Greedy算法老虎机问题中,目标是在一系列试验中最大化累积奖励。每一轮可以选择不同的“手”,并获得相应的随机奖励。为了实现这一目标,在选择动作时需要权衡探索(exploration)和开发(exploitation)。Epsilon-Greedy算法提供了一种简单而有效的方法来处理这个问题。 #### Epsilon-Greedy算法原理 该算法通过引入参数&epsilon;(epsilon),控制着行动决策的比例分配: - 否则,则选取目前估计价值最高的那个动作作为下一步操作[^1]。 这种方法确保了即使对于那些看起来不是最佳选项的行为也存在尝试的可能性,有助于发现潜在更好的解决方案;同时也能够集中精力于表现较好的方案上以获取更即时回报。 #### 动态调整Epsilon值 随着时间推移或迭代次数增加,可以通过逐步降低&epsilon;的方式让模型更倾向于基于已有经验做决定而不是盲目试探新事物。这被称为衰减型Epsilon贪婪策略(Decaying Epsilon Greedy),它能有效地促进学习过程向稳定状态过渡,并最终趋向最优解[^2]。 ```matlab function [best_action, Q_values] = e_greedy(Q, epsilon) nA = length(Q); if rand() < epsilon best_action = randi(nA); % Explore: choose a random action else [~, idx] = max(Q); best_action = idx; % Exploit: choose the greedy action with highest value estimate end Q_values = Q; end ``` 此段MATLAB代码实现了上述逻辑,其中`Q`表示各行为的价值评估数组,函数返回选定的最佳行为及其对应的质量估值列表。
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值