Joseph A. Konstan教授(coursera.明大.推荐系统课程)在2005年《Improving Recommendation Lists Through Topic Diversification》中提出了主题多样性。虽然这篇paper比较老,但比较经典,值得一看:

1.介绍

推荐系统的目标是:基于用户过往偏好、历史购买、人口统计学信息(demographic information),提供用户关于他们可能喜欢的产品的推荐。大多数成功的系统会利用CF(collaborative filtering),许多商业系统(Amazon.com)利用这些技术来提供个性化推荐列表给他们的顾客。

尽管state-of-the art CF系统的accuracy很出色,实际中已经发现:一些可能的结果会影响用户满意度。在Amazon.com上,许多推荐看起出在内容上很“相似(similar)”。例如,顾客已经购买了许多关于赫尔曼·黑塞(Hermann Hesse)的诗集,可能会获得这样的推荐列表:其中所有top-5的条目都只包含了该作者的书。当纯粹考虑accuracy时,所有这些推荐看起来都是出色的,因为该用户很明显喜欢赫尔曼·黑塞写的书。另一方面,假设,该活跃用户在赫尔曼·黑塞之外还有其它兴趣,比如:历史小说以及世界游行方面的书,那么该item推荐集合就看起来较差了,缺乏多样性。

传统上,推荐系统项目会关注于使用precision/recall 或者MAE等metrics来优化accuracy。现在的一些研究开始关注pure accuracy之外的点,真实用户体验是必不可少的。

1.1 贡献

我们通过关于真实用户满意度,而非pure accuracy,来解决之前提到的不足。主要贡献如下:

  • 主题多样性(topic diversification):我们提出了一种方法,根据该活跃用户的完整范围的兴趣,来平衡top-N推荐列表。我们的新方法会同时考虑:suggestions给出的accuracy,以及在特定主题上的用户兴趣范围。主题多样性的分析包含:user-based CF和item-based CF.
  • Intra-list相似度指标(similarity metric):
  • accuracy vs. satisfaction:

2.CF

3.评估指标

为了判断推荐系统的质量和效果,评估指标是必要的。许多评价只关注于accuracy并忽略了其它因素,例如:推荐的novelty(新奇)和serendipity(意外发现),以及推荐列表items的diversity。

以下给出了一些流行的指标。

3.1 Accuracy Metrics

Accuracy metrics主要有两个:

第1, 为了判断单个预测的accuracy(例如:对于商品\(b_k\)的预测\(w_i(b_k)\)与\(a_i\)的accuracy ratings \(r_i(b_k)\)有多偏离)。这些指标特别适合于,预测会随商品被展示的任务(比如:annotation in context)

3.1.1 MAE

3.1.2 RECALL/Precision

3.2 Accuracy之外

尽管accuracy指标很重要,还有其它不能被捕获的用户满意度特性。non-accuracy metrics与主流的研究兴趣相距较远。

3.2.1 覆盖度(Coverage)

在所有non-accuracy评估指标上,coverage是最常见的。coverage指的是:对于要预测的问题域(problem domain)中元素(elements)部分的百分比。

3.2.2 Noverlty和Serendipity

一些推荐器会生成高度精准的结果,但在实际中没啥用(例如:在食品杂货店中给顾客推荐香焦)。尽管高度精准,注意,几乎每人都喜欢和购买香焦。因此,他们的推荐看起来太过明显,对顾客没啥太多帮助。

Novelty和serendipity指标可以衡量推荐的”非显而易见性(non-obviousness)”,避免“随机选取(cherry picking)[12]”。对于serendipity的一些简单measure,可以采用推荐items的平均流行度。分值越低表示越高的senrendipity。

3.3 Intra-List Similarity

我们提出一个新指标,它的目的是捕获一个list的diversity。这里,diversity指的是所有类型的特性,例如:genre、author、以及其它的有辩识度的特性。基于一个任意函数(arbitrary function):\(c_o: B \times B \rightarrow [-1, +1]\),来衡量在商品\(b_k, b_e\)间的相似度\(c_o(b_k, b_e)\),我们将\(a_i\)的推荐列表\(P_{w_i}\)的intra-list similarity定义如下:

\[ILS(P_{w_i}) = \frac{\sum\limits_{b_k \in \Im P_{w_i}} \sum\limits_{b_e \in \Im P_{w_i}, b_k \neq b_e} c_o(b_k, b_e)}{2}\]

…(5)

分值越高表示越低的diversity。我们会在后面涉及到的关于ILS的一个令人感兴趣的数学特性:排列不敏感(permutation-insensitivity),例如:\(S_N\)是关于在\(N=\|P_{w_i}\|\)的所有排列的对称分组(symetric group):

\[\forall \delta_i, \delta_j \in S_N: ILS(P_{w_i} \circ \delta_i) = ILS(P_{w_i} \circ \delta_j)\]

…(6)

这里,通过在一个top-N list \(P_{w_i}\)上对推荐的位置进行简单重设置,不会影响\(P_{w_i}\)的intra-list similarity。

4.topic diversification

acurracy指标的一个主要问题是,它不能捕获更宽泛的用户满意度,会隐藏在已存在系统中的一些明显缺陷。例如,推荐出一个非常相似items的列表(比如:对于一个很少使用的用户,根据author、genre、topic推出),尽管该列表的平均accuracy可能很高。

该问题在之前被其它研究者觉察过,由Ali[1]创造了新词“投资组合效应(portfolio effect)”。我们相信:item-based CF系统特别容易受该效应的影响。从item-based TV recommender TiVo[1]、以及Amazon.com recommender的个性化体验都是item-based。例如,这篇paper的作者只获得了关于Heinlein的书籍推荐,另一个则抱怨推荐的书籍全是Tolkien的写作。

在用户满意户上的负面分歧的原因暗示着,“protfolio effects”是很好理解的,已经在经济学界被广泛研究,术语为“边际收益递减规律(law of diminishing marginal returns)【30】”。该规律描述了饱和效应(saturation effects):当商品p被不断地获得(acquired)或消费(consumed)时,它的增量效用(incremental utility)会稳定的递减。例如,假设你被提供了你喜欢的酒。假设:\(p_1\)表示你愿意为该商品支付的价格。假设你被提供了第二杯特别的酒,你趋向于花费的的金额\(p_2\)会越来越少,(例如:p_1 > p_2)。以此类推:\(p_3, p_4\)。

我们提出了一种方法“topic diversification”来处理该问题,并便推荐列表更多样化,更有用。我们的方法是现有算法的一个扩展,可以被应用到top推荐列表上。

4.1 Taxonomy-based Similarity指标

函数:\(c^*: 2^B \times 2^B \rightarrow [-1,+1]\),表示在两个商品集合之间的相似度,这构成了topic diversification的一个必要部分。对于taxonomy-driven filtering[33],我们使用我们的指标对\(c^*\)实例化,尽管其它content-based similarity measures可能看起来也适合。在商品集合间的相似度计算指标基于他们的分类(classification)得到。每个商品属于一或多个分类,它们以分类的taxonomies进行层次化排列,以机器可读的方式描述了这些商品。

classification taxonomies存在不同领域。Amazon.com为books/DVSs/CDs/电子产品等制作了非常大的taxonomies。图1表示一个sample taxonomy。另外,在Amazon.com上的所有商品的内容描述与它们的domain taxonomies相关。特征化的主题可以包含:author、genre、audience。

图1

4.2 topic diversification算法

算法1展示了完整的topic diversification算法。

算法1

函数\(P_{w_i *}\)表示新的推荐列表,它由使用topic diversification产生。对于每个list entry \(z \in [2,N]\),我们从候选商品集\(B_i\)中收集了这些商品b,它们不会出现在在\(P_{w_i *}\)中的位置\(o < z\)上,并使用集合\(\lbrace P_{w_i *}(k) \mid k \in [1,z] \rbrace\)来计算相似度,它包含了所有新推荐的前导rank z。

根据\(c^*(b)\)以逆序方式对所有商品b进行排序(sorting),我们可以获得不相似rank(dissimilarity rank) \(P_{c^*}{rev}\)。该rank接着会使用原始推荐rank \(P_{w_i}\)根据多样化因子\(\Theta_F\)进行合并,生成最终rank \(P_{w_i *}\)。因子\(\Theta_F\)定义了dissimilarity rank \(P_{c^*}^{rev}\)应用在总体输出上的影响(impact)。大的\(\Theta_F \in [0.5, 1]\)喜欢多样性(diversification)胜过\(a_i\)的原始相关顺序,而较低的\(\Theta_F \in [0, 0.5]\)生成的推荐列表与原始rank \(P_{w_i}\)更接近。对于实验分析,我们使用diversification因子:\(\Theta_F \in [0, 0.9]\)。

注意,有序的input lists \(P_{w_i}\)必须是大于最终的top-N list。对于我们的后续实验,我们会使用top-50 input lists来产生最终的top-10推荐。

4.3 推荐依赖

为了实验topic diversification,我们假设:推荐商品\(P_{w_i}(o)\)和\(P_{w_i}(p), o, p \in N\),和它们的内容描述一起,会产生一个相互影响,它会被现有方法所忽略:通常,对于推荐列表的items来说,只有相关度加权排序(relevance weight ordering) \(o < p \Rightarrow w_i(P_{w_i}(o)) \geq w_i(P_{w_i}(p))\)必须保持,假设没有其它依赖。

在topic diversification的case中,推荐相互依赖意味着:一个item b与之前推荐间的当前dissimilarity rank,会扮演一个重要角色,可能影响新的ranking。

4.4 渗透压(Osmotic Pressure)类比

