【强化学习算法】常见应用
置顶
猪腰子3 发布于2019-02-20 浏览:8112 回复:8
2
收藏
最后编辑于2021-01-05

上篇我们介绍了强化学习算法的基本原理,接下来介绍此算法的一些常见应用。

强化学习应用-1.推荐系统

2011年之前,强化学习主要用于Intelligent Robotics等控制问题。2012-2013年,强化学习伴随深度学习的高涨逐渐火热起来。2012年,百度已开始将multi-armed bandits用于搜索排序。2014-2017年,百度将强化学习用于对话系统,广告定价,新闻推荐等场景;在学术上,也发布了首个AGI评测环境XWorld。2018-19年,百度在强化学习工具,研究,应用方面开始全面铺开。

对于推荐类问题来说,工业界的推荐系统早期比较成熟的方法包括协同过滤,CTR预估等。而现有推荐系统有两个尚未解决得很好的问题,也是业界研究热点:

1)intra-list correlations:考虑列表里的内容关联。现有推荐系统通常针对用户推荐一个列表,而不是一个一个内容推荐,因此内容之间的组合关联就会有影响。传统的多样性推荐等技术,其实都在解决这个问题。

2)inter-list correlations:考虑的是列表页间的时序关联,即内容本身对用户的价值,随着时间和交互次数的增加而动态变化。

百度基于新闻资讯推荐场景,对这两个层级的问题都开展了相应研究工作,并且均涉及强化学习技术:

在intra-list correlation角度,以往经典做法认为列表内的item之间是相互独立的,以此来预估CTR,又被称为item-independent prediction。

多样性是在此基础上的一个改进,即以整个组合来考虑推荐内容,而不单纯只考虑item自身。学术界对多样性理论的研究包括DPP,Submodular Ranking等方法[2][3]。Submodular实际上就是对“边际效用递减”这个说法的形式化,通俗的说,把所有商品看成一个集合,随着所拥有的商品数量的增加,那么获得同类商品的满足程度越来越小。在推荐系统中,在上文推荐的基础上进行重新估计,例如下面的图中,第i次新闻推荐内容项为,第i+1次推荐的内容需要考虑去掉已推荐过的相似内容,考虑用户感兴趣的topic空间,给用户推荐的应该是月牙形区域的内容,这便是submodular中的net gain的定义。DPP的做法也类似。

然而,目前对于多样性的研究缺乏统一的目标定义,多样性也不对最终用户反馈直接负责,导致多样性效果很难客观衡量,往往只能主观调节。

                                                          Submodular排序Net-Gain的计算

基于此背景,百度提出了列表页内组合优化框架,整合了学术界对列表页框架的认识。这个框架包括多个方面贡献:1. 提出了完全以用户反馈utility来衡量列表页内组合是否合理的方法。2. 提出了评价-生成的框架来解决组合优化的局部和全局最优的问题,以及off-policy训练的问题。3. 提出了不少新的模型结构,包括Recursive网络,Transformer网络等,用于更加通用地建模列表页内的组合,不仅包括两两关联组合,包括更高阶的组合,正向反向的组合等。百度相关产品在2017年底就上线了序列优化框架,相对于以往很多方法已经取得了不少收益,相关的成果已发表论文[4]。

建模列表页内内容的一些模型和方法

Evaluator – Generator列表组合排序框架

而在inter-list correlation角度,对于新闻推荐这类产品的列表间优化,强化学习面临一个难题是variance过大,可能导致准确率下降。过去Google,京东发表的一些论文,针对这个问题,较为机械地用传统强化学习方法来解决。但是这些方法往往因为定义过大的action空间,以及过长的MDP,导致准确性下降。而且这些成果,大部分都是在理想的实验环境,而非真正的线上环境使用。百度多年前针对机械使用强化学习技术的尝试也发现,对于线上极大规模的排序或者推荐的列表页间的交互优化并没有实际优势。目前百度正在采用Credit Assignment这类新的算法,以更好地解决这些问题,不久之后会发布这些成果。 

强化学习应用-2.对话系统

对话系统可以分为任务型对话系统(Task Oriented Dialogue System)和开放对话系统(Open Domain Dialogue System),经典的任务对话系统结构如下。在对话管理中,强化学习可以起到非常重要的作用。

任务型对话系统流程

百度早在2012年就开始任务型对话系统的探索,其中一个早期的强化学习实验是2012-2013年做的点餐系统。这是一个百度内部员工使用的外卖订餐Demo。这个Demo基于一些NLU的特征,以及一些对话NLG的模板,利用LSTD模型来迭代对话管理逻辑。这个Demo设计的反馈也很粗糙,就是内部员工自己来标注。这个项目拿到一些结论,但整体不是很理想。

百度早期探索的对话式点餐系统

之后百度在各种垂类对话系统上进行了进一步的的实验。其中比如聊天气的垂类对话。它的特征相对点餐系统多一些,投入的人工评估和标注的资源也更多。最终效果上,有些指标能够超越人精心设计的规则策略。

百度早期探索的聊天气对话系统

