小毛驴

Adventure may hurt you, but monotony will kill you.

0%

一、推荐冷启动问题

当新用户或新物品进入内容平台时,就会出现冷启动(Cold Start)问题。比如,内容平台新发布的短视频、电商平台新上架的商品、媒体平台新发布的新闻等等,这些新的内容之前从未获得过曝光,从未有用户对它们表示过感兴趣或不感兴趣。推荐系统该如何决定这些内容是否需要被推荐,以及推荐给哪些合适的用户?这就是推荐冷启动问题。

相对于冷启动的物品(泛指商品、新闻、作品等需要被推荐的内容),非冷启动物品因为以及获得了大量的曝光,推荐系统收集了用户对它们的一些交互行为,这些行为显式或隐式反馈了用户对这些物品的兴趣。基于这些行为日志,推荐系统可以用比较成熟的推荐算法来对这些物品进行个性化的推荐,让合适的物品被呈现给合适的用户。

为什么需要冷启动方案,原因如下:

  • 目前的召回、粗排、精排算法对新物品、新用户不友好
  • 新物品很大程度上,会被模型”低估”
  • 冷启动问题不可逃避
    • 处理不好会影响内容创造者的积极性,进而影响平台生态的健康发展

冷启动物品由于缺乏或暂未获得足够丰富的用户交互行为日志,给推荐算法带来了不小的挑战。目前冷启动推荐大致有以下几种思路:

  • 基于物品的属性数据(side information),比如利用商品的类目、品牌等信息;文章的作者、类别、关键词、摘要等。
  • 基于其他领域的知识,比如领域知识图谱等
  • 使用元学习(meta learning)的方法
  • 基于试错的Contextual Bandit的方法

本文主要关注基于Contextual Bandit的方法,具体地,我们会介绍LinUcb算法的原理、生产环境部署的基础设施架构、算法框架、工程实现时的注意事项、特征设计的陷阱、算法超参数的选择等内容。

阅读全文 »

背景介绍

随着互联网扁平化的发展,内容信息的分发和获取比以往更加便利,这也大大方便了以色情、赌博、非法政治言论、违禁药品买卖等为代表的违规信息的快速传播。这类信息的传播会造成难以估计的社会影响,甚至有可能影响国家的安定和谐。网站所有者可以随意更改网站页面的内容,发布任意形式的信息。论坛、博客、社交产品等web 2.0的网站可以让普通用户随意发布UGC内容。安全防控做得不到位的网站页面内容还可能被黑客随意篡改,甚至安装木马病毒。综上,网站页面内容的生成方式多种多样,内容发布者也是形形色色,其中就会有不少不法分子利用网络传播违规信息以达到非法牟利,甚至控制网民意识形态,颠覆国家政权的目的。

为了净化云平台以及维护网络环境的安全和稳定,对云上网站中存在的各类违规内容进行治理成为了意义重大又迫在眉睫的问题。本文主要介绍如何通过深度学习算法检测网页中是否包含了特定类型的违规内容。

阅读全文 »

一、背景概述

合规服务业务是基于法律法规建立的信息安全保障机制,保障电商平台的合规经营。商品合规风险指商家未能遵循国家有关法律法规、监管要求或平台制定的经营规则,在平台发布了禁止或限制销售的商品或服务。从发布内容的维度看,违规风险内容主要分为危害国家安全、民生安全、公共安全和市场秩序四大块内容。其中,危害国家安全的违规商品内容包括非法政治、枪支弹药、管制器具、军警用品、暴恐分裂渗透等;危害民生安全的违规商品内容包括毒品、危险化学品、管制药品、管制医疗器械、保护动植物等;危害公共安全的违规商品内容包括色情、低俗、赌博、个人隐私、作弊造假等;违反市场秩序的违规商品内容包括诚信交易类、公序良俗类等。大类的风险类别共计30余种。

阅读全文 »

一、背景概述