dissimilarity效应与分子生物学上的渗透压和选择性渗透(selective permeability)相类似。将商品\(b_o\)(它来自兴趣\(d_o\)的特定领域)稳定插入到推荐列表中,等价于:从来自一个特定物质的分子通过细胞膜传到细胞质中。随着浓度\(d_o\)(它属于膜的选择性通透性)的增加,来自其它物质d的分子b的压力会上升。对于一个给定主题\(d_p\),当压力(pressure)足够高时,它最好的商品\(b_p\)可能“散开(diffuse)“到推荐列表中,尽管他们的原始排序(original rank)\(P_{w_i}^{-1}(b)\)可能不如来自流行域(prevailing domain)\(d_o\)。相应的,对于\(d_p\)的压力会下降,为另一个压力上升的domain铺路。

这里的topic diversification类似于细胞膜的选择性渗透性,它允许细胞来将细胞质的内部组成维持在所需要级别上。

参考

在paper 《Effective rank aggregation for metasearching 》中提出了一种rank aggregation的方法:QuadRank,介绍了一种对多个ranked lists进行merge的方法,我们来了解一下:

3.QuadRank

QuadSearch的缺省ranking fusion算法是一个与位置有关(positional)的方法,可以处理partial ranked list;实际上它会处理来自基于single-crawler的搜索引擎们的top-k lists。我们这样做的原因是因为以下普通并且显著的观察:

  • i) 所有这些都被experts认为是“major”搜索引擎s
  • ii)他们在lifetimes期间是可靠的
  • ii)大多数用户和metasearch engines更偏向于他们来执行它们的搜索

假设\(r_1, r_2, \cdots, r_m\)是m个ranked lists,分别对应于每个component搜索引擎。我们假设:这些lists中的每一个list都包含了固定数目的k个items,整个过程涉及到对总共km个elements进行merge和rank。这里我们所采用的merging过程是:通过移除所有重复的elements,将m个不同的result lists合并到一个single list中。注意,该list仍是unranked,直到对list中的所有elements使用scoring函数。

两个component engines间的重合(overlapping)会随着query的不同而不同,不可预测,因此我们假设:我们最终的result list包含了N个items。在表1中我们描述了要使用的符号。

表1

在结尾我们会表述提出方法的主要思想。特别描述了QuadRank所采用的方法论,以便处理individual rankings和zone weighting,并且我们会检查URL分析的结果的意义。最终我们会讨论不同components是如何被组合到单个scoring公式中的。

3.1 处理individual rankings

每个element会接受由component engines得到的ranking,这对于一个rank aggregation方法来说是非常重要的,大多数提出的ranking算法主要基于这些rankings。相应的,我们必须设计我们的函数,来对达到较高rankings的结果进行reward。因此,对比起在更低位置的entries,具有较高rankings的entries可以被认为是:它们会与一个给定query更相关

因此,对于每个item \(c \in S\),我们引入和评估了该quantity:

\[K(c)=\sum\limits_{i=1}^m (k+1 - r_i(c))\]

…(2)

其中:

  • m: 表示所使用的component engines的数目
  • c: 表示在component list中的单个结果
  • k: 在每个component list中的items数目
  • \(r_i(c)\)是该item被分配给第i个component engine得到的ranking

在特殊情况下,item c没有被list \(r_i\)进行rank,那么我们假设:\(r_i(c)=k+1\)。很明显,一个item可以接收的最好score是km(如果它在每个component list中都排在第一位),最低的score是1 (表示只被一个component list进行rank,并且排到最后一个)

引入的score会对那些接受了多个component engines的high rankings的items进行reward,然而,两或多个结果被分配相等的K(c)值是相对常见的。例如,考虑到以下场景:两个不同的items \(c_1,c_2\),它们会接收到由4个top-10 lists \(r_1,r_2,r_3,r_4\)的rankings。

表2

在表2的示例中,它会有\(K(c_1)=K(c_2)=10\)。然而,我们会坚定认为:\(c_2\)的rank要比\(c_1\)要高。因为:

  • 1.\(c_2\)在更多的input rankings中出现,相应的,根据民主对称性(democratic symmetry) Saari(2000)
  • 2.\(c_2\)在超过一半的input rankings中出现,因此根据孔多塞标准(Condorcet criterion),它是一个spam entry的概率很低

为了处理这样的case,我们必须对以下结果进行reward:该结果被尽可能多的component engines认为是与一个给定query相关。如果\(n_c \leq m\)是结果c出现在各component engines的数目,那么我们引入rank-based score,它由以下等式决定:

\[R(c)=m log(n_c K(c))\]

…(3)

其中m是所使用engines的总数目。注意(3)中所使用的log是为了减小在\(R_i(c)\)可以接受的不同值之间的误差。另外,尽管使用m乘以log没啥差异(因为m对于所有items是一个常数),它可以根据你的目的进行调节,以便让\(R(c)\) score分配更大的值。

参考

我们来看下yahoo的《Product Recommendations at Scale》中提出的prod2vec方法:

1.介绍

世界上许多人在每天都会浏览email收件箱,大多数时间会与它们的通讯录进行联系,还有一部分时间用于账单确认,读取新信息,以及跟踪购买( tracking purchases)。为了对这种流量进行商业化,email客户端通常会在原生email内容的边上以图片的形式展示广告。说服用户切出”email模式”(即连续处理邮件任务),进入一个新模式让人们愿意去点广告是个挑战。通过有效的个性化和定向(targeting),目标是为单个用户发现与他最匹配的广告展示给他,因而广告需要高度相关,以克服用户只关注email任务的倾向。除了获得财务收益外,为每个消费者的口味量身定制的广告也能改善用户体验,可以增加用户的忠诚度和用户粘性。

对于广告定向(ad targeting),收件箱emails仍未被充分进行explored & exploited。最新研究表明,只有10%的收件量表示是人类生成(非机器生成)的emails。这之外的90%流量中,超过22%表示与在线电商有关。假设整体流量中大部分是有商业目的的,定向广告的一种流行形式是电邮重定位(MRT: mail retargeting),其中,广告主会对之前从特定商业网站(web domain)上接收过邮件的用户进行定向。这些电子邮件对于广告定向来说很重要,它们会给出用户感兴趣的相应商品的一个大图(broad picture)进行展示。最新paper[14]利用聚类方法来生成MRT规则,展示了这样的规则比由人类专家生成的要更精准。

图一:Yahoo Mail中的商品推荐

然而,为了超出MRT规则之外,用户和商业网站的交互,广告商需要更多数据(比如:购买过的商品名和价格,通常是email邮件的一部分)。email客户端与商业网络能很好结合,对电子邮件格式进行标准化,产生的schemas通过schema.org社区进行维护。越来越多的商业网站使用标准schemas,email客户端可以提供更个性化的用户通知,比如:包裹跟踪(package tracking)和 航班详情(flight details)。另外,email receipt extraction带来了赚钱机会,基于客户的购买历史将商品广告带给用户。有了从多个商业email domain上的购买数据,比起其它基于单一商业email domain来说,可以更好地将email provider放置到在唯一的位置上,以便能构建更好的推荐系统。特别的,不同于商业网站可以做出这样的推荐:“买了X的顾客,也会买Y”,email providers可以做出这样的推荐:“从生产商V1处购买了X的顾客,也会从生产商V2处购买Y”,允许更强大和更有效的定向解决方案。

在本paper中,我们为Yahoo Mail提供了一种end-to-end的商品广告开发方案。工作包含了开发一个商品级别的购买预测算法,能扩展到数百万的用户和商品。出于该目的,我们提出了一种方法,使用一个神经语言模型,将它应用到用户购买时间序列上,从而将商品嵌入到real-valued,低维的向量空间中。作为结果,具有相近上下文的商品(它们相邻近的购买行为)可以映射到在embedding空间中更接近的地方。关于下一个要购买的商品,为了做出有意义和更多样的建议,我们会进一步将商品向量进行聚类,并建模聚类间的转移概率。来自可能的聚类在向量空间中更接近的商品,会被用于形成最终推荐。

商品预测模型会使用一个大规模的购买数据集进行训练,由2900w用户的2.8亿购买行为组成,涉及210w个唯一的商品。该模型会在一个held-out month上进行评估,其中,我们在收益率(yield rate)上测试了推荐的有效性。另外,我们会评估一些baseline方法,包含展示流行商品给所有用户,以不同用户分组(称为:分群(cohorts),由用户性别、年龄、地域)展示流行商品,以及展示在一个用户最近购买商品之后历史最常购买的商品。为了减轻冷启动问题,在用户的分群(cohort)中的流行商品会被用于补足那些早期没有购买行为的用户的推荐。

3.方法

本节中,我们描述了该商品推荐任务的方法论。为了解决该任务,我们提出了从历史日志中使用自然语言模型学习在低维空间中的表示。商品推荐可以通过最简单的最近邻搜索得到。

更特别的,给定从N个用户中获取的email receipt日志的一个集合S,其中用户的日志为 \(s = (e_1, ..., e_M) \in S\)被定义成一个关于M个receipts的连续序列,每个email recept \(e_m = (p_{m1}, p_{m2}, ..., p_{mT_m})\)包含了\(T_m\)个购买的商品,我们的目标是发现每个商品p的D维实数表示\(v_p \in R^D\),以便相似的商品可以在向量空间中更近的位置。

我们提供了一些方法来学习商品表示。首先提出了prod2vec方法,它会考虑所有已经购买的商品。接着提出了新的bagged-prod2vec方法,它会考虑在email receipts中一起罗列被购买的一些商品,它们会产生更好、更有用的商品表示。最终,我们会利用上学到的representations来分别表示一个prod2prod和user2prod的推荐模型。

3.1 低维商品embeddings

图二:prod2vec skip-gram模型

prod2vec:prod2vec模型会将一个购买序列看成是一个“句子”,在这个序列中的商品看成是“词”。详见图2, 更特殊的,prod2vec使用skip-gram模型来学习商品表示,通过以下的最大化目标函数:

\[L = \sum_{s \in S} \sum_{p_i \in s} \sum_{-c \leq j \leq c, j \neq 0} log p(p_{i+j} | p_i)\]

…(3.1)

其中,来自相同email receipt的商品可以是任意顺序。概率\(P(p_{i+j} \mid p_i)\)表示:给定当前商品\(p_i\),观察到一个邻近商品\(p_{i+j}\)的概率,使用softmax函数进行定义如下:

\[P(p_{i+j}| p_i) = \frac{exp({v_{p_i}^T v_{p_{i+j}}'})} {\sum_{p=1}^P exp{(v_{p_i}^T v_p')}}\]

…(3.2)

其中,。。。。

图3: bagged-prod2vec模型更新

bagged-prod2vec:为了对多个商品同时购买的行为做出解释,我们提出了一个修改版本的skip-gram模型,它引入了一个概念:购物袋(shopping bag)。如图3所示,该模型会在email receipts级别进行操作,而非在商品级别。通过对email序列s上的一个修改版目标函数进行最大化,来学习商品向量表示:

\[L = \sum_{s \in S} \sum_{e_m \in s} \sum_{-n \leq j \leq n, j\neq 0} \sum_{k=1,...,T_m} log P(e_{m+j}| p_{mk})\]

…(3.3)

商品\(P(e_{m+j} \mid p_{mk})\)是从邻近的email receipt \(e_{m+j}\)上观察到商品的概率,\(e_{m+j}=(p_{m+j,1}, ..., p_{m+j, T_m})\),给定从第m个email receipt的第k-th个商品,到一个商品的概率:

\[P(e_{m+j} \mid p_{mk}) = P(p_{m+j,1} \mid p_{mk} ) \times ... \times P(p_{m+j,T_m} \mid p_{mk})\]

每个P的定义使用softmax(3.2)。注意在(3.3)中的第三个求和会随着receipts进行,因而,从相同的email receipt中得到的items在训练期间不会相互预测。另外,为了捕获商品购买的时序特性(temporal aspects),我们提出了使用有向语言模型,我们只使用未来的商品(future product)作为上下文。该修改版允许我们学习商品embeddings来预测将来的购买行为。

learning:该模型使用SGA( stochastic gradient ascent)进行最优化,很适合大规模问题。然而,在(3.1)和(3.3)中的梯度计算\(\Delta L\),很适合词汇size P,实际任务中,计算开销会随着P的增大而变得很昂贵,很容易达到上百万的商品。另一方面,我们使用negative sampling方法,它能显著减小计算复杂度。

3.2 prod-2-prod预测模型

在学习了低维商品表示后,我们考虑了来预测下一商品的购买概率的一些方法。

prod2vec-topK:给定一个购买商品,该方法会为所有在词汇表中的商品计算cosine相似度,并推荐最相似商品的top K

prod2vec-cluster:为了能做出更多样化(diverse)的推荐,我们考虑将相似商品分组成聚类,从与之前购买商品相关的聚类中推荐商品。我们应用K-means聚类算法来在hadoop FS上实现,将商品基于cosine相似度进行聚类。我们假设:在从聚类\(c_i\)上进行一个购买后、再从任意第C个聚类中进行一次购买的行为,符合一个多项式分布(multinomial distribution)\(M_u(\theta_{i1}, \theta_{i2}, ..., \theta_{iC})\),其中\(\theta_{ij}\)是从聚类\(c_i\)中进行一次购买后、接着从聚类\(c_j\)中进行一次购买的概率。为了估计参数\(\theta_{ij}\),对于每个i和j,我们采用一个最大似然方法:

\(\hat {\theta_{ij}} = \frac{c_i购买后跟c_j的次数}{c_i购买的总数}\) …(3.4)

  • count of ci purchases: c_i购买的数目
  • # of times ci purchase was followed by cj: c_i购买后跟c_j的次数

为了给一个购买过的商品p推荐一个新商品,我们首先标识了p属于哪个聚类(例如: \(p \in c_i\))。接着,我们会对所有聚类\(c_j\),通过\(\theta_{ij}\)值进行排序,然后考虑取与聚类\(c_i\)top相关的聚类中的top个商品。最后,从top聚类中的商品通过与p计算cosine相似度进行重排序,取top K进行推荐。

3.3 User-to-product预测模型

除了prod2prod预测外,大多数推荐引擎允许user-to-product方式的预测,为一个用户进行推荐通常会考虑历史购买、或(和)兴趣,使用其它数据源:用户在线行为、社交行为等。在本节中,我们提出了一个新方法来同时学习商品的向量表示、以及给定一个用户,发现在joint embedding space发现K个最近商品的用户推荐。

user2vec:受paragraph2vec算法的启发,user2vec模型会同时学习商品和用户的特征表示,它会将用户当成是一个“全局上下文”。这样的模型如图4所示。训练数据集来自于用户购买序列S,它会包含\(u_n\)和其它已购商品(通过购买时间序排列),\(u_n = (p_{n1}, p_{n2}, ..., p_{nU_n})\),其中\(U_n\)表示用户\(u_n\)购买的items数目。在训练期间,用户向量会被更新,来预测从他的email receipts中的商品,其中,学到的product vectors会预测在上下文中的其它商品。出于表示的简洁性,在下面,我们会表示no-bagged版本的模型,注意,使用bagged版本进行扩展也很方便。

图4: 对用户的User embeddings,进行产品预测

更特殊的,user2vec的目标函数是,最大化所有购买序列的集合S上的似然:

\[L = \sum_{s \in S} (\sum_{u_n \in s} log P(u_n | p_{n1}: p_{nU_n}) + \sum_{p_{n_i} \in u_n} log P(p_{ni}| p_{n,i-c}: p_{n,i+c,u_n}))\]

…(3.5)

其中,c是第n个用户的购买序列上下文长度。\(P(p_{ni} \mid p_{n,i-c}:p_{n,i+c,u_n})\)被定义为使用一个softmax函数:

\(P(p_{ni}|p_{n,i-c}: p_{n,i+c}, u_n) = \frac{e^{\bar{v}^T v_{p_{ni}}'}}{ \sum_{p=1}^{V} e^{\bar{v}^T v_p'}}\) …(3.6)

其中\(v_{p_{ni}}'\)是\(p_{ni}\)的输出向量表示,\(\bar{v}\)是商品上下文的平均向量表示,包含了相应的\(u_n\),定义如下:

\(\bar{v} = \frac{1}{2c+1} (v_{u_n} + \sum_{-c \leq j \leq c ,j \neq 0} v_{p_{n,i+j}})\) …(3.7)

其中,\(v_p\)是p的输入向量表示。相似的,概率\(P(u_n \mid p_{n1}: p_{n U_n})\)定义如下:

\(P(u_n | p_{n1}: p_{nU_n}) = \frac{e^{\bar{v}_n^T v_{u_n}'}} {\sum_{p=1}^V e^{\bar{v}_n^T v_p'}}\) …(3.8)

其中\(v_{u_n}'\)是\(u_n\)的输出向量表示,\(\bar{v}_n\)是用户\(u_n\)的所有商品平均输入向量表示的平均:

\[\bar{v}_n = \frac{1}{U_n} \sum_{i=1}^{U_n} v_{p_{ni}}\]

…(3.9)

user2vec模型的一个主要优点是,商品推荐是基于该用户的购买历史进行量身定制的。然而,缺点是,该需要需要非常频繁地进行更新,不同于product-to-product方法,它可以长期是相关的,而user-to-product推荐需要经常变化来对最近购买行为做出解释。

4.实验及其它

略,详见paper.

4.4 推荐预测商品

我们对推荐商品给用户进行实验,比较以下算法:

  • 1) prod2vec-topK:使用数据集\(D_p\)进行训练,其中,商品向量通过对购买序列s通过极大似然估计进行学习。给定一个商品\(p_i\),通过向量空间计算cosine相似度选择topK个相似商品。
  • 2) bagged-prod2vec-topK:使用\(D_p\)进行训练,其中商品向量通过email序列s通过极大似然估计进行学习。对于给定商品\(p_i\),通过选择在结合向量空间计算cosine相似度选择topK个相似商品。
  • 3) bagged-prod2vec-cluster: 与bagged-prod2vec模型的训练类似,接着将商品向量聚类成C个聚类,并计算它们间的转移概率。接着标识出\(p_i\)属于哪个聚类(例如:\(p_i \in c_i\)),我们根据\(c_i\)的转移概率对各聚类进行排序,取出top个聚类,然后聚出这些top聚类的商品通过计算与\(p_i\)的cosine相似度进行排序,其中每个聚类的top \(K_c\)被用于推荐(\(\sum {K_c} = K\))。 bagged-prod2vec-cluster与 bagged-prod2vec的预测结果如表2所示。可以看到聚类方法多样性更好。
  • 4) user2vec:使用\(D_p\)进行训练,其中商品向量和用户向量通过极大似然估计进行学习。给定一个用户\(u_n\),通过计算\(u_n\)用户向量与所有商品向量的cosine相似度,检索出top K近邻商品。
  • 5) co-purchase:对于每个购买pair:\((p_i, p_j)\),计算频率\(F_{(p_i,p_j)}\),其中\(i=1,...,P, j=1,...,P\),商品\(p_j\)在商品\(p_i\)之后立即购买。接着,给商品\(p_i\)的推荐通过频率\(F_{(p_i,p_j)}, j=1,...,P\)进行排序,取topK商品。