这之后,随着深度学习的兴盛,学术界也产生了一些成果。如2016年WenTsung-Hsien提出端到端面向任务对话系统[5],使用神经网络把四个模块综合起来,所有模块中的状态都可训练,相对以前工作有较大进步。利用深度强化学习结合端到端的对话模型,在足够的数据下,任务型对话系统可以达到比较理想的效果。

与任务型对话系统不同,开放式对话系统的潜力更大,难度也更高。百度早期做过一些尝试,比如聊天系统中的对话引导功能,引导用户提出下一句可能的问题。这功能的传统做法是通过语义匹配(semantic matching)网络来学习选择用户点击概率高的引导项,而通过强化学习来提升语义匹配网络的效果,使得语义匹配可以不单单考虑当前的点击概率,而是可以考虑后续的可能引导给出最佳的选择。

通用引导对话逻辑

在开放式对话方向的研究基本可以分为基于检索、自动生成两种方式。检索方式受限于有限的语料库,对于最终解决开放式对话问题而言,生成方式更具有潜力。而业界对于开放域的对话的生成,尚没有标准的解决方案。从2015年开始,端到端神经网络开始逐渐展现潜力。而当前端到端的对话系统存在的问题通常包括: 1)生成式回答中没有内容,如经常回复“哈哈”,“呵呵”;2)缺乏逻辑性,如“我有一个女儿,我12岁”;3)答非所问,如问“你从哪里来”,回答“我喜欢踢足球”;4)对话缺乏明确的目标和评价方式,导致效果评估效率低甚至无法实现。

强化学习作为解决上述部分问题的潜在方法,备受瞩目。但强化学习对话系统也存在显著问题:1)强化学习需要明确的学习目标,或者用户明确反馈,而评价目标很难制定,用户反馈则很难获取;2)强化学习通常需要大量的数据,甚至比有监督学习需要更多的数据。这些是阻碍强化学习应用的关键因素。

百度目前在开展一个比较有野心的工作,就是建立一套完整的对话评估体系。基于一套完整的评估体系,有可能在包括人-机对话,机-机对话(self-play),机-模拟器对话系统中,引入强化学习,提升对话质量。对于这套评估系统,有几个层面的要求:1)Word-level adversarial safe,使得这套评估系统能够被任何强化学习生成方法作为稳定的学习目标;2)和人的评估接近,可以被不同任务特化。 

百度正在优化的自动评估的对话进化系统

在这套框架下,百度开展了一些尝试性工作。图中是Facebook发布的数据集persona[6],基于两个persona(个性数据),产生两个人之间的对话。通过两个机器人相互聊,聊完之后用evaluation-system来进行评估获得reward,从而强化这两个机器人的对话。相关进展未来将发布。 

在自动评估-进化框架下,Self-Play训练的效果

强化学习应用-3.移动控制

 NeurIPS 2018 AI for Prosthetics Challenge介绍

百度在NeurIPS 2018 AI for Prosthetics Challenge中以绝对优势夺冠 

百度强化学习团队近期在NeurIPS 2018 AI forProsthetics竞赛中,也以绝对优势夺冠。在这个比赛中,需要控制一个人体骨骼肌肉模型的肌肉(19维),学习的目标是按照外部不断变换的给定的速度行走。对没有按照速度行走或者跌落扣分。

这次比赛中百度用到四个关键技术包括:

1)模型结构和学习方法上,使用deep deterministic policy gradient[7],该网络结构由4层MLP组成,将速度目标,状态,动作结合在一起建模,使得速度之间具有很好的可转移性。

百度在NeurIPS 2018AI for Prosthetics Challenge中使用的模型

 2)CurriculumLearning[8]:为了获得稳定的奔跑姿态,首先训练一个高效的高速奔跑姿势,再利用课程学习(CurriculumLearning),设计一系列从易到难的课程,让机器人逐渐地降低速度。通过这种方式,得到一种特别稳定的姿态用于热启动。

百度在NeurIPS 2018AI for Prosthetics Challenge中调研的Curriculum Learning启动方法 

3)DeepExploration[9]:这项技术利用多个header的预测,得到其预测的波动,这个波动代表了当前策略和值的波动范围。这个能够帮助策略有效探索到探索不足的空间。

4)Parallelization:最后,基于PaddlePaddle的高效的计算框架,采用多个CPU的模拟器,以及一个data server、一个高性能GPU作为单机多卡的训练,将训练性能提高几百上千倍。

百度在NeurIPS 2018AI for Prosthetics Challenge中使用的Distributed DDPG训练框架 

基于上述的方法,百度团队不断刷新指标,最终以9980的绝对高分拿下比赛冠军。

另外一个进展则和自动驾驶相关。端到端的控制在机器人领域一直都具有比较高的吸引力。但控制问题是典型的delayedreward的问题,有监督学习在这个领域作用相对较少。近年来不断有用imitation learning,RL等提升端到端模型的研究。但同时,端到端模型又非常难以训练。百度首次在一个飞行器上实现了一种新的强化学习训练框架,并在避障导航问题中应用。