合规服务业务是基于法律法规建立的信息安全保障机制,保障电商平台的合规经营。商品合规风险指商家未能遵循国家有关法律法规、监管要求或平台制定的经营规则,在平台发布了禁止或限制销售的商品或服务。从发布内容的维度看,违规风险内容主要分为危害国家安全、民生安全、公共安全和市场秩序四大块内容。其中,危害国家安全的违规商品内容包括非法政治、枪支弹药、管制器具、军警用品、暴恐分裂渗透等;危害民生安全的违规商品内容包括毒品、危险化学品、管制药品、管制医疗器械、保护动植物等;危害公共安全的违规商品内容包括色情、低俗、赌博、个人隐私、作弊造假等;违反市场秩序的违规商品内容包括诚信交易类、公序良俗类等。大类的风险类别共计30余种。

坚守风险底线,为用户服务提供良好的制度保障,助力平台提供更简单、更友好的经营环境,保护消费者权益是商品合规业务的主要目标。在商品合规场景,内容维度的风险中文本违规占比约80%。通过商品标题文本的相似检索是发现新风险的有效手段之一。

阅读全文 »

深度学习语义相似度模型旨在学习输入$x$的一个好的特征表示,使得该特征表示能够捕捉到输入的本质结构,且能够促进后续的学习任务,如分类或聚类任务。一般地,我们用深度网络的某个中间层输出作为学习到的特征表示,基于该特征表示可以较方便地得到后续的分类结果,过程如下式所示,其中 $z=f(x,\theta) \in R^d$ 即为学习到的特征表示。

那么什么样的特征表示才是一个好的表示呢?其实,这个问题是和具体任务相关的,不同任务对特征表示的要求是不一样的,因而,我们不能期待在一个任务中有效的特征表示在另一个不同领域的任务上也同样有效。抛开具体任务不谈,原则上,我们期望特征表示既具有一定的信息量(informative),能够充分还原原始输入;又具有一定的区分性(discriminative),能够有效区别开不同类别的输入。从信息论的角度来说,期望能够在最小化原始输入与特征表示的互信息的同时最大化特征表示与目标类别的互信息,形式化如下:

其中,$\beta>0$,用来调节信息量与区分性的权重。

阅读全文 »

我们在基于深度学习的语义相似度模型系列文章的开篇《深度学习语义相似度系列:概论》中介绍了两种语义相似度的学习范式,其中第一种范式的重点是表示学习,也就是为输入对象学习一个低维稠密的embedding向量,使得基于此embedding向量计算的相似度能够很好地反映原始对象之间的相似性。本文主要介绍一种在第一范式下的相似度学习模型的设计。

相似度度量建模

一般而言,相似度度量可以建模为回归问题,也可以建模为分类问题,甚至可以建模为排序问题。取决于我们有什么格式的标签数据。

阅读全文 »

语义相似度有很多重要的应用场景,比如在检索系统中用来做语义召回,或者作为精排的特征。基于文本语义相似度模型做相似检索可以辅助文本分类,能够弥补分类模型更新迭代周期长的问题。在智能问答系统中,文本语义相似度模型也能发挥很大的作用。

目前,学习相似度的深度学习范式主要有两种,如下图所示。

阅读全文 »

多样性和相关性是衡量推荐系统的常用的指标,这两个指标同时影响着推荐系统的商业目标和用户体验。Hulu在NIPS 2018 会议上发表的论文《Fast Greedy MAP Inference for Determinantal Point Process to Improve Recommendation Diversity》中,提出了基于行列式点过程的推荐多样性提升算法,虽然网上可以找到很多解读文章,但个人觉得解释得不是很直观和易懂。本文尝试给出一种更加简单和容易理解的解读,并且给出算法的实现代码,是对自己理解过程的一次总结,也希望能够帮助到读者。

我们有一个待推荐的候选商品集合$Z=\lbrace 1,2,…,M \rbrace$,针对一个给定的用户,推荐系统需要选择商品集合$Z$中的$N$个商品展现给用户,同时希望展现给用户的商品列表满足一定相关性和多样性。这就是我们要解决的问题,那么首先我们必须弄清楚如何衡量相关性和多样性。