表2: 潜水呼吸管(cressi supernova dry snorkel)的商品推荐

在第\(t_d\)天之前,由于用户\(u_n\)具有多个商品的购买行为,为了在这一天选择最好的K个商品,各种独立的预测( separate predictions)必须达成一致。为了达到该目的,我们提出了时间衰减的推荐评分scoring,在根据最高得分选择top K个商品之后使用。更特别的,给定用户在\(t_d\)天前的商品购买行为以及它们的时间戳(timestamps):\(\lbrace (p_1,t_1), ..., (p_{U_n}, t_{U_n}) \rbrace\),对于每个商品,我们会根据相似得分检索top K个推荐,产生集合\(\brace (p_j, sim_j), j=1, ..., K U_n \rbrace\),其中sim表示cosine相似度。接着,我们为每个推荐商品计算一个衰减得分(decayed score):

\[d_j = sim_j \cdot \alpha^{t_d - t_i}\]

其中\((t_d - t_i)\)是当前天\(t_d\)与产生推荐\(p_j\)的商品购买时间的差,其中\(\alpha\)是衰减因子。最终,按照衰减评分降序,并取topK个商品作为第\(t_d\)天的推荐。

表1:通过bagged-prod2vec模型生成的商品推荐示例

训练细节:神经语言模型会使用一台96GB RAM内存的24core机器。embedding space的维度被设置成d=300, 上下文neighborhood size为5. 最后每个向量更新中使用10 negative samples。与[24]的方法相似,最频繁的商品和用户在训练期间会进行子抽样(subsampled)。为了展示该语言模型的效果,表1给出了使用bagged-prod2vec推荐的样例,可以看到邻居商品与query商品高度相关。(例如:“despicable me 卑鄙的我(动画电影)”,该模型会检索到相似卡通片)

评估细节: 与流行商品的accruracy如何测量类似,我们假设每个用户有一个K=20不同商品推荐。对于\(t_d\)天的预测,会基于先前天的购买进行预测,我们不会考虑在该天期间发生的购买行为来更新第\(t_d\)天的预测。

结果:我们评估了decay factors不同值所对应的prod2vec表现。 在图9中,我们展示了在测试数据\(D_p^{ts}\)(往前看1,3,7,15,30天)上的预测准确率。初始的prod2vec预测会基于在训练数据集\(D_p\)最后用户购买。该结果展示了不同预测对于产生推荐准确率提升的预测的折扣,decay factor=0.9是一个最优选择。

9.png

图9: 不同decay值的prod2vec accuracy

参考

关于fastText,有两篇paper需要看下,见下面的参考。如果你的目的是用来训练词向量,可以查看paper 1. 如果是用来进行文本分类,参考paper 2.

第1为《Enriching Word Vectors with Subword Information》:使用subword的信息来增强词向量。

对于常规的一些词向量模型,它们将词汇表中每个词表示成一个不同的向量,在训练中会忽略词形。这对于一些大词汇量、许多罕见字、且词形丰富的语言来说(比如:Turkish语 或 Finnish语),是个很大限制,很难使用这些模型训练到较好的词级别(word-level)的向量。fastText是一种基于skip-gram模型的新扩展,它会使用subword的信息,将每个词被表示成一个字符级n-gram词袋(a bag of character n-grams)。每个向量表示与每个字符级n-gram相关联,而词(word)则可以看成是这些n-gram向量表示的求和(sum)。fastText在大语料上训练很快。

1.介绍

在NLP领域学习词的连续表示(continuous representations)已经有一段历史了(rumelhart et al., 1988)。这些表示通常来自于大型无标记语料来使用共现统计获得(Deerwester et al., 1990)。大部分工作称为“分布式语义(distributional semantics)”,已经研究了这些方法的属性(turney et al.,2010..)。在神经网络社区,Collobert和Weston(2008)提出了使用一个前馈网络来学习word embeddings,它通过基于一个词的左前两词和右后两词来预测中心词。最近,Mikolov(2013b)提出了一种简单的log-bilinear模型来高效学习大规模语料的连续表示。

通过一个不同的向量(distinct vector)来表示词汇表中的每个词,不需要参数共享。特别的,它们忽略了词的内部结构,对于词型丰富的语言( morphologically rich languages)来说,比如Turkish语 和 Finnish语,这是个重要的限制。这些语言包含了许多罕见词,使得很难学习很好的word-level representations。在本paper中,我们提出了为character n-grams学习词表示,并将words表示成n-gram vectors的求和(sum)。我们的主要贡献是对Mikolov的skip-gram做了一个扩展,让它能解释subword information。我们在五种语言上(它们具有不同的词型)评估了该模型,展示了我们的方法的好处。

2.相关工作

形态学词表示(Morphological word representations): 最近几年提出了不少方法,将形态学信息插入到词向量中。为了更好地建模罕见字,Alexandrescu和Kirchhoff(2006)引入了因子化的自然语言模型,其中词被表示成关于特征的集合。这些特征可以包含形态学信息,该技术被成功应用于形态学丰富的语言中,比如:Turkish(Sak 2010)。最近,一些相关的工作提出了不同复合函数来从词素(morphemes)生成词表示。这些不同的方法依赖于词的一个形态学解耦,但我们的方法不会。相似的,Chen(2015)介绍了一个方法来联合学习中文词和字符的embeddings。Soricut(2015)提出了将形态相似的词限制到具有相似表示。Soricut(2015)描述了一个方法来学习形态学转移的向量表示,允许通过应用规则来获取对未登陆词的表示。Cotterell(2015)则在形态学标注的数据上学习词表示。与我们的方法最接近的是Schutze(1993),它通过SVD来学习字符级4-grams的表示,并通过对4-gram representations进行求和来生成词表示。

NLP的字符级特征(Character level features):与我们工作相关的另一个研究领域是,NLP的字符级模型,它直接从字符序列中学习表示。这种模型的最高级方法是RNN,应用到语言建模(Mikolov 2012)、文本归一化(Chrupala, 2014),、词性标注(Ling.2015)、parsing(Ballesterors.2015)。该模型的另一个家族是在字符上训练的CNN,它可以被应用到:词性标注(Santos,2014)、情感分析(dos Santos.2014)、文本分类(zhang.2015)、语言建模(Kim.2016)。(Sperr.2013)提出了基于受限波尔茨曼机的语言模型,其中词被编码成字符级别n-grams的一个集合。最后,在机器翻译中的最近工作也提出了使用subword units来获取罕见词的表示。(Sennrich.2016)

3.模型

本节中,我们提出了一个模型来学习representations来解释词形。

1.1 通用模型

先简单回顾下(Mikolov et al.,2013b)提出的continuous skip-gram模型,给定一个size=W的词汇表,其中词通过它的索引进行表示 \(w \in {1, ..., W}\),目标是为每个词w学习一个向量表示。受分布式假设的启发,这些表示被训练来预测在一个给定词的上下文中出现的词。更正式的,给定一个大型训练语料,一个词序列: \(w_1, ..., w_T\),它的skip-gram模型的目标函数是最大化log似然:

\[\sum_{t=1}^{T}\sum_{c \in {C_t}}log p(w_c|w_t)\]

其中,上下文\(C_t\)表示在词\(w_t\)周围词的索引集合,给定\(w_t\),预测观察到\(w_c\)的概率。使用一个scoring函数s,可以将(word,context)pair映射到一个R空间的分值上:

\[p(w_c|w_t)=\frac{e^{s(w_t,w_c)}}{\sum_{j=1}^{W}e^{s(w_t,j)}}\]

该问题也可分解为多个二分类问题,目标是预测对应的\(w_c\)是否出现。对于位置t的词,以及上下文c,我们可以得到negative log-likelihood:

\[log(1+e^{-s(w_t,w_c)})+\sum_{n \in {N_{t,c}}} log(1+e^{s(w_t,n)})\]

其中\(N_{t,c}\)是一个从词汇表抽样出的负样本集合。logistic loss函数\(l:x \rightarrow log(1+e^{-x})\),我们可以获得相应的目标函数:

\[\sum_{t=1}^{T}\sum_{c \in C_t}l(s(w_t,w_c))+\sum_{n \in N_{t,c}}l(-s(w_t,n))\]

\(w_t\)和上下文词\(w_c\)采用标量积:$ s(w_t,w_c)=u_{w_t}^{T}v_{w_c} $

1.2 Subword模型

由于每个词会使用一个不同的向量表示,skip-gram模型会忽视词的内部结构。在本部分,我们接着提出一个不同的scoring函数 s,将subword信息考虑进行。给定一个词w,我们定义在w上出现的n-gram集合为:$ G_w\subset{1,…,G} $.我们将一个向量表示\(z_g\)与每个n-gram g相关联。我们可以通过对这些n-gram的向量进行求和来表示一个词。我们获得一个scoring函数:

\[s(w,c)=\sum_{g \in {G_w}}z_g^Tv_c\]

对于词w,它的n-gram集合中总是包含着它,也可以为每个词学到一个向量表示。n-gram集合也是词汇表的一个超集(superset)。需要注意的是,对于共享相同的字序列(sequence of characters)的一个词和一个n-gram,会分配不同的向量给它们。例如,单词”as”和出现在词”paste”中的bigram “as”,会分配给不同的向量。这种简单模型允许在不同的词之间共享representations,从而对一些罕见词学到可靠的向量表示。

1.3 n-gram字典

