一. 简述

在和环境不断交互的过程中,智能体在不同的状态下不停地探索,获取不同的动作的反馈。探索(Exploration)能够帮助智能体通过不断试验获得反馈,利用(Exploitation)是指利用已有的反馈信息选择最好的动作。因此如何平衡探索和利用是智能体在交互中不断学习的重要问题。

二. 什么是探索和利用?

场景假设:假设我们开了一家叫Surprise Me的饭馆,客人来了不用点餐,而是用算法来决定该做哪道菜。具体过程为:

(1)客人 user = 1,...,T 依次到达饭馆。

(2)给客人推荐一道菜,客人接受则留下吃饭(Reward=1),拒绝则离开(Reward=0)。

(3)记录选择接受的客人总数 total_reward。

为了由浅入深地解决这个问题,我们先做以下三个假设。

(a)同一道菜,有时候会做得好吃一些(概率=p),有时候会难吃一些

(概率 = 1−p),但是并不知道概率p是多少,只能通过多次观测进行统计。

(b)不考虑个人口味的差异,即当菜做得好吃时,客人一定会留下

(Reward=1);当菜不好吃时,客人一定会离开(Reward=0)。

(c)菜好吃或不好吃只有客人说的算,饭馆是事先不知道的。

探索阶段:通过多次观测推断出一道菜做得好吃的概率。如果一道菜已经推荐了k遍(获取了k次反馈),就可以算出菜做得好吃的概率

如果推荐的次数足够多,k足够大,那么 会趋近于真实的菜做得好吃的概率p。

利用阶段:已知所有的菜做得好吃的概率,决定该如何推荐?如果每道菜都被推荐了很多遍,就可以计算出每道菜做得好吃的概率 ,于是只需推荐 最大的那道菜。

探索和利用的平衡是一个经久不衰的问题。一是,探索的代价是要不停地拿用户去试菜,影响客户的体验,但有助于更加准确的估计每道菜好吃的概率;二是,利用会基于目前的估计拿出“最好的”菜来服务客户,但目前的估计可能是不准的(因为试吃的人还不够多)。

三. 如何平衡探索和利用?

如何平衡探索和利用呢?可以使用∈-greedy算法,即每当客人到来时,先以的概率选择探索,从N道菜中随机选择(概率为∈/N)一个让客人试吃,根据客人的反馈更新菜做得好吃的概率;然后,以1-∈的概率选择利用,从N道菜 中选择好吃的概率最高的菜推荐给用户。

∈-greedy算法也存在一些缺点,比如,在试吃次数相同的情况下,好吃和难吃的菜得到试吃的概率是一样的:有一道菜持续得到好吃的反馈,而另一道菜持续得到难吃的反馈,但在∈-greedy中,探索两道菜的概率是一样的,均为∈/N;在估计的成功概率相同的情况下,试吃次数多的和试吃次数少的菜得到再试吃的概率是一样的:假设有两道菜,第一道菜50人当中30个人说好,第二道菜5个人当中3个人说好,虽然两道菜的成功概率都是60%(30/50 = 3/5),但显然反馈的人越多,概率估计的越准。再探索时,应该把重心放在试吃次数少的菜上。

总结一下,∈-greedy生硬地将选择过程分成探索阶段和利用阶段,在探索时对所有物品以同样的概率进行探索,并不会利用任何历史信息,包括某道菜被探索的次数和某道菜获得好吃反馈的比例。

不妨让我们忘记探索阶段和利用阶段,仔细想想如何充分地利用历史信息,找到最值得被推荐的菜。

观测 1:如果一道菜已经被推荐了k遍,同时获取了k次反馈,就可以算出菜做得好吃的概率:

当k趋近正无穷时,p会趋近于真实的菜做得好吃的概率p。

观测 2:现实当中一道菜被试吃的次数k不可能无穷大,因此估计出的好吃的概率p和真实的好吃的概率p总会存在一个差值Δ。

基于上面两个观测,我们可以定义一个新的策略:每次推荐时,总是乐观地认为每道菜能够获得的回报是 +Δ,这便是著名的置信区间上界(Upper Confidence Bound,UCB)算法。最后只需解决一个问题:计算真实的概率和估计的概率之间的差值Δ。

四. 最新应用

推荐系统:推荐系统的常用方式,其主要是寻找损失函数评估可以使模型预测结果和即时用户相应之间差异最小化的模型。也就是表示,传统的推荐系统模型没有明确考虑到用户的长期兴趣。但用户的兴趣会根据其看到的内容随着时间而变化,而推荐者的行为可能会显著的受到此类变化的影响。

为了解决无模型任务的样本复杂度大的问题,基于模型的深度强化学习对解决推荐系统的问题更为可靠。该推荐系统框架使用统一的极小化极大框架学习用户行为模型和相关的奖励函数,然后再利用用户行为模型学习深度强化学习策略

博弈游戏:近年来,深度强化学习在游戏博弈的应用越来越广泛。特别适用于拥有巨大状态空间、庞大的动作空间、局部观察、多玩家同时在线游戏特性的游戏。

