论文|LinUCB论文的思想解读场景应用与痛点说明

Posted 搜索与推荐Wiki

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了论文|LinUCB论文的思想解读场景应用与痛点说明相关的知识,希望对你有一定的参考价值。

本篇文章主要介绍一下雅虎在2012年发表的论文 【A Contextual-Bandit Approach to Personalized News Article Recommendation】,同时由于最近在做用户留存方面的工作,也涉及了一些冷启动方面的东西,尝试了很多种方法:包括性别热门、用户群体热门、bandit算法和LDA等尝试,有的效果好,有的效果差(当然和具体的业务场景和使用方法都有关系,不能否则算法或者思路本身的好坏)。最近也在尝试LinUCB算法,因此重新翻看了该论文,整理成下文,同时涉及一些个人的想法和一些实践思路。

概述

个性化Web服务通过利用用户和内容的信息调整他们的服务以满足用户的个性化需求,尽管之前的研究取得了一些进展,但仍然存在两个问题:

  • Web服务具有动态更改内容池的功能,从而使传统的协同过滤算法无法使用。
  • 大多数具有实际意义的Web服务要求具有快速学习和进行计算

论文中把文章推荐看作是多臂老虎机问题,一种有效的做法是根据用户和文章的上下文信息,选择文章推荐给用户,同时基于用户对文章的点击行为动态调整策略,追求点击次数最大化。实验证明加入上下文信息的Bandit算法比传统的Bandit算法CTR提升在12.5%以上,如果是基于稀疏的数据,效果会变得更好。

通常用户和物品都有其特征进行表示,在这种情况下不同用户对于同一物品而言,看法也会不同,因此识别不同内容之间的共性,并在内容池中转移该知识变得格外重要。

论文分析了已有的Bandit算法,包括UCB、E-Greedy、Thompson Smapling、朴素Bandit,然后提出了LinUCB算法,LinUCB分为两种:

  • 简单的线性不相交模型 disjoint LinUCB
  • 混合相交的线性模型 hybrid LinUCB

Disjoint LinUCB

之所以称为DisJoint LinUCB是因为不同臂之间的参数不共享。

首先定义每个臂的期望收益为:
E [ r t , a ∣ x t , a ] = x t , a T θ a ∗ E[r_t,a | x_t,a ] = x^T_t,a \\theta^*_a E[rt,axt,a]=xt,aTθa
其中:

  • θ a ∗ \\theta^*_a θa 表示臂a的参数
  • x t , a x_t,a xt,a表示臂a的特征

通常模型优化采用的是最小化损失函数,在这里损失函数可以表示为:
l o s s = ( c a − D a θ a ) 2 + λ ∣ ∣ θ a ∣ ∣ loss = (c_a - D_a \\theta_a)^2 + \\lambda|| \\theta_a|| loss=(caDaθa)2+λθa

基于岭回归得到的参数估计值为:
θ ^ a = ( D a T D a + I d ) − 1 D a T c a \\hat\\theta_a = (D^T_a D_a + I_d)^-1 D^T_ac_a θ^a=(DaTDa+Id)1DaTca
其中:

  • D a D_a Da表示是一个m*d的矩阵(即m行,d列),m即选择臂a得到的m个上下文特征组,d为特征的维度
  • I d I_d Id 表示d*d的单位矩阵
  • c a c_a ca 表示臂a返回的事物是否被点击的记录向量,长度为m

根据最小平方和强化学习理论:
∣ x t , a T θ ^ a − E [ r t , a ∣ x t , a ] ∣ ⩽ α x t , a T ( D a T D a + I d ) − 1 x t , a | x^T_t,a \\hat \\theta_a - E[r_t,a | x_t,a ] | \\leqslant \\alpha \\sqrt x^T_t,a(D^T_aD_a + I_d)^-1 x_t,a xt,aTθ^aE[rt,axt,a]αxt,aT(DaTDa+Id)1xt,a
其中 α \\alpha α是一个常数,为: 1 + l n ( 2 / δ ) / 2 1+\\sqrtln(2/\\delta )/2 1+ln(2/δ)/2

基于这个不等式可以选择收益最大的臂,在进行第t次实验时:
a t = d e f a r g m a x a ∈ A t ( x t , a T θ ^ a + α x t , a T A a − 1 x t , a ) a_t \\oversetdef= \\underseta \\in A_targ max (x^T_t,a \\hat \\theta_a + \\alpha \\sqrt x^T_t,aA_a^-1 x_t,a ) at=defaAtargmax(xt,aTθ^a+αxt,aTAa1xt,a )
其中 A = d e f D a T D a + I d A \\oversetdef=D^T_aD_a + I_d A=defDaTDa+Id

其对应的算法流程为:

Hybrid LinUCB

Hybrid LinUCB考虑了臂之间的共性,因此每个臂的期望修改为:
E [ r t , a ∣ x t , a ] = z t , a T β ∗ + x t , a T θ a ∗ E[r_t,a | x_t,a ] =z^T_t,a\\beta^* + x^T_t,a \\theta^*_a E[rt,axt,a]=zt,aTβ+xt,aTθa
其中: