强化学习基础:Epsilon-greedy 算法,多臂老虎机问题的理解,说点人话的强化学习,一定能看懂

这篇具有很好参考价值的文章主要介绍了强化学习基础:Epsilon-greedy 算法,多臂老虎机问题的理解,说点人话的强化学习,一定能看懂。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在强化学习中,epsilon-greedy可以说是非常基础的一个探索利用算法。应用十分广泛。尝试进行平衡的探索-利用方法。

在Epsilon-Greedy策略中,一个agent会以概率epsilon随机选择行动,也就是进行探索。此外以1-epsilon的概率选择当前估计的最佳行动,也就是利用 。

具体来说,如果epsilon=0,则代理总是选择当前估计的最佳行动;如果epsilon=1,则代理总是随机选择行动;在介于0和1之间的情况下,代理在每个时间步以概率epsilon随机选择行动,以概率1-epsilon选择当前估计的最佳行动。

Epsilon-Greedy的目的是在探索(尝试新的行动)和利用(选择当前估计的最佳行动)之间达到平衡。当代理刚开始学习时,它需要探索环境以找到最佳策略,这时epsilon应该设置为较高的值,以使代理更多地尝试不同的行动。随着代理的学习,它需要利用已知的知识来最大化奖励,此时epsilon应该设置为较低的值,以使代理更多地选择当前估计的最佳行动。

总的来说,Epsilon-Greedy是一种简单而有效的行动选择策略,可以平衡探索和利用之间的权衡,并在强化学习任务中表现良好。

在此,我们以强化学习中最基础最开端的多臂老虎机来做一个例子,代码如下:

import numpy as np
import matplotlib.pyplot as plt

class MultiArmedBandit:
    def __init__(self, num_arms, mu=0, sigma=1):
        self.num_arms = num_arms
        self.mu = mu
        self.sigma = sigma
        self.action_values = np.random.normal(self.mu, self.sigma, self.num_arms)
        
    def get_reward(self, action):
        reward = np.random.normal(self.action_values[action], self.sigma)
        return reward

class EpsilonGreedy:
    def __init__(self, num_actions, epsilon=0.1):
        self.num_actions = num_actions
        self.epsilon = epsilon
        self.action_values = np.zeros(num_actions)
        self.action_counts = np.zeros(num_actions)
        
    def select_action(self):
        if np.random.uniform() < self.epsilon:
            # 随机选择行动
            action = np.random.randint(self.num_actions)
        else:
            # 选择具有最高价值的行动
            action = np.argmax(self.action_values)
        self.action_counts[action] += 1
        return action
    
    def update_action_value(self, action, reward):
        self.action_values[action] += (reward - self.action_values[action]) / self.action_counts[action]
        

# 模拟多臂老虎机
num_arms = 10
num_steps = 1000
num_trials = 1000
eps = 0.1

avg_rewards = np.zeros(num_steps)

for i in range(num_trials):
    bandit = MultiArmedBandit(num_arms)
    agent = EpsilonGreedy(num_arms, epsilon=eps)
    rewards = np.zeros(num_steps)
    for t in range(num_steps):
        action = agent.select_action()
        reward = bandit.get_reward(action)
        agent.update_action_value(action, reward)
        rewards[t] = reward
    avg_rewards += (rewards - avg_rewards) / (i+1)
    
# 绘制结果
plt.plot(avg_rewards)
plt.xlabel('Steps')
plt.ylabel('Average Reward')
plt.title('Epsilon-Greedy Bandit')
plt.show()

在这个模拟中,我们首先定义了一个MultiArmedBandit类来表示多臂老虎机。在初始化函数中,我们设置了臂数和每个臂的均值和标准差,通过随机生成的方式给每个臂赋予不同的奖励期望。

然后我们定义了一个EpsilonGreedy类,其中包含了选择行动和更新行动价值的方法。在初始化函数中,我们设置了行动数和epsilon值,并将所有行动的估计价值和选择次数初始化为0。

在模拟中,我们通过循环多次试验,每次试验随机生成一个新的多臂老虎机,并使用Epsilon-Greedy策略选择行动,计算每个步骤的平均奖励。最后,我们计算所有试验的平均奖励,并绘制出结果图。

在实际使用中,需要根据任务和代理的特定要求,对epsilon的值进行调整,以达到最佳的性能和

最佳策略。较小的epsilon值会导致代理更多地选择已知的最佳行动,但可能会错过发现更优行动的机会;较大的epsilon值会导致代理更多地尝试未知的行动,但可能会导致代理的行动选择不够理智。

在上面的代码示例中,我们使用了一个较小的epsilon值(0.1),这意味着代理有10%的概率随机选择行动,而有90%的概率选择当前估计价值最高的行动。在多次试验中,我们观察到代理逐渐学习到哪些行动是最有利的,并开始偏向于选择这些行动。结果显示出代理在学习期间的初始探索阶段和稳定的利用阶段。