百度提出“干预强化学习(IARL)”和普通强化学习的比较

强化学习用在autonomous driving中的问题有:1)需要大量的数据;2)强化学习需要探索一些冒进的动作,并且经历一些风险和失败(比如碰撞)。然而在真实世界这个成本过大,不可能让无人车或者无人机撞毁无数次来学会如何躲避障碍。

百度提出的一种解决方案是利用安全员,当发现紧急情况时,安全员会做一些紧急动作。policy如下图所示,是一个比较复杂的端到端网络结构,融合CNN与LSTM(多帧信息)。但是通常不能把无人车或者飞行器真的完全交给这个模型,而是通过引入安全员来保障安全。

飞行器上使用的端到端控制模型 

当系统做出错误判断或者出现高危动作时,安全员会及时介入。安全员的每次干预,说明机器的动作不对,这是非常珍贵的反馈信息,可以被机器学习。这就是干预辅助强化学习(Intervention Aided Reinforcement Learning)的思想。百度设计的IARL算法包括两个方面:1. 惩罚任何干预; 2. 学习安全员干预时所采用的操作。

干预强化学习的流程 

IARL在policy和loss function中的体现如下,一方面,需要修改behavior policy,因为现在的policy不再是机器完全自主,而是变成了机器和干预的混合策略;第二方面,在reward上,需要对干预的过程做出惩罚;第三方面,对于policy的目标函数进行修改,增加一项用于学习干预过程的imitation learningloss。

干预强化学习算法 

该算法最终很好地实现了避障。而这个成果,也发表在CoRL 2018会议上[10],演示视频地址如下: (http://www.iqiyi.com/w_19s79d6rr1.html)

                                                                干预强化学习的效果 

 

参考文献

[2] Yue, Yisong, andCarlos Guestrin. "Linear submodular bandits and their application todiversified retrieval." Advances in Neural Information Processing Systems.2011.

[3] Wilhelm, Mark, etal. "Practical Diversified Recommendations on YouTube with DeterminantalPoint Processes." Proceedings of the 27th ACM International Conference on Informationand Knowledge Management. ACM, 2018.

[4] WangF , Fang X , Liu L , et al. Sequential Evaluation and Generation Framework for CombinatorialRecommender System[J]. 2019.

[5] Wen, Tsung-Hsien,et al. "A network-based end-to-end trainable task-oriented dialoguesystem." arXiv preprintarXiv:1604.04562 (2016).

[6] Zhang, Saizheng,et al. "Personalizing Dialogue Agents: I have a dog, do you have petstoo?." arXiv preprint arXiv:1801.07243(2018). “Self-EvolvingDialogue System with Adversarial Safe Automatic Evaluation”

[7] Lillicrap, TimothyP., et al. "Continuous control with deep reinforcement learning."arXiv preprintarXiv:1509.02971(2015).

[8] Bengio, Yoshua, etal. "Curriculum learning." Proceedings of the 26th annualinternational conference on machine learning. ACM, 2009.

[9] Ian Osband,Charles Blundell, Alexander Pritzel, Benjamin Van Roy, Deep Exploration viaBootstrapped DQN, In NIPS 2016.

[10] Wang, F., Zhou,B., Chen, K., Fan, T., Zhang, X., Li, J., ... & Pan, J. (2018, October).Intervention Aided Reinforcement Learning for Safe and Practical PolicyOptimization in Navigation. In Conference on Robot Learning.

收藏
点赞
2
个赞
共8条回复 最后由great_jinyun回复于2020-12-04
#7great_jinyun回复于2020-12-04
#2 荒墨丶迷失回复
这个强化学习算法能否一句话描述清楚。

我试试看:

强化学习是指  根据 观测到的当前环境状态(State) 决定Agent采取最合适的动作(Action),以使获取的奖励得分(reward)最大。

还是得加一句,补充说明:

就是通过和环境多次交互后,不断获取状态、动作、得分 数据,从而优化Action决策的算法。

0
#6Randcase回复于2020-08-03
#3 猪腰子3回复
描述不出来,但是强化学习最重要的3个特定在于:(1):基本是一种闭环的形式;(2)不会直接指示选择哪种行动(actions);一系列的actions和奖励信号(reward signals)都会影响之后较长时间。
展开

可能需要那种图文并存的才能听明白了

0
#5wangwei8638回复于2020-06-21
#2 荒墨丶迷失回复
这个强化学习算法能否一句话描述清楚。

这个难度巨大

0
#4liguanghui2588回复于2019-04-24

这个是不是把算法优化了吗

0
#3猪腰子3回复于2019-02-26
#2 荒墨丶迷失回复
这个强化学习算法能否一句话描述清楚。

描述不出来,但是强化学习最重要的3个特定在于:(1):基本是一种闭环的形式;(2)不会直接指示选择哪种行动(actions);一系列的actions和奖励信号(reward signals)都会影响之后较长时间。

0
#2荒墨丶迷失回复于2019-02-20

这个强化学习算法能否一句话描述清楚。

1
TOP
切换版块