上述模型很简单,并在\(G_w\)的定义上留下了设计选择的空间。在本paper中,我们采用了一个非常简单的scheme:所有n-gram的长度在[3,6]范围内. 可以使用n-gram的不同集合,例如前缀和后缀。同时,也添加一个特殊字符做为词的开头和结尾,这样就可以区分前缀和后缀。

为了限定模型的内存,使用一个hashing函数,将n-gram映射到[1,K]上。下面,我们使用的K等于200w。在结尾处,一个词可以被表示成在词典中的索引,以及它的n-gram的hash值。为了提升模型效率,我们不会使用n-gram来表示在词汇表中最频繁的P个词。P的选择需要权衡,值越小表示计算代价越高,但性能越好。当P=W时,我们的模型就是skip-gram模型。

1.4 试验

数据集和baseline:将新模型与word2vec的cbow和skip-gram相比较。数据集:5种语言的Wikipedia数据。三种size:小(50M tokens),中(200M tokens),完整。训练使用的epoch为:5.

其它参数:negative-sample: 5, rejection threshold: $ 10^{-4} $, window-size: 5, min-count:5.

  • 小数据集:100维, 中数据集:200维,完整数据集:300维.
  • skip-gram baseline learning-rate: 0.025; CBOW: 0.05, 新模型:0.05

对于英文语料,新模型的训练速度比skip-gram慢1.5倍。

人肉相似度判断

评估向量的质量:计算人肉判断(human judgement)与向量表示之间的cosine相似度之间的Spearman rank相关系数

使用的数据集:

  • 英文:使用 WS353 (Finkelstein et al.2001)以及 RW (Luong et al.2013)
  • 德文:Gur65, Gur350,ZG222(Gurevych, 2005; Zesch and Gurevych, 2006)
  • 法文:RG65(Joubarne and Inkpen, 2011)
  • 西班牙文:WS353(Hassan and Mihalcea, 2009)

这些数据集中的一些词不会在训练数据中出现,对于CBOW方法和skip-gram baseline方法,我们不能获取这些词的向量表示。因此,我们决定排序包含这些词的pairs进行评测。我们在表1中上报了OOV比率。需要注意,我们的方法和baseline共享着相同的词汇表,因此,在相同训练集中的不同方法的结果是可以比较的。另一方面,不同训练语料上的结果是不可比较的,因为词汇表并不相同(具有不同的OOV rates)。

表1:

我们注意到,使用subword信息的新模型的效果在大多数数据集上的效果要好。我们也观察到,字符n-grams的效果,在德文上远比英文、西班牙文上好。一点也不令人吃惊,因为德文的字形更丰富。数据集越小,区别越重要。在RW英文数据集(罕见词数据集)上,新方法效要比baseline要好。

词类比任务(Word analogy)

使用Mikolov et al.(2013a)提出的:句法:syntactic(en-syn),以及语义:semantic(en-sem)来评测,数据集使用cs-all(Svoboda and Brychcin (2016), for Czech, 捷克文)。一些包含words的questions不会在训练语料中出来,我们会排除这些questions,并上报oov rate。所有的方法在相同数据上进行训练,因此可比较。我们上报了表1中的不同模型。我们观察到,字形(morphological)信息对于syntactic任务有极大的帮助,新方法在en-syn上效果要比baseline好。相反的,它在小数据集的semantic任务上,效果有所下降。第二,对于捷克文,一个字形丰富的语言,使用subword信息可以很强地提升效果(对比baseline)。

2.高效文本分类tricks

Mikolov等在中提到了多种高效文本分类的tricks,并提出了fastText。它的分类速度快,又不失精准。在标准多核CPU上训练,超过10亿词上只需要10分钟左右;而对50w的句子,在312K个分类上进行分类,1分钟之内即可完成。听上去有些小激动。

对应paper的研究主要是基于:有名标签预测(namely tag prediction), 情感分析(sentiment analysis),这两个领域做出的。

2.1 模型架构

baseline: 对于句子分类,简单又有效的baseline为:BOW向量 + 一个线性分类器(LR或SVM)。

线性分类器不会共享特征和分类间的参数。对于输出空间很大,但某些类上的训练样本很少的上下文上,这种方法的泛化能力受限。常用的解决方法是,将线性分类器分解为低秩矩阵(Schutze, 1992; Mikolov et al., 2013),或者使用多层神经网络(Collobert and Weston, 2008;Zhang et al., 2015)

图3展示了简单线性模型的秩约束(rank constraint)。第一个权重矩阵A,是一个在words上的look-up table。词向量被平均成一个文本向量,然后输入(feed)到一个线性分类器。文本向量是一个隐变量,它可以尽可能被复用。该架构与Mikolov提出的CBOW模型相似,中间的word被一个label所取代。我们使用softmax函数f来计算在预定义分类上的概率分布。对于N个文档的集合,目标是在这些类上最小化负log-likelihood:

\[-\frac{1}{N}\sum_{n=1}^{N}y_nlog(f(BAx_n))\]

其中xn是第n个文档的归一化的bag of features,yn是label,A和B是权重矩阵。该模型可以在多核CPU上使用SGD和一个线性衰减的learning_rate进行异步训练。

Hierarchical softmax

由于类的数目相当大,计算线性分类器的开销很大。计算复杂度是O(kh),其中k是类的个数,h是文本向量的维度。为了在运行时提升,可以使用基于Huffman树的Hierarchical softmax,具体可以详见另一篇。在训练期,它的计算复杂度下降到O(hlog2(k)).

当在测试阶段时,当查询最可能的分类时,Hierarchical softmax也很有优势。每个节点与一个概率相关,该概率表示从根节点到该节点上路径的概率。如果节点的深度为l+1,相应的父节点为:n1, n2, …, nl,概率为:

\[P(n_{l+1})=\prod_{i=1}^{l}P(n_i)\]

这意味着一个节点的概率总是比它的父节点要低。搜索某一深度的该树时,以及在叶子间跟踪最大概率,允许我们抛弃掉所有小概率的分枝。实际上,我们观察到在测试时,复杂度降到O(hlog2(k))。该方法会进一步扩展到使用binary heap来计算top T个target,开销为O(log(T))。

N-gram features

BOW与词序无关,显式采用该顺序的计算开销通常很大。作为替代,我们使用bag-of-n-grams作为额外的特征来捕获一些关于局部词序的部分信息(partial information)。这在惯例上很有效(Wang and Manning, 2012).

我们使用hashing trick(Weinberger et al., 2009),以及Mikolov et al.(2011)中相同的hashing function,以及10M的bins(如果我们只使用bigrams,否则可能100M),来维持一个快速的、内存高效的n-gram映射。

2.2 实验评测

fastText在两个不同的任务上进行评测。首先,会比较在情感分析(sentiment analysis)问题上的文本分类器。模型的实现可以使用Vowpal Wabbit library,但实际上使用的定制版本要比它快2-5x倍。

情感分析(Sentiment analysis)

数据集与baseline。使用8份由Zhang et al. (2015)提供的相同的数据集以及评测约定。使用Zhang et al. (2015)提供的n-gram和TF-IDF做为baselines。以及Zhang and LeCun (2015)提出的字符级卷积模型(char-CNN), (Xiao and Cho, 2016)提出的字符级卷积RNN模型(char-CRNN), Conneau et al. (2016)提出的极深卷积网络(VDCNN)。我们另外采用了Tang et al. (2015)的评测约定,上报了我们的方法以及他们的两种方法 (Conv-GRNN 和 LSTM-GRNN).

结果:使用10个隐单元,fastText迭代5轮(epochs),learning_rate为{0.05, 0.1, 0.25, 0.5}。在该任务上,添加bigram信息可以提升1-4%的效果。整体的accuracy比char-CNN和char-CRNN稍好一些,比VDCNN略差些。注意,可以使用更多的n-gram可以(略微)提升accuracy,例如:使用trigrams,在Sogou语料上的效果可以提升到97.1%。最终,下图展示了我们的方法与Tang et al. (2015)的比较。在验证集上调整超参数,并观察到:使用n-gram为5-gram时,会达到最佳性能。不同于Tang的方法,fastText不会使用pre-trained word-embeddings,据说在accuarcy上可以有1%的提升。

在训练时间上: char-CNN 和 VDCNN在NVIDIA Tesla K40 GPU训练,fastText的模型在使用20线程的CPU上训练。对于char-CNN,使用最新的CUDA实现,可以有10x的速度提升。fastText则可以在1分钟内完成训练。。。

标签预测

数据集和baselines: 采用YFCC100M数据集(Thomee et al., 2016),包含了100M的图片,带说明(captions),标题(titles),以及标签(tags)。我们只关注title和caption(不使用图片)来预测tags。将出现次数少于100次的words/tags进行移除,将数据分割成训练集/验证集/测试集。训练集包含大于9000W的样本(1.5B的tokens),验证集93W的样本,测试集54W的样本。词汇表的size为30W左右,有31W左右是唯一的tags。我们发布了一个脚本来重新创建该数据集。

我们使用一个基于频率的方法作为baseline,来预测最频繁的标签。我们也比较了Tagspace(Weston et al.,2014)的方法,它与我们的模型相类似,但基于Wsabie model of Weston et al. (2011)。Tagspace模型使用卷积进行描述,我们使用它的线性版本作为baseline。

结果与训练时间:上表为fastText与baseline的比较。比较了fastText 5轮的迭代,与两种隐层size(50, 100)的Tagspace算法。两种模型的隐层size都是小值时,在accuracy上效果相似,但如果增加bigram,会有极大的提升。在测试时,tagspace需要为所有类计算分值,这会相当慢,当类数目很大时(本例中为:300K),fastText的inference则会很快!

参考