AlphaGo在初期版本中,通过与人类棋手的棋谱进行学习训练,学习到如何下围棋。AlphaGo Zero则跳过该步骤,通过自我对弈学习下棋,从零学起,因此也命名为Zreo。该算法系统从一个对为围棋一无所知的深度学习网络开始,将该深度神经网络和搜索算法结合,进行自我对弈。对弈过程中,深度神经网络不断调整、升级其参数,用于预测每一步落子的概率和最终的胜利者。

五. 总结

强化学习就是这样不断的对数据进行探索尝试,再将尝试得到的结果反馈到模型中,让参数得到优化,使得最终的模型性能最优。强化学习可以应用在拥有巨大状态空间、庞大的动作空间的任务场景中。

强化学习的探索和利用相关推荐

  1. 强化学习之探索与利用(一)

    探索与利用 在强化学习问题中,探索与利用是一对矛盾:探索尝试不同的行为继而收集更多的信息,利用则是做出当前信息下的最佳决定.探索可能会牺牲一些短期利益,通过搜集更多信息而获得较为长期准确的利益估计:利 ...

  2. 强化学习 之 探索与利用

    一.概念 Exploitation执行能够获得最优收益的策略 Exploration尝试更多可能的策略,不一定会是最优收益可能发现更好的策略 二.策略探索的原则 朴素方法贪心策略和 ϵ-greedy衰 ...

  3. 如何更高效地压缩时序数据?基于深度强化学习的探索

    简介: 随着移动互联网.IoT.5G 等的应用和普及,一步一步地我们走进了数字经济时代.随之而来的海量数据将是一种客观的存在,并发挥出越来越重要的作用.时序数据是海量数据中的一个重要组成部分,除了挖掘 ...

  4. 强化学习初探索——Q-table 举例,附可执行Python代码

    作为一个非专业初学爱好者,在看了一些强化学习教程之后决定从Q-table入门强化学习.我参考的资料很多,个人感觉下边这个链接https://mp.weixin.qq.com/s/34E1tEQMZua ...

  5. 强化学习之基于伪计数的探索算法

    ©作者|王治海 学校|中国科学技术大学硕士生 研究方向|强化学习与机器博弈 强化学习基于智能体与环境的交互,以最大化累积奖励为目标,学习状态到动作的映射(即策略).本文将主要围绕强化学习中的探索问题展 ...

  6. Transformer + RL:是强化学习魔高一尺,还是 Transformer 道高一丈? (1)

    引言:为什么 Transformer 在 RL 上不 work Transformer 最早发源于自然语言处理领域(NLP),以一个非常惊人的标题 "Attention is All You ...

  7. 干货!基于非递减分位数网络的值分布强化学习及其高效探索方法

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 尽管值分布强化学习在过去几年中得到了广泛的研究,但仍然存在两方面未能解决问题:一是如何保证估计出来的分位数函数的有效性,二是如何有效地利 ...

  8. 利用强化学习进行股票操作实战(四)

    本次实战代码仍是在之前基础上进行了一些修改.之前只在一支股票上进行训练,这次我将模型放在多支股票上训练,并在多支股票上进行了测试.对于多支股票的训练策略,没有参考过别人的训练方案(做这个的比较少).我 ...

  9. ACL2020 | 使用强化学习为机器翻译生成对抗样本

    2020-07-12 03:08:49 本文介绍的是 ACL 2020 论文<A Reinforced Generation of Adversarial Examples for Neural ...

最新文章

  1. 硬盘三步操作( 分区、格式化、挂载)
  2. 转载:JavaScript,JS如何控制input输入字符限制
  3. Win10系统下Visio安装失败问题
  4. python变量无需创建赋值_Python 第 2 章 变量及赋值运算符
  5. python图片重命名 工具_python - 请问django如何给上传的图片重命名
  6. 基于pytorch实现图像分类——理解自动求导、计算图、静态图、动态图、pytorch入门
  7. 【FLink】Flink Forward Asia Hackathon (2021) 回顾
  8. 北京发布人工智能产业政策,该如何高效关注行业动态、把握新机遇?
  9. 大数据时代的语音识别,方言也不怕?
  10. 剑指offer——复习1:二叉树三种遍历方式的迭代与递归实现
  11. 智能优化算法:龙格-库塔优化算法 - 附代码
  12. 大学物理复习5-角动量定理+角动量守恒定律
  13. 游戏测试和软件测试有什么区别?
  14. matlab求解mtsp多配送中心路径优化问题(附代码)
  15. 离散数学中 集合、关系、群 的证明方法(英文证明附例题)
  16. verilog HDLBits Verilog语法
  17. Python利用马青公式计算圆周率Π并写入文件
  18. Python程序设计实战:输出古诗实战
  19. MySQL表字段数量限制以及行大小限制
  20. codeforce 3B. Lorry(贪心)

热门文章

  1. APT之木马静态免杀
  2. Eclipse中Ant的使用
  3. mod_rewrite htaccess 简单使用
  4. 数字图像处理习题(三)
  5. myeclipse 6.5 注册码 myeclipse 6.0 注册码
  6. kill -9 进程 杀掉僵死进程
  7. ubuntu下常用软件下载安装
  8. 保险知识一:续期收费与续保的区别
  9. 苏州嵌入式软件方向知名公司
  10. 如何判断运行中的代码是调试模式(debug),还是运行模式