## WWW 2017精选论文 涉及数据库、数据挖掘分析、应用机器学习、搜索引擎技术等多方面技术的顶级会议第26届万维网大会(26th International World Wide Web Conference) 今年4月3日-7日在南半球的澳大利亚珀斯举行。历史上,万维网大会都是讨论重要学术成就的,特别是关于互联网科技发布的重要学术和技术大会。因为这个会议涵盖非常广泛的主题,而且一般的读者很难从浩如烟海的文献中即刻抓取到有用信息,笔者从众多文章中精选出5篇有代表性的文章,为读者提供思路。 #### Beyond Globally Optimal: Focused Learning for Improved Recommendations **概要:这篇文章探讨的是如何平衡一个全局的目标函数和一个局部的目标函数,从而使得推荐系统的结果最佳。** 本文来自一群前 CMU 学者,目前在 Google 和 Pinterest。这篇文章试图解决什么问题呢?具体说来,就是作者们发现,传统的推荐系统,基于优化一个全局的目标函数,通常情况下往往只能给出一个非常有“偏差”(Skewed)的预测分布。也就是说,传统的推荐系统追求的是平均表现情况,在很多情况下的预测其实是十分不准确的。这个情况在评价指标是 Root Mean Squared Error(RMSE)的时候,尤为明显。作者定义了一个叫做 Focused Learning 的问题,如果让模型在一个局部的数据上能够表现出色。那么,为什么需要模型在一个局部的数据上表现出色呢?作者们做了这么一件事情,那就是对每个用户,以及每一个物品的预测误差(Error)进行了分析统计,发现有不小比例用户的预测误差比较大,也有不小比例的物品预测误差比较大。 作者们发现模型在一些数据上存在着系统性的误差较大的问题,而不是偶然发生的情况。于是又从理论上进行了对这个问题一番讨论。这里的讨论十分巧妙,大概的思路就是,假定现在全局最优的情况下,模型参数的梯度已经为0,但模型的 Loss 依然不为0(这种情况很常见)。那么,就一定存在部分数据的参数梯度不为0,因为某一部分数据的 Loss 不为0。这也就证明了部分数据的模型参数在这些数据上的表现一定不是最优的。值得注意的是,这个证明非常普遍,和具体的模型是什么类型没有关系。 在有了这么一番讨论之后,作者们如何解决这个问题呢?本文走了 Hyper-parameter Optimization 的道路。文章展示了这在普通的 Matrix Factorization 里面是如何做到。具体说来,就是对于某个 Focused Set 做 Hyper-parameter 调优,使得当前的 Hyper-parameter 能够在 Focused Set 上能够有最好表现。而这组参数自然是针对不同的 Focused Set 有不同的选择。 文章提到的另外一个思路,则是对 Focused Set 以及非 Focused Set 的 Hyper-parameter 进行区分对待,这样有助于最后的模型能够有一个比较 Flexible 的表达。文章在实验的部分针对几种不同的 Focused Set 进行了比较实验。比如,针对 Cold-Start 的物品,针对 Outlier 的物品,以及更加复杂的 libFM 模型都进行了实验。我们在这里就不去复述了。 总体来说,Focused Learning 在不同的数据集上都得到了比较好的提升效果。同时,作者们还针对为什么 Focused Learning 能够 Work 进行了一番探讨,总体看来,Focused Learning 既照顾了 Global 的信息,同时又通过附加的 Hyper-parameter 调优对某一个局部的数据进行优化,所以往往好于 Global 的模型以及也好于单独的 Local 模型。本文非常适合对推荐系统有兴趣的学者和工程人员精读。 #### Collaborative Metric Learning **摘要:这篇文章是重新思考推荐系统中人们常常直接使用的点积的概念。文章的核心是看能否使用 Metric Learning 来寻找更加合适的近似表达。** 本文作者来自加州大学洛杉矶分校(University of California at Los Angeles)以及康奈尔科技大学(Cornell Tech)。文章的核心思想是如何把 Metric Learning 和 Collaborative Filtering(CF)结合起来,从而达到更好的推荐效果。 为什么会想到把 Metric Learning 结合到 CF 上面呢?文章做了比较详细的交代。这里面的重点来自于传统的基于 Matrix Factorization 的 CF 模型都使用了 Dot-Product 来衡量用户向量(User Vector)和物品向量(Item Vector)的距离。也就是说,如果 Dot-Product 的值大,就代表两个向量相近,值小就代表距离远。对于 Dot-Product 的默认使用已经让广大研究人员和实践者都没有怎么去质疑过其合理性。 文章指出,Dot-Product 并不是一个合理的距离测度,因此可能会带来对于相似度的学习不准确的问题。这里简单说一下什么是一个合理的距离测度。一个距离测度需要满足一些条件,而其中比较普遍的条件是所谓的“三角不等式”,“三角不等式”关系其实也就是说,距离的大小是有传递性的。举例来说,就是如果 X 与 Y 和 Z 都相近,那么 Y 和 Z 也应该相近。也就是说,相似度是可以传播的,在使用一个合理的距离测度的情况下。然而,文章指出 Dot-Product 并不具备这样的相似传递性,因此在实践中常常会不能有效得学习到数据中全部的信息。Metric Learning 就是如何在一定的假设下,进行有效距离测度学习的工具。文章使用了一种 Relaxed Version 的 Metric Learning,叫做 Large-Margin Nearest Neighbor(LMNN)来学习数据之间的相似度。LMNN 简单说来,就是同一个类型的数据应该更加紧密聚集在一起(通过 Euclidean Distance),而不同类的数据应该远离。同时,同类的数据和不同类的数据之间保持一个 Margin(模型的一个参数)的安全距离。作者们把这个概念拿过来,应用在 CF 的场景下,做了进一步的简化,那就是把“相同类数据聚合”这个部分去掉了,仅仅留下了“不同类远离”这个部分。作者们认为,一个物品可能被多个人喜欢,那么在这样的含义下,很难说清楚,到底怎么聚类比较有意义。具体说来,一个用户所喜欢的物品要远离这个用户所不喜欢的物品,同时这个距离会被一个与 Rank(这里所说的 Rank 是指物品的排序)有关 Weight 所控制。也就是 Rank 越大,所产生的 Penalty 就越大。文章具体采用了一个叫 Weighted Approximate Rank Pairwise Loss(WARP)的 Loss 来对 Rank 进行 Penalty。这个 WARP 是早几年的时候还在 Google 的 Weston 等人提出的,目的是要对排在 Rank 比较大的正样本(Positive Instance)做比较大的 Penalty。这里就不复述 WARP 的细节了。 除了外加 WARP 的 Metric Learning,本文还为整个模型的目标函数加了不少“作料”。“作料一”使用了 Deep Learning 来学习从物品的 Feature 到物品的 Latent Vector 的映射,解决了 Cold-start 的问题。“作料二”则是对物品和用户的 Latent Vector 都做了正则化,使得学习起来更加 Robust。文章简单描述了整个模型的训练过程。 整个模型的目标函数由三个部分组成:Metric Learning 部分,加 Deep Learning 的部分,外加正则化的部分。比较意外的是,文章并没有提及模型在训练好以后如何在 Test 数据上进行 Inference。文章在一系列标准数据集上做了测试,对比的 Baseline 也比较完整。总体说来,提出的模型都能达到最好的效果,有些在目前比较好的模型基础上能够提高10%以上,这比较令人吃惊。比较遗憾的是,文章并没有很好的展示这个模型的三个模块究竟是不是都必须。值得一提的是,文章指出使用了 WARP 的任何模型(包括本文章提出的模型)都要好于其他的模型。这篇文章总的来说还是可以参考。虽然有一些细节很值得推敲,但是,提出把 Metric Learning 引入到 CF 里来说,还是有一定价值的。建议对推荐系统正在研究的学者精读,对推荐系统有兴趣的实践者泛读。 #### Situational Context for Ranking in Personal Search **摘要:如何通过深度学习模型和场景信息来提高个人搜索质量。** 本文作者群来自于 University of Massachusetts Amherst(UMASS)以及 Google。UMASS 因为 W. Bruce Croft(Information Retrieval 领域的学术权威)的原因 ,一直以来是培养 IR 学者的重要学校。文章做这种的 Michael Bendersky 以及 Xuanhua Wang 都是 Bruce Croft 过去的学生。这篇文章想要讨论的是如何在个人搜索(Personal Search)这个领域根据用户的场景和情况(Situational Context)来训练有效的排序模型(Ranking Model)。这篇文章的核心思想其实非常直观: 第一,场景信息对于个人搜索来说很重要,比如时间、地点、Device,因此试图采用这些信息到排序算法中,是非常显而易见的。 第二,作者们尝试采用 Deep Neural Networks 来学习 Query 以及 Document 之间的 Matching。 具体说来,作者们提出了两个排序模型来解决这两个设计问题。第一个模型应该说是第二个模型的简化版。 第一个模型是把 Query、Context,以及 Document 当做不同的模块元素,首先对于每一个模块分别学习一个 Embedding 向量。与之前的一些工作不同的是,这个 Embedding不是事先学习好的(Pre-Trained)而是通过数据 End-to-End 学习出来的。有了各个模块的 Embedding 向量,作者们做了这么一个特殊的处理,那就是对于不同的 Context(比如时间、地点)学习到的 Embedding,在最后进入 Matching 之前,不同 Context 的 Embedding 又组合成为一个统一的 Context Embedding(这里的目的是学习到例如对时间、地点这组信息的统一规律),然后这个最终的 Context Embedding 和 Query 的,以及 Document 的 Embedding,这三个模块进行 Matching 产生 Relevance Score。 第二个模型是建立在第一个模型的基础上的。思路就是把最近的一个所谓叫 Wide and Deep Neural Networks(Wide and Deep)的工作给延展到了这里。Wide and Deep 的具体思想很简单。那就是说,一些 Google 的研究人员发现,单靠简单的 DNN 并不能很好学习到过去地一些具体经验。原因当然是 DNN 的主要优势和目的就是学习数据的抽象表达,而因为中间 Hidden Layer 的原因,对于具体的一些 Feature 也好无法“记忆”。而在一些应用中,能够完整记忆一些具体 Feature 是非常有必要的。于是 Wide and Deep 其实就是把一个 Logistic Regression 和 DNN 硬拼凑在一起,用 Logistic Regression 的部分达到记忆具体数据,而用 DNN 的部分来进行抽象学习。这第二个模型也就采用了这个思路。 在第一个模型之上,第二个模型直接把不同 Context 信息又和已经学到的各种Embedding 放在一起,成为了最后产生 Relevance Score 的一部分。这样的话,在一些场景下出现的结果,就被这个线性模型部分记住了。从实验的部分来说,文章当然是采用了 Google 的个人搜索实验数据,因此数据部分是没有公开的。从实验效果上来说,文章主要是比较了单纯的用 CTR 作为 Feature,进行记忆的简单模型。 总体说来,文章提出的模型都能够对 Baseline 提出不小的提升,特别是第二个模型仍然能够对第一个模型有一个小部分但具有意义的提升。这篇文章对于研究如何用深度学习来做文档查询或者搜索的研究者和实践者而言,有不小的借鉴意义,值得精读。 #### Predicting Intent Using Activity Logs: How Goal Specificity and Temporal Range Affect User Behavior **摘要:这篇文章探讨了如何在 Pinterest 中对用户的意图进行描述。** 本文作者群来自斯坦福大学 Jure Leskovec 研究组。文章研究的对象是 Pinterest 的用户群体,探讨了这些用户到 Pinterest 是否有特别的意图(Intent),以及这些意图是怎样影响这些人的行为,这一系列研究问题。同时,作者们还关注如何从用户的现在的行为数据来预测这个用户当前的意图。最后,作者们探讨了如何利用这篇文章的结果来设计例如推荐系统这样的系统。 这篇文章的分析主要分成两部分,第一部分是通过建立用户的调查数据来得到结果的。和其他在线系统一样,在普通的情况下,Pinterest 是不知道用户为什么要访问他们的服务的。或者说是,用户的意图没有那么容易得到发现。这篇文章的作者采用了比较直接的方式获取用户的意图,那就是在用户登入的时候弹出窗口来问用户现在访问是否带有意图(但并没有具体问是哪一种意图)。这个弹出窗口还会问用户究竟对什么类别的物品感兴趣,以及用户打算用多长时间来付诸实践(比如在 Pinterest 上找到了 Recipe,然后下面一步需要花多少时间去把 Recipe 做出来)。这部分调查了6千位用户。主要有以下结果: 1. 用户是否有意图,呈现了两极分化的趋势:一部分用户有极强的目的性,另一部分用户没有太多目的,而中间用户很少。 2. 有意图的用户,都是脑子里有一定的任务需要完成,浏览的类别比较集中,而且会相对而言更加偏重搜索行为。而没有什么目的性的用户则浏览比较广的类别的物品,而且也没有过多的搜索行为。 3. 有意图性的用户会去翻看以前已经存储(Saved Content)过的内容,而没有意图性的用户则相对没有这方面的行为。 4. 有意图性的用户在整个网站服务上花费更多的时间,但一旦达成任务则短期内不会返回网站。 5. 从时间这个维度上来看,有意图的用户更愿意在短期内完成某种线下的任务(比如找到 Recipe 以后付诸实施),而长期目标的用户则更多是寻找灵感(Inspiration)。用户有短期目标的更容易在服务上花费更多时间。 文章还从类别上分析了 Pinterest 的用户行为。比如,Food 和 Do-It-Yourself(DIY)是 Pinterest 上最受欢迎的两个类别。而很多喜欢 Food 的用户都是在 Pinterest 上去寻找 Recipe 的。这一点似乎有一点出乎意料。当已经知道了用户的行为意图以后,就需要问一个反过来的问题了,那就是能否根据用户的一些行为数据来预测用户的意图呢?答案是肯定的。而是这篇文章采用了一系列很简单的 Feature,以及一个 Random Forest 的模型就达到了不错的预测准确度的结果。值得注意的是,仅仅使用用户当前 Session 的信息,就能够基本上达到所有 Feature 一起使用的效果,并且是用户开始使用10分钟之后就能够比较精准得预测出结果。 这篇文章比较直接,结果也比较直白。不过结尾处作者的一些思考还是不错的。首先,作者指出通过对于用户的意图的了解,我们可以设计不同的推荐系统和不同的用户体验。从这些研究结果来看,用一种界面和系统交互模式是很难满足完全不同的用户需求的。这方面的思考的确有可能是一个新的研究方向。 #### Usage Patterns and the Economics of the Public Cloud **摘要:这篇文章对当前公共云平台的计价系统进行了分析,同时提出了一些有意思的结论。 ** 本文作者群来自微软研究院和 Uber。作者之一 R. Preston McAfee 是著名的经济学家,曾在雅虎担任副总裁和首席经济学家,2012年以后到 Google 的 Strategic Technology 担任总监,2014年之后到微软担任首席经济学家。 文章探讨现在第三方云计算平台(比如 Amazon 的 AWS 或是微软的 Azure)是否能采用动态价格(Dynamic Pricing)的计价模式,特别是在所谓的“巅峰负载”(Peak-Load)的时候。 首先,这篇文章对“云服务”模式进行了一个简单的介绍。这部分内容还是有很强的科普意义。这里面有一点可能比较容易忽视的科普点是,客户公司(Firm)需要对服务和软件进行重写才能使用云服务商提供的 Auto-Scaling 等方便的服务。如果客户公司仅仅是简单把运行在传统数据中心上的服务给部署到云服务商的设施上面的话,则很难能够真正利用云服务的“易伸缩性”(Elastic)。 紧接着,作者们对于其他工业怎么采用动态价格进行了简单的介绍。动态价格有两个条件,那就是 Capacity 在短期内是恒定的(Fixed)并且恒定的一部分成本(Cost)是总成本不小的一部分。当然这都是对于服务商而言。目前我们对于动态价格的主要认识,来源于电力、航空和酒店这些行业。云服务如果按照刚才那个条件来说,是具备动态价格的一些先决条件的。因此,作者们认为应该对云服务的供需进行研究来看如何设计动态价格的策略,也就是说,作者们想看一看现在的云服务的使用率是不是不够优化,为动态服务提供了可操作的空间。 这篇文章能够被 WWW 录取的一个重要原因可能是因为结果比较出人意料。作者们通过对微软的云服务数据(虽然在文中没有明说)进行分析得出,当前的云服务使用率(主要是从 VM 这个角度来说)的差别度(Variation) ,不管是看单个客户还是整体数据中心这个级别,都在5%以下。从云服务商这个整体来说,并没有出现特别大的服务需求起落。作者们的确从单个客户的数据中看到了使用率的震荡(Fluctuation),但是在云服务商这个层级,这样的震荡随着不同的客户数据,从而达到了整体“抵消”(Average Out)的效果。作者们认为这样的现实数据为现在的计费模型,也就是恒定的价格(Static Price)提供了一定的基础。同时,目前可以预测的使用率也为服务商充分利用资源提供了保证。这一点与电力系统不同,电力系统为在巅峰时刻的用电一般必须调用额外的设备。当然,作者们也认为这样的使用数据,以及计费模型,是现在多数客户都简单把原来的软件系统给搬运到云计算平台上,而并没有充分利用云服务的 Auto-Scaling 有关系。为了对以后的可能性进行探索,作者们又从 CPU 的使用率这个级别进行分析。与 VM 的使用率不同的是,CPU 的使用率看出了比较大的幅度。平均的最高 CPU 使用率比巅峰时期CPU使用率要小40%左右。因此,如果服务商能够通过 CPU 使用率来进行计价,或者VM资源能够在不使用的时候自动关闭,则为动态价格提供了一种可能性。作者们的与测试,这可能是未来的一种模式。 这篇文章算是科普性质的一篇文章。对于动态价格,以及云服务商的计价模式有兴趣的读者可以泛读本文。