我们来看下2010提出的《Learning from Logged Implicit Exploration Data》,LinUCB的姐妹篇,具体方法如下:

摘要

对于在”contextual bandit”或”partially labeld” setting中(只有一个选中的action的值会被学到)使用非随机探索数据(nonrandom exploration data),我们提供了一个合理和一致的基础。在许多settings中的主要挑战是:探索策略(exploration policy)并非显式可知,“离线(offline)”数据会记录下。之前提出的解决方案是需要在学习期间对actions进行控制,记录下随机探索、或者以一种可重复的方式遗忘式(obliviously)的选择actions。这里提出的该技术会解除这些限制,学习一个policy,使得:在给定来自历史数据的features(随机化没有出现或者被记录)下选择actions

介绍

考虑广告展示问题,一个搜索引擎公司会选择一个ad来展示给它的目标用户。当用户点击展示的ad时,会产生来自广告主付费的收益(Revenue)。该问题的经济特性,产生了许多著名的公司。

在讨论提出的方法前,我们将该问题公式化,接着解释为什么许多常见方法会失败。

上下文探索(contextual exploration)的warm-start问题

假设:

  • X是一个任意输入空间
  • \(A=\lbrace 1, \cdots, k \rbrace\)是一个actions集合

那么,contextual bandit问题的一个实例,可以通过在tuples \((x, \vec{r})\)上的一个分布D来指定,其中:\(x \in X\)是一个输入,\(\vec{r} \in [0, 1]^k\)是一个关于rewards的向量。事件(Events)会以一个round-by-round的方式发生,其中每个round t有:

  • 1.抽取\((x, \vec{r}) \sim D\),并公布x
  • 2.算法会选择一个action \(a \in A\),可以是一个关于x和历史信息的函数
  • 3.公布action a的reward为\(r_a\),但不会公布\(a'\neq a\)是\(r_{a'}\)