阅读全文 »

度量学习(metric learning)研究如何在一个特定的任务上学习一个距离函数,使得该距离函数能够帮助基于近邻的算法(kNN、k-means等)取得较好的性能。深度度量学习(deep metric learning)是度量学习的一种方法,它的目标是学习一个从原始特征到低维稠密的向量空间(称之为嵌入空间,embedding space)的映射,使得同类对象在嵌入空间上使用常用的距离函数(欧氏距离、cosine距离等)计算的距离比较近,而不同类的对象之间的距离则比较远。深度度量学习在计算机视觉领域取得了非常多的成功的应用,比如人脸识别、人脸验证、图像检索、签名验证、行人重识别等。

损失函数在深度度量学习中起到了非常重要的作用。很多深度度量学习的损失函数构建在样本对(pair)或者样本三元组(triplet)之上,因而样本空间的量级($O(N^2)$或者$O(N^3)$)非常大。一般而言,模型在训练过程中很难穷举学习所有的样本对;并且大多数样本对或者样本三元组的信息量是很小的,尤其在模型训练的后期,这些样本对或者样本三元组上梯度值几乎为0。若不做任何针对性的优化,学习算法的收敛速度会很慢,且易陷入局部最优。

困难样本挖掘是加快学习算法的收敛速度,并改进学习效果的一种重要手段。它通常和特定的损失函数一起使用,以期望达到最好的效果。困难样本挖掘可以理解为在学习过程中给每一个样本对动态赋予一个权重。在学习不同样本对时给它们不同的权重,如果某个样本对包含的信息比较多或比较难学习,那么它就需要比较大的权重。信息量较少的样本对则会被赋予较小的权重。若某些样本对被赋予的权重为0,则意味着在计算梯度时不考虑这些样本对,相当于这些样本对被丢弃了。

不同的损失函数在设计时,对于样本对的赋权是不同的,或者说与这些损失函数配合使用的困难样本挖掘方法是不同的。下面列举一些常用的深度度量学习中使用的损失函数,同时了解一下它们是如何来给做困难样本挖掘的。

阅读全文 »

在某些情况下,我们需要度量两个排序列表的距离,或者说相似程度。比如,在信息检索领域,我们可能需要计算在某个查询条件下系统给出的文档的排序列表与一个预先定义好的“完美”排序列表的接近程度。或者我们可能需要比较不同搜索引擎的结果。又或者,在推荐系统中,我们需要监控某次算法迭代(A/B测试)中,新算法针对某个用户给出的推荐列表与旧算法给出的推荐列表的差异程度,以便决定是否要触发自动报警。

在信息检索领域,我们常用MAP、MRR、NDCG来评估排序算法的好坏,然而这些指标依赖人工标注的query与document的相关性档位(relevance level)。当没有此标注数据,或者我们要评估的排序列表跟相关性无关,并且我们刚好有一个待比较的基准列表时,该如何评估它们之间的距离呢?how to measure the similarity between two rank list?

定义这样一个排序列表之间比较的指标,我们期待它能满足以下几个方面:

  • 丰富度(Richness)
    • 能够支持元素加权、位置加权等
    • Support element weights, position weights, etc.
  • 简洁性(Simplicity)
    • 易于理解
    • Be simple to understand
  • 普适性(Generalization)
    • 也能支持不考虑权重的情况
    • Collapse to a natural metric with no weights are present
    • Should behave similar to other approaches
    • Allows us to select a metric best suited to the problem
  • 满足距离定义的基本属性(Satisfy Basic Properties)
    • Scale free, invariant under relabeling, triangle inequality…

排序列表距离度量大致可以分为两大类方法: (1) 基于排序之间的相互关系(Ranked Correlation);(2) 基于集合的度量(Set Based Measure)。

阅读全文 »