运行后我们得到如下结果:

epsilon greedy,说点人话的强化学习,算法,机器学习,人工智能,深度学习,python

对此我们可以看到,伴随着试验次数的增多,我们获得的最大回报也会增多。其实意味着我们对多臂老虎机中的概率分布获得了一个比较好的期望,于是我们每次拉下那个期望比较高的老虎机手臂,于是我们就可以获得更高的一个回报。

在开始阶段,我们不知道每个老虎机的回报期望,因此,我们更多的去进行探索,通过探索的次数越来越多,我们对老虎机的回报预估的越来越准,于是我们更多的选择期望高的老虎机进行操作,由此获得的回报越来越高。 文章来源地址https://www.toymoban.com/news/detail-627474.html

到了这里,关于强化学习基础:Epsilon-greedy 算法,多臂老虎机问题的理解,说点人话的强化学习,一定能看懂的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【强化学习】——Q-learning算法为例入门Pytorch强化学习

    🤵‍♂️ 个人主页:@Lingxw_w的个人主页 ✍🏻作者简介:计算机研究生在读,研究方向复杂网络和数据挖掘,阿里云专家博主,华为云云享专家,CSDN专家博主、人工智能领域优质创作者,安徽省优秀毕业生 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话

    2024年02月10日
    浏览(72)
  • 强化学习专题:回合更新算法

    游戏开始 玩家收到两张明牌,荷官发给自己一张明牌和一张暗牌 根据自己手中的牌和荷官的明牌,玩家需要决定是否要牌(Hit)或停牌(Stand) 选择要牌,荷官发一张额外的牌 如果玩家的牌总点数超过21点,即爆牌(Bust),该玩家输。 否则可以继续要牌直到停止 选择停牌

    2024年02月11日
    浏览(41)
  • 【机器学习】强化学习(三)蒙特卡洛算法

    策略迭代算法和价值迭代算法为什么可以得到理论上的最优解,在实际问题中使用价值有限? 无模型算法 三、蒙特卡洛算法 蒙特卡洛(Monte Carlo)方法是一种基于样本的强化学习算法,它通过执行和学习代理(也就是我们编程的AI)环境交互的样本路径来学习。它不需要初始知

    2024年01月19日
    浏览(57)
  • python算法中的深度学习算法之强化学习(详解)

    目录 学习目标: 学习内容: 强化学习 Ⅰ. 环境建模 Ⅱ . Markov决策过程

    2024年02月01日
    浏览(44)
  • 深度强化学习——DQN算法原理

    一、DQN算法是什么 DQN,即深度Q网络(Deep Q-network),是指基于深度学习的Q-Learing算法。 回顾一下Q-Learing:强化学习——Q-Learning算法原理 Q-Learing算法维护一个Q-table,使用表格存储每个状态s下采取动作a获得的奖励,即状态-价值函数Q(s,a),这种算法存在很大的局限性。在现实

    2024年02月02日
    浏览(56)
  • 基于动态规划的强化学习算法

    学习「强化学习」(基于这本教材,强烈推荐)时的一些总结,在此记录一下。 在马尔可夫决策过程 环境模型已知 (也就是状态转移函数P、奖励函数r已知)的情况下,我们可以通过 「动态规划」 求得马尔可夫决策过程的最优策略 (pi^*) 。 对于做过算法题目的同学而言,

    2024年03月09日
    浏览(42)
  • 【强化学习】常用算法之一 “SARSA”

      作者主页: 爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主 爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域. https://blog.csdn.net/Code_and516?type=blog 个人简介:打工人。 持续分

    2024年02月11日
    浏览(53)
  • 【强化学习】常用算法之一 “SAC”

      作者主页: 爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主 爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域. https://blog.csdn.net/Code_and516?type=blog 个人简介:打工人。 持续分

    2024年02月11日
    浏览(49)
  • 【机器学习】强化学习(二)基于动态规划的算法

    值函数可以分为状态价值函数和动作价值函数,分别适用于哪些强化学习问题 二、基于动态规划的算法 2.1 策略迭代算法 示例: 代码 首先定义了一些参数,如奖励、折扣因子、最大误差等,然后初始化了一个网格世界的环境,包括状态、动作、价值函数和策略。接着,它定

    2024年01月21日
    浏览(46)
  • 机器学习算法(三十):强化学习(Reinforcement Learning)

    目录 1 简介  1.1 什么是强化学习 1.2 强化学习的主要特点 1.3 强化学习的组成部分 2 强化学习训练过程  3 强化学习算法归类 3.1 Value Based 3.2 Policy Based 3.3 Actor-Critic 3.4 其他分类 4 EE(Explore Exploit)探索与利用 5 强化学习实际开展中的难点 6 强化学习的实际应用 6.1 自动驾驶

    2024年02月02日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包