理解以下这点很重要:这不是一个标准的监督学习问题,因为其它actions \(a' \neq a\)的reward并没有透露(注:有点绕,即隐式的)。

在该setting中标准的目标是:在多轮交互上最大化rewards \(r_a\)的求和。为了这样做,使用之前记录的events来在第一轮交互上形成一个好的policy是很重要的。因而,这就是一个”warm start”问题。

正式的,给定一个形如\(S=(x, a, r_a)^*\)的dataset,它通过一个uncontrolled logging policy进行交互(interaction)生成,我们希望构建一个policy h来最大化(近似或逼近)下面的期望:

\[V^h := \underset{(x,r) \sim D}{E} [r_{h(x)}]\]

有许多方法尝试解决该问题的会失败:以下是一些尝试解决该问题的方法,但被证明是不适合的:

  • 1.监督学习:我们可以学到一个regressor \(s: X \times A \rightarrow [0,1]\),它可以在观察到的events上基于action a和其它信息x,训练来预测reward。从该regressor,一个policy可以根据\(h(x)=argmax_{a \in A} s(x,a)\)来生成。该方法的缺点是,argmax会超出在训练数据中未包含的选择集合,因此不能被泛化。这可以通过一些极端情况进行验证。假设,有两个actions a和b,其中action a出现\(10^6\)次,action b出现\(10^2\)次。由于action b的次数比例只占\(10^{-4}\),一个学习算法会强迫在预测\(r_a\)和\(r_b\)的期望值间做权衡,并压倒性地偏向于估计\(r_a\),代价是精准估计\(r_b\)。然而,在应用上,action b可能会被argmax选中。当action b出现0次时,该问题会更糟糕
  • 2.Bandit方法:略
  • 3.Contextual Bandits:略
  • 4.Exploration Scavenging:略
    1. 倾向指数(Propensity Scores), naively:当进行一个调查时,提问一个关于收入的问题,接着在不同收入级别上的回答者的比例,可以与基于参与该调查所选中的某些人的收入估计一个条件概率进行对比。给定该估计概率,结果可以被importance-weighted来估计在整个人口(population)上的平均调查结果。这里,该方法是有问题的,因为policy会做出决策,当记录数据是deterministic而非probabilistic。换句话说,对logging policy选择一个ad的概率的精准预测,意味着总是预测0或1, 这对于我们的目标是没用处的。尽管propensity scores的直接使用并不work,我们采用的该方法可以被认为是,对于一个propensity score的更好使用,下面会讨论。Lambert[4]提供了一个在互联网ad环境中关于propensity scoring的一个良好解释。

而我们的方法分为三个step:

  • 1.对于每个event \((x,a,r_a)\),使用回归(regression)来估计logging policy会选择action a的概率(probability) 为\(\hat{\pi}(a \mid x)\)。这里,“probability”是随时间变化的——我们可以想像:在不同时间点,采用一个均匀随机的方式从policies集合(可能是deterministic)中抽取。
  • 2.对于每个event \((x,a,r_a)\),根据\((x,a,r_a, \frac{1}{max \lbrace \hat{\pi}(a \mid x), \tau \rbrace})\),创建一个synthetic controlled contextual bandit event,其中\(\tau > 0\)是一些参数。\(\frac{1} { max \lbrace \hat{\pi}(a \mid x), \tau \rbrace}\)这个量是一个importance weight,它指定了当前event对于训练是有多重要。需要明确的是,参数\(\tau\)对于数值稳定性很重要。
  • 3.应用一个offline contextual bandit算法到synthetic contextual bandit events集合上。在我们第二个实验结果的集合(4.2节)中,采用的argmax regressor的变种使用了两个关键修改之处:(a) 我们将argmax的范围限定在具有正概率的那些actions上 (b) 我们对events进行importance weight,以便训练过程会强调对于每个action平等的好估计。需要强调的是,在本paper中的理论分析可以应用于对于在contextual bandit events学习上的任何算法——我们选择该方法是因为它很容易在已存在方法上进行简单修改。

上述方法与前面提到的Propensity Score方法相似。相对它来说,我们使用一个不同的概率定义,当logging policy完全确定时该概率不必是0或1.

当考虑该方法时,会有三个关键问题:

  • 1.在当给定特征x时,logging policy会确定式(deterministically)选中一个action (ad) a,\(\hat{\pi}(a \mid x)\)意味着什么,?基本observation:一个policy如果在day 1会确定式选中action a、接着在day 2会确定选中action b,这可以被看成是:(当events数目在每天都相同时,并且events间是IID的),在action a和b间使用概率0.5进行随机化。因而,在logged events的时间跨度上,\(\hat{\pi}(a \mid x)\)是一个给定特征x关于action a被展示的期望频率的估计。第3节中,我们会展示该方法在期望上是合理的,它提供了关于new policy的值的一种无偏估计。
  • 2.在\(\hat{\pi}(a \mid x)\)上的客观误差(inevitable errors)是如何影响该过程的?结果表明它们有影响,取决于\(\tau\)。对于非常小的\(\tau\)值,\(\hat{\pi}(a \mid x)\)的估计必须极其精准来生成好的效果;而对于更大的值,会需要更小的accuracy。第3.1节会证明健壮性
  • 3.参数\(\tau\)是如何影响最终结果的?当在估计过程中创建一个bias时,结果表明该bias的形式是很轻微的并且相对合理的——基于条件x具有低频展示的actions具有一个under-estimated value。这与期望的对于没有频率的actions的限制是一致的。

2.问题设定和假设

假设:

  • \(\pi_1, \cdots, \pi_T\)是T个policies,

对于每个t,\(\pi_t\)是一个函数,它会将X的input映射到在A上的一个可能的deterministic分布。该学习算法会给定一个关于T个样本的dataset,每个样本形如:\((x,a,r_a) \in X \times A \times [0,1]\)(注:0,1为reward),其中:

  • \((x,r)\)按第1节所述的方式从D中抽取
  • action \(a \sim \pi_t(x)\)根据第t个policy被选中。

我们将该随机过程通过\((x,a,r_a) \sim (D, \pi_t(\cdot \mid x))\)来表示。相似的,与T个policies的交互会产生一个关于T条样本的序列S,我们表示为:\(S \sim (D, \pi_i(\cdot \mid x))_{i=1}^T\)。该learner不会给出关于\(\pi_t\)的先验知识。

offline policy estimator

给定一个数据集:

\[S = \lbrace (x_t, a_t, r_{t,a_t}) \rbrace_{t=1}^T\]

…(1)

其中:\(\forall t, x_t \in X, a_t \in A, r_{t,a_t} \in [0, 1]\)

我们会生成一个predictor \(\hat{\pi}: X \times A \rightarrow [0,1]\),接着使用它与一个阀值\(\tau \in [0,1]\)为一个policy h的value形成一个offline estimator。

正式的,给定一个new policy h: \(X \rightarrow A\)以及dataset S,将estimator 定义为:

\[\hat{V}_{\hat{\pi}}^h(S) = \frac{1}{|S|} \sum\limits_{(x,a,r) \in S} \frac{r_a I (h(x)=a)}{max \lbrace \hat{\pi}(a \mid x), \tau \rbrace}\]

…(2)

其中,\(I(\cdot)\)是指示函数(indicator function)。我们会使用符号\(\hat{V}_{\hat{\pi}}^h\),因为没有歧义。\(\tau\)的目标是sum中个别项的上界,与之前的robust importance sampling方法相似。

3.理论成果

我们接着展示了我们的算法和主要理论成果。主要思想有两个:

  • 1.我们具有一个policy estimation阶段,其中我们估计未知的logging policy;
  • 2.我们具有一个policy optimization阶段,其中我们会使用我们估计的logging policy。

我们的主要结果,提供了一个泛化边界——解决estimation和optimization error对于total error贡献的问题。

logging policy \(\pi_t\)可能是确定的(deterministic),这意味着:基于logging policy中的随机化的常用方法是不可用的。我们会在下面展示:当现实情况是IID条件、并且policy会随actions的不同而变化时,这是ok的。我们会有效使用算法中的随机化标准方法来替代现实中的随机

一个基本断言(假设)是:在期望上的estimator等价于一个随机policy(stochastic policy),定义如下:

\[\pi(a | x) = \underset{t \sim UNIF(1,\cdots,T)}{E} [\pi_t (a | x)]\]

…(3)

其中,\(UNIF(\cdots)\)表示均匀分布。

stochastic policy \(\pi\)会在T policies \(\pi_t\)上随机均匀选择一个action。我们的第一个结果是,当现实中根据\(\pi\)或者policies序列\(\pi_t\)进行选择actions时,我们的estimator的期望值与是相同的。尽管该结果和它的证明是简单的,它是本paper后面部分的基础。注意,policies \(\pi_t\)可以是任意的,但我们会假设,它们不依赖于用于evaluation的数据。该假设只对证明来说是必要的,可以在实际中放宽些,如4.1节。

定理3.1: 对于在T轮上做出相同抽取的任意contextual bandit问题D,对于任意可能的stochastic policies \(\pi_t(a \mid x)\)的序列(\(pi\)由上面求得),以及对于任意的预测 \(\hat{\pi}\),有:

\[E_{S \sim (D,\pi_i(\cdot|x))_{i=1}^T} \hat{V}_{\hat{\pi}}^h(S) = E_{(x,\vec{r}) \sim D, a \sim \pi(\cdot |x)} \frac{r_a I (h(x)=a)}{max \lbrace \hat{\pi}(a|x), \tau \rbrace}\]

…(4)

S就是上面指的dataset。

当在更简单、更标准的setting中(使用单一固定的(fixed) stochastic policy)使用T个policies时,该定理与我们的estimator的期望值相关。

3.1 Policy Estimation

在本节中,我们展示了如果\(\tau\)和\(\hat{\pi}\)的值选得合适,我们的estimator在评估new policies h时会足够精准。我们会进而使用前面章节的简化版,它展示了:我们可以将数据看成是由一个确定的stochastic policy \(\pi\)生成,比如:对于所有t来说,\(\pi_t = \pi\)

对于一个给定的关于\(\pi\)的估计(estimate): \(\hat{\pi}\),我们通过下式来定义一个”regret”函数(\(reg:X \rightarrow [0,1]\)):

\[reg(x)= \underset{a \in A}{max} [(\pi(a \mid x) - \hat{\pi}(a \mid x))^2]\]

…(5)

上面我们没有使用\(l_1\)和\(l_\infty\) loss,因为它们比\(l_2\) loss更难最小化。我们接下来的结果是:new estimator是一致的(consistent)。在接下来的理论声明中:

  • \(I(\cdot)\)表示了indicator function
  • \(\pi(a \mid x)\)是logging policy在输入x上选择action a的概率
  • \(\hat{V}_{\hat{\pi}}^h\)是由等式(2)基于参数\(\tau\)的定义

引理3.1

假设:

  • \(\hat{\pi}\)是从X到在actions A分布上的任何函数
  • \(h: X \rightarrow A\)是任意的deterministic policy。
  • \(V^h(x) = E_{r \sim D(\cdot \mid x)}[r_{h(x)}]\)表示在input x上执行policy h的期望值

我们有:

\[E_x [ I(\pi(h(x) | x) \geq \tau) \cdot (V^h(x) - \frac{\sqrt{reg(x)}}{\tau}) ] \leq E[\hat{V}_{\hat{\pi}}^h] \leq V^h + E_x [ I(\pi(h(x) \mid x) \geq \tau) \cdot \frac{\sqrt{reg(x)}}{\tau} ]\]

注:在上式中,期望\(E[\hat{V}_{\hat{\pi}}^h]\)会在关于T个tuples \((x,a,r)\)的所有序列上计算,其中\((x,r) \sim D\)以及\(a \sim \pi(\cdot \mid x)\)

该引理限制了在我们的estimate \(V^h(x)\)上的bias。有两个bias来源:一个来自于在估计\(\pi(a \mid x)\)的\(\hat{\pi}(a \mid x)\)引入的error,另一个来自于阀值\(\tau\)。 对于第一个来源,我们根据squared loss分析了结果,因为限定在squared loss估计上的regret的抽样复杂度是可行的。

引理3.1展示了:一个policy h的估计\(\hat{V}_{\pi}^h\)的期望值(expected value),是关于policy h的真实值(true value)的一个下界的近似,其中该近似(approximation)主要归因于在estimate \(\hat{\pi}\)中的errors,下界(lower bound)主要归因于阀值\(\tau\)。当\(\hat{\pi} = \pi\)时,引理3.1可以简化成:

\[E_x [ I(\pi(h(x) | x) \geq \tau) \cdot V^h(x)] \leq E[\hat{V}_{\hat{\pi}}^h] \leq V^h\]

这样,有了一个关于\(\pi\)的完美predictor,estimator \(\hat{V}_{\hat{\pi}}^h\)的期望值(expected value)是一个在policy h的真实值(true value)(即\(V^h\))上有保证的下界。然而,正如该断言的左侧建议,它可以是一个非常松的界,特别是当由h选中的action被\(\pi\)选中概率通常较小时。

引理3.1中\(1/\tau\)的依赖有点烦,但不可避免。考虑到bandit问题的一个实例:它具有一个input x,两个action \(a_1,a_2\)。

假设:对于一些positive \(\epsilon\)有\(\pi(a_1 \mid x) = \tau + \epsilon\),\(h(x)=a_1\)就是我们正评估的policy。

进一步假设:rewards总是为1,并且\(\hat{\pi}(a_1 \mid x) = \tau\)。

那么,该estimator满足:

\[E[\hat{V}_{\hat{\pi}}^h]=\pi(a_1 \mid x) / \hat{\pi}(a_1 \mid x) = (\tau + \epsilon) / \tau\]

因而,在estimate中的期望值是:

\[E[\hat{V}_{\hat{\pi}}^h] - V^h = |(\tau+\epsilon)/\tau - 1| = \epsilon /\tau\]

其中:\(\hat{\pi}\)的regret为:

\[(\pi(a_1 \mid x) - \hat{\pi}(a_1 \mid x))^2 = \epsilon^2\]

3.2 Policy Optimization

之前章节证明,我们可以通过观察一个stochastic policy \(\pi\)来有效评估一个policy h,只要由h选中的actions在\(\pi\)下有足够的支持,特别的:对于所有inputs x来说,有\(\pi(h(x) \mid x) \geq \tau\)。然而,我们通常感兴趣的是:在观察到logged data后,从一个policies集合H中选择最好的policy h。再者,如第2节所述,logged data从T个固定的、可能是deterministic的policies \(\pi_1, \cdots, \pi_T\)来生成,而非单个stochastic policy。如第3节所述,我们通过等式3定义了stochastic policy \(\pi\):

\[\pi(a | x) = E_{t \sim UNIF(1,\cdots,T)}[\pi_t(a | x)]\]

3.1节的结果可以应用到policy optimization问题上。然而,注意,该数据被看成是通过从一个关于T个policies \(\pi_i, \cdots, \pi_T\)的执行序列上抽取得到,而非从\(\pi\)上进行T个抽取得到。

接下来,我们展示了使用在H(在\(\pi\)下得到充分支持)中最好的hypothesis可能效果很好。(即使数据不是从\(\pi\)中生成的)

定理3.2

假设:

  • \(\hat{\pi}\)是任意从X到actions A分布的函数
  • H是任意deterministic policies的集合

定义:

  • \[\tilde{H}=\lbrace h \in H \mid \pi(h(x) \mid x) > \tau, \forall x \in X \rbrace\]
  • \[\tilde{h} = argmax_{h \in \tilde{H}} \lbrace V^h \rbrace\]

假设:

  • \(\hat{h} = argmax_{h \in H} \lbrace \hat{V}_{\hat{\pi}}^h \rbrace\)是最大化在等式(2)中定义的empirical value estimator的hypothesis。

接着,概率至少为\(1-\delta\):

\[V^{\hat{h}} \geq V^{\tilde{h}} - \frac{2}{\tau} (\sqrt{E_x[reg(x)]} + \sqrt{\frac{ln(2|H|/\delta)}{2T}})\]

…(6)

其中,reg(x)是定义好的,对应于\(\pi\),在等式(5)中

定理3.2的证明依赖于我们estimator的下界特性(引理3.1的左侧不等式)。换句话说,如果H包含了一个非常好的policy,它在\(\pi\)下得到较小支持,我们不能通过我们的estimator来检测它。换句话说,我们的estimation是安全的,我们从不会激烈地过度估计(overestimate)在H中任意policy的value。“underestimate, but don’t overestimate”的特性,对于应用optimization技术来说很重要,这意味着我们可以使用一个不受限的学习算法来生成一个warm start policy。

4.评估

我们在两个来自Yahoo!的真实数据集中评估了我们的方法。第一个数据集包含了均匀随机的曝光数据,该数据集中可以获取一个关于任意policy的无偏估计。该数据集接着用于验证我们的offline evaluator(2)的accuracy。第二个数据集接着会演示如何从非随机离线数据中去做policy optimization。

4.1 实验I

第一个实验涉及了在Yahoo!首页”Today Module”上的新闻推荐。对于每个用户访问,该模块会从一个小的候选池中(由编辑人工挑选)选出一个高质量的新闻文章进行展示。该池子会在任意时刻包含20篇左右的文章。我们的目标是:对highlighted出的该文章的点击率(ctr)最大化。该问题可以被建模成一个contextual bandit问题,其中,context包含了user和article的信息,arms对应于articles,一篇被显示文章如果被点击则reward是1, 否则为0. 因此,一个policy的值就刚好等于它的整体(overall)CTR。为了保护商业敏感信息,我们只提供了归一化CTR(nCTR: normalized CTR),它被定义成是:真实(true) CTR与一个random policy间的比值(ratio)。

我们的数据集被表示成\(D_0\),它从Yahoo!首页的真实流量中收集,时间为2009年6月的两个星期。它包含了\(T=64.7M\) events,形式为三元组(x,a,r):其中context x包含了user/article的特征,arm a从一个动态候选池A中随机均匀的方式选中,r是一个二元reward信号表示用户是否点击了a。由于actions的选择是随机的,我们有:\(\hat{\pi}(a \mid x) = \pi(a \mid x) \equiv 1/ \mid A \mid\)且\(reg(x) \equiv 0\)。因此,引理3.1意味着当提供\(\tau < 1/ \mid A \mid\)时\(E[\hat{V}_{\hat{\pi}}^h] = V^h\)。更进一步,Hoeffding不等式的简单应用,保证了对于任意的policy h,\(\hat{V}_{\hat{\pi}}^h\)以\(O(1/\sqrt{T})\)的速率向\(V^h\)集中,这在经验上是可被验证的。给定dataset的size大小,我们使用该dataset并在(2)中使用\(\hat{\pi}(a \mid x)=1/\mid A \mid)\)来计算\(\hat{V}_0 = \hat{V}_{\hat{\pi}}^h\)。结果\(\hat{V}_0\)接着被看成是”ground truth”,当使用非随机log data来替代时,可以评估offline evaluator (2)有多准确。

