排序(rank)是搜索、推荐业务中经常能够遇到的业务场景:对于某个特定用户,如何针对该用户的信息,进行个性化的备选产品(candidate)的推荐排序,从而优化业务指标(例如点击率、营收等)?在大数据的支撑下,我们可以通过一些流行的机器学习算法来自动实现排序任务的学习,如基于传统模型计算出的分数直接排序,或者LTR(learning to rank)、rankBoost、rankSVM、Page Rank等更有针对性的排序算法。这些主要基于监督学习的方法有着相似的流程:首先收集具有不同标签的样本,基于标签的指标评估学习得到模型,再通过这个模型进行实际的预测和排序。而与强化学习(Reinforcement Learning)算法【1】则提供了不太一样的解决思路:我们可以利用强化学习能够在agent和environment之间进行交互式学习的特点,同时进行排序操作和自身的学习。
强化排序学习(MDPrank)
强化学习对排序最明显的改变是实现了“scoring and sorting”到“sequential decision making”的转变。以传统排序算法最常见的point-wise思路为例,模型的输入包括单个用户和单个candidate的特征,而输出的则是该candidate对该用户的score值;在排序过程中,用模型生成每个candidate对该用户的score,然后根据score的大小进行candidate的排序;整个过程是首先scoring再sorting,前提是假设candidates与user之间的相关性彼此独立(图2)。而强化学习则考虑到1)candidate之间的相互关联 2)当前排序位置对score的影响,从而每次在决定某个排序位置的candidate时考虑当前所有已经排好的candidates对后续的影响,因此能够实现序列化的动态决策(sequential decision making)(图2)。
图1 scoring and sorting过程
(u:user;c:candidate;虚线:模型输入;点线:模型输出)
图2 sequential decision making过程
(u:user;c:candidate;虚线:模型输入;点线:模型输出)
【2】和【3】提供了强化排序学习(Reinforcement Learning To Rank, RLTR)的一个解决方案:把每个排序过程看成是一系列的马尔可夫过程,从而形成一个markov decision process(MDP)问题;对每一次排序决策,通过一个随机的policy策略,基于当前状态(state)进行全部可能的行为(action)的monte carlo抽样;基于candidate的特征情况,定义一个平滑可导的RL的优化目标函数;在迭代时,基于上一次行为得到的奖励(reward),采用policy gradien