强化学习系列二——应用 AlphaGo Zero 思路优化搜索
|
在深度学习大潮之后,搜索推荐等领域模型该如何升级迭代呢?强化学习在游戏等领域大放异彩,那是否可将强化学习应用到搜索推荐领域呢?推荐搜索问题往往也可看作是序列决策的问题,引入强化学习的思想来实现长期回报最大的想法也是很自然的,事实上在工业界已有相关探索。因此后面将会写一个系列来介绍近期强化学习在搜索推荐业务上的应用。
一、Introduction 这篇文章解决的问题是提高搜索多样性,搜索多样性是指搜索结果覆盖更多的主题,问题可定义成从候选集合中选出一个最小的子集来尽可能覆盖更多的主题。传统的解决方法是贪心选择,每次从候选集合里选出一个 marginal relevance 的文档。贪心选择的问题在于每次选择局部最优的文档会导致最终生成的文档列表很难是全局最优的,因为每个位置选择的文档会影响后续文档的选择。如果想得到全局最优的文档列表,如果候选文档的数目为 N,暴力搜索的时间复杂度为 N 的阶乘,显然在实际的应用中不现实。
模型的整体框架 文章则借鉴了 AlphaGo 和 AlphaGo Zero 的思路,结合强化学习和蒙特卡洛搜索进行多样性排序,整体框架如上图。训练过程中,在每个时间步 (对应每个排序的位置),基于用户 query 和已产生的文档列表,使用 RNN 得到当前状态,然后基于当前状态得到指导文档选择的策略函数(raw policy) 以及评估当前列表的值函数。为了缓解次优解的问题,模型使用 MCTS 进行搜索,输出一个更优的策略(search policy)。模型的损失函数由两部分构成,一个是预测价值和文档排序指标的均方误差,另一个是 raw policy 和 search policy 的交叉熵。后面讲详细介绍整个训练过程和预测过程。 二、模型
文档列表生成过程中每个位置的文档选择可以看做一个时间步,整体是一个序列决策的过程,适合用 MDP 来建模。下面介绍下相关的状态、动作、转换、值函数和策略函数的定义。
状态:每个时间步的状态可看做三元组,
动作:
** 状态转换:** 状态转换很显然,设
值函数:根据输入状态估计文档排序列表的质量,通过近似一个预先设定的指标来学习。不同时间步的状态可以一个输入给 LSTM 模型,值函数以 LSTM 输出作为输入并经过一个非线性层,即为
策略函数:策略函数也是以状态作为输入,输出则是动作上的概率分布。形式化如下,其中
通过 p(s) 贪心地选择文档的方式仅基于历史信息去做决策,并未考虑动作
MCTS 搜索过程 - 四个步骤 Selection
从根节点
其中, Evaluation and Expansion
上一步一直迭代到一个叶子节点 Back-propagation and Update
利用
输出更优搜索策略
上述步骤迭代 K 次后可得到根节点
模型参数主要是 LSTM 和策略函数 p 中的参数。针对一个 query,在当前的参数下,每个位置执行一次 MCTS 搜索,直到产生一个排序列表
损失函数组成
使用每个时间步积累的训练数据
针对线上预测需要两种方式:一个是采用上面提到的 MCTS,但是这种方式非常耗时;另一个是放弃树搜索直接使用 raw policy 进行排序。在实验中发现即使采用第二种方法的效果依然超过了基准模型。这是因为训练时由于使用 MCTS 搜索产生了质量较好的序列来训练参数,使得策略函数 p 更加准确。这点也使得文章提出的 idea 在工业界真实上线具备可能。 三、总结
|
时间:2019-03-28 00:03 来源: 转发量:次
声明:本站部分作品是由网友自主投稿和发布、编辑整理上传,对此类作品本站仅提供交流平台,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,不为其版权负责。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。