为了获取非随机的log data,我们使用offline bandit仿真过程来运行LinUCB算法,在我们的随机log data \(D_0\)上,对于被记录的events \((x,a,r)\),UCB会在context x下选择arm a。注意,这里的\(\pi\)是一个deterministic学习算法,在不同的timesteps上对于相同的context可以选择不同的arms。我们称该被记录的events子集为 \(D_\pi\)。该recorded events集合与我们在真实的yahoo!首页的用户访问上运行LinUCB具有相同的分布。我们使用\(D_{\pi}\)作为非随机的log data,并进行了evaluation。

为了定义policy h进行evaluation,我们使用\(D_0\)跨所有用户来估计每篇article的整体CTR,接着h被定义成使用最高的估计得到的(estimated)CTR来选择该篇article。

我们接着使用offline evaluator (2)在\(D_\pi\)上对h进行评估。由于关于articles的A集合会随时间变化(新的文章会被增加,老文章被淘汰),\(\pi(a \mid x)\)会非常小,因为在两周时间中的文章量会很大,从而产生大的variance。为了解决该问题,我们将dataset \(D_\pi\)划分成子集,在每个子集中候选池仍是常数,接着使用ridge regression在特征x上为每个子集单独估计\(\pi(a \mid x)\)。我们注意到,这可以使用更多高级的条件概率估计技术。

图1绘出了:以ground truth \(\hat{V}_0\)为参照,\(\hat{V}_{\hat{\pi}}^h\)会随着\(\tau\)变化。正如所愿,随着\(\tau\)变得更大,我们的estimate可以变得更(向下)偏离(biased)。对于一个大范围的\(\tau\)值,我们的estimates是非常准确的,这意味着我们提出的方法是有意义的。作为对比,一个naive方法:假设\(\pi(a \mid x) = 1/\mid A \mid\)会给出一个非常差的估计。

图1:

对于十分小的\(\tau\)值,看起来是一个趋向该policy value的过度估计。这是因为,事实上一个正随机变量的负moments,通常到大于它对应期望的moments。

注意,我们使用的logging policy \(\pi\),会与证明引理3.1所使用的一个假设相矛盾,也就是说,在timestep t上的exploration policy不会与一个更早的event相依赖。我们的offline evaluator在该setting中是准确的,这意味着该假设在实际中是可变宽松的。

4.2 实验II

在第二个实验中,我们会在warm-start问题上研究我们的方法。该数据集由Yahoo!提供,包含了在2008年一个月周期的数据。该数据由events日志(x,a,y)组成,其中,每个event表示了一个user访问了一个特定web页面x(它来自于一个大的web页集合X)。商业系统会从一个大的广告集合A中选择单个广告a放置到最前置、最重要的位置。它也会选择额外的广告来展示,但在我们的测试中会忽略。输出y是一个indicator,表示用户是否点击了该ad。

在该dataset中的ads数近似为880000个。训练数据集包含了3500w的events。test数据集包含了1900w的event,它们在训练集中的events之后发生。去重的web页数目为3400w。

我们基于当前页,训练一个policy h来选择一个广告,使得能最大化点击概率。为了学习,每个ad和page在内部都被表示成一个稀疏高维的feature vector。在page中或ad中出现的词(words)所对应于的features,可以通过词频进行加权。每个ad平均包含了30个ad features,每个page包含了大约50个page features。f的特征形式在它的输入(x,a)的特征上是线性的。(注:所使用的feature vector通常是page vector和ad vector的笛卡尔积)

被优化的指定policy,具有一个argmax形式:\(h(x)=argmax_{a \in C(x)} \lbrace f(x,a) \rbrace\),在关于f(x,a)如何被训练的问题上与之前的方法不同。这里:\(f: X \times A \rightarrow [0,1]\)是一个regression函数,它被训练用来估计点击概率,并且\(C(x)=\lbrace a \in A \mid \hat{\pi}(a \mid x) > 0 \rbrace\)是一个可行ads的集合。

训练样本的形式为:(x,a,y),其中y=1表示ad a在被展示到page x时被点击,否则为0。regressor f被选择用来逼近最小化weighted squared loss:\(\frac{(y-f(x,a))^2}{max \lbrace \hat{\pi}(a_t \mid x_t), \tau \rbrace}\)。使用SGD来最小化squared loss。

在评估期间,我们会计算在test data \((x_t, a_t, y_t)\)上的estimator:

\[\hat{V}_{\hat{\pi}}^h = \frac{1}{T} \sum\limits_{t=1}^T \frac{y_t I(h(x_t)=a_t)}{max \lbrace \hat{\pi}(a_t | x_t) , \tau \rbrace}\]

…(7)

如简介所述,该estimator是有偏的,因为使用了参数\(\tau > 0\)。如第3节分析所示,该bias通常会欠估计(underestimate)policy h的true value。

我们解释了使用不同的阀值\(\tau\)以及其它参数。结果如表2所示。

Interval列的计算使用Chernoff bound相对熵的形式,\(\delta=0.05\)持有假设:变量是IID的,(即:在我们的case中,用于estimator计算的样本)。注意,该计算有些复杂,因为变量的范围是\([0, 1/\tau]\),而非常见的\([0, 1]\)。这可以通过乘以\(\tau\)来进行缩放,应用到bound上,接着将结果乘以\(1/\tau\)进行缩放。

“random” policy指的是,从feasible ads集合中随机选择:\(Random(x)=a \sim UNIF(C(X))\),其中\(UNIF(\cdot)\)表示均匀分布。

“Naive” policy对应于理论上有缺陷的监督学习方法(在介绍中详细说过)。这种policy的evaluation相当昂贵,需要每个example每个ad进行一个evaluation,在此,test set的size被减小到一个click 8373个examples,这会减小结果的重要性。通过按时间先后顺序选择在test set中的第一个events(例如:在training set中与它们最相似的events),我们会将该结果偏向于naive policy。然而,naive policy会收到0 reward,这要比其它方法都要小很多。使用这种evaluation的一个可能担忧之处是,naive policy总是会找到那些不会被explored的good ads。一种快速验证表明:这是不正确的——naive argmax会简单地做出难以置信的选择。注意,我们只上报了evaluation against \(\tau=0.05\),因为evaluation against \(\tau=0.01\)并不明显,尽管reward仍是0.

“Learned” policies会依赖于\(\tau\)。如定理3.2所示,随着\(\tau\)是减小,我们相竞争的hypotheses的有效集合是增加的,从而允许learned policy具有更好的效果。确实,当我们把\(\tau\)从0.05减小到0.01时,learned policy和random policy的估计会同时提升。

在test set上的empirical CTR是0.0213,要比最好的learned policy的estimate稍稍大些。然而,该数目并不直接可比,因为estimator在该policy的true value上提供了一个下界(这是由于一个非零的\(\tau\)会引入bias,因为任意部署的policy只会从可以展示的ads集合中选择,而非所有的ads集合(它们可能在某个时间点上未被展示过))。

empirical结果与理论方法大致是consistent的——它们提供了一个一致的关于policy value的最坏估计,不过它们具有足够动态的范围来区分learned polices vs. random policies,以及learned policies在更大空间(更小\(\tau\))vs.更小空间(更大\(\tau\))上,理论上不完善的naive方法 vs 合理的方法(在ads的explored空间上进行选择)。

5.结论

我们在理论上和经验上发表、调整、和评估了首个方法:使用来自controlled bias和estimation的logged data,解决在exploration的warm-start问题。该问题对于推荐内容给用户的互联网公司的应用是很有吸引力的。

然而,我们相信,这对于机器学习的其它应用领域也具有吸引力。例如,在reinforcement learning中,offline policy evaluation的标准方法会基于importance weighted samples[3,11]。这里发表的这个基本结果可以被应用到RL setting中,消除了这个必要条件:即显式(explicitly)一个选中action的概率,从而允许RL agent从来自其它agents的外部observations中进行学习

参考