如何在idea中idea导入的包为什么用不上阿里包包数据

广告推荐算法系列文章:

本文的知识点来源于参考文献[1],是阿里巴巴2018年在KDD上的论文。本文可以视为Attention机制在推荐系统上的应用。对Attention机制不了解的同学可以看下面的文章进行学习。

正如我们在所提到的,如今深度学习在推荐系统和广告点击率预估上应用广泛,普遍采用的模式是Embedding + MLP的形式。

在这种Embedding + MLP的模型下,有许许多多的特征工程上的技巧。在阿里这个场景下,可以分成这么几个大类,比如用户画像,用户的操作行为,上下文特征,广告特征等等。如下图所示。

而对应的模型结构则如下图

可以看到,不同种类的特征在形成向量后是拼接起来的。

上述模型结构和特征工程已经能达到一个较好的结果了,但是要想精益求精,还是需要对业务有更加深刻的了解。而在阿里的这个场景下,那就是用户购物需求的多元化。在上面的模型中,用户的行为被压缩到了一个特征向量中,就相当于是把所有的兴趣爱好的信息做了平均。但这样做是不精准的。

比如说,一个女性游泳爱好者,可能既会关注包包,又会关注游泳类产品。那么她在浏览包包的时候,对游泳类产品的兴趣其实是与CTR的估计相当无关的事情。

那么如何解决这个问题呢?解决的方法就是对于一个<用户,商品>对来说,不同的商品,要去触发用户不同的兴趣点才合理。这样的操作在NLP问题中其实是非常常见的,比如翻译问题,目标语言句子上的不同位置的词语,对应的是源语言句子上的词语也是不同的,这种对应关系被Attention所解决。

类似的,在这篇论文中,这个问题被兴趣网络解决。

DIN的核心idea很直观,模型结构如下图,在这个结构中,可以看到,候选广告需要去跟用户行为中的每一个商品去做权重的计算,然后用权重去做加权平均得到用户针对这个候选广告的兴趣向量。权重和加权,这就是Attention。

举一个例子,如果用户的行为历史中有两类,衣服和电子产品,其中衣服占90%,电子产品占10%,那么给两个产品T恤和iPhone,那么计算得到的用户对T恤的兴趣很可能大于用户对iPhone的兴趣。之所以说很可能而不是肯定,是因为商品还要本身的性质,比如衣服可以换的很频繁,但iPhone不是,衣服的盈利远远不如iPhone的利润大等等。所以在计算attention的时候,还会有很多特征需要挖掘来计算得到可靠的权重。

大家注意到,这里用户行为历史中的操作是并行计算权重的。其实可以通过循环神经网络来把时间因素考虑进来。论文中尝试过,但是没有提升,可能的原因是兴趣本身就是共存的,时间的前后顺序影响不大。

模型结构本身并不复杂,但相对于阿里巴巴的业务量而言,这个模型的训练是非常难的,因为模型中的用户和候选广告都是以亿计的,而特征又是极其稀疏的。

比如,当上面第一张图中的goods_ids的特征在6亿的时候,如果没有正则化,那么模型在训练一个epoch后在训练集上的loss会迅速下降,导致在测试集上过拟合。如下图中的红线所示:

而如果采用传统的L2或者L1正则化又是不可能的,因为传统方法需要在所有非0的参数上进行计算,而对于这个问题来说,每次训练都在数以亿计的参数上去做正则化是不可行的。

论文提出了一种近似的办法,即Mini-batch aware的正则化,这种正则化的方法只考虑了在一个mini-batch中出现了的特征所对应的参数。因为稀疏特征的众多,网络中大部分的参数都分布在embedding层,论文以embedding层为例来讲解了正则化的操作。如下所示:


上图公式中表明了在embedding层上只计算mini-batch上用到的特征所对应参数的L2正则化的方法,其中I(xj≠0)是指示器来表明xj特征是否存在,nj表示所有样本中xj不为0的样本数。wj代表特征j的embedding参数。

然后这个公式可以化简:

表示的是特征j在mini-batch Bm中至少出现过一次。

这样,经过正则化的梯度就可以计算出来:

在**函数上,论文提出了一种叫做Dice的**函数,是PRELU的泛化版本。两种**函数图示如下:

其中,论文上的PRelu的图画错了,其公式如下:

基于这个公式,大家可以自行画出正确的图。

而Dice的公式如下:

Dice是PRelu的泛化版本,当均值为0方差为1的时候,两者是等价的,之所以要改成这个形式,是为了要使**函数适应数据分布。

不同的方法在前两个数据集上的对比,可以看到带来的相对提升还是很高的,达到了2%和6.8%。

可以看到,即便在BaseModel上,正则化方法也有效。

在阿里巴巴的数据集上,带来了11.65%的提升,又是财富在发光。

有了attention之后,推荐结果也变得可解释了,下图是一个可视化效果图,反应了当前商品和用户历史行为中的商品的权重。

勤思考,多提问是每个Engineer的良好品德。

  • 随着时间的流逝,用户操作行为越来越长,在超长序列上建模会遇到性能问题,如何解决?

答案稍后发布在公众号【雨石记】上,欢迎关注。

这里是,每隔一到两周我会站在算法工程师的角度讲解一些计算广告、推荐系统相关的文章。选择文章的标准有三个:

  • 二是阿里、facebook、google等一线互联网公司出品的;

第一篇我们从阿里的深度兴趣网络(Deep Interest Network)开始。很多同学已经非常熟悉这篇文章了,但我觉得一篇优秀的文章多强调几遍也不为过。说这篇文章好,主要有三个原因:

  1. 一是因为这篇文章的工程性很强。工程性很强的文章首先是便于实现的,其次你可以从字里行间看到很多实践出真知的影子,比如DIN这篇文章中GAUC这样的metric的改进,以及Dice这样的激活函数的创新,都是对经典知识在实践中改进的例子。
  2. 第二个原因是因为这篇文章对用户行为的观察非常精准。有句话说做推荐其实就是“揣摩人心”,你把用户的行为和习惯揣摩好了,才能够以此出发,从技术上映射用户的习惯。DIN这篇文章有效的利用了用户兴趣多样性以及当前候选商品仅与用户一部分兴趣有关这一特点,引入注意力机制,这是非常精准的动机。
  3. 第三个原因是模型的微创新,从低维到高维是创新,从离散到连续是创新,从单一到融合也是创新,这篇文章把NLP大行其道的注意力机制引入推荐领域,当然是典型并且有效的创新手段,也是所有算法工程师应该学习的地方。

好了,废话讲完了,我们看看这篇文章到底做了什么。

用户场景很简单,就是在一个电商网站或APP中给用户推荐广告,当然对于阿里妈妈来说,广告也是商品,所以这篇文章的广告场景其实也是一个经典的推荐场景。

好,既然要推荐,我们当然需要利用用户的历史数据了,对于一个电商来说,历史数据当然就是点击,添加购物车,下单这些行为了。论文中给了一位用户的行为序列。

显然是一个女生的行为历史啦,从最左边的手套,鞋子到右边的杯子,睡衣。要被推荐的候选商品是一件女式大衣。我们应该如何计算这件大衣的CTR呢?

如果按照之前的做法,我们会一碗水端平的考虑所有行为记录的影响,对应到模型中就是我们会用一个average pooling层把用户交互过的所有商品的embedding vector平均一下形成这个用户的user vector,机灵一点的工程师最多加一个time decay,让最近的行为产生的影响大一些,那就是在做average pooling的时候按时间调整一下权重。

但是我们仔细想一想我们自己的购买过程,其实每个用户的兴趣都是多样的,女生喜欢买衣服包包,也喜欢化妆品,甚至还为自己男朋友挑选过球衣球鞋,那么你在买大衣的时候,真的要把给男朋友买球鞋的偏好考虑进来么?具体到本文的例子中,在预测大衣的CTR这件事情上,用户浏览过杯子,跟用户浏览过另一件大衣这两个行为的重要程度是一样的吗?

这事不用问算法工程师,你就回家问问你老妈估计答案都是一定的,肯定是浏览过另一件大衣这件事的参考价值高啊。好了,就是这件你老妈都知道的事情,让阿里妈妈的算法工程师们加上了attention机制。

注意力机制顾名思义,就是模型在预测的时候,对用户不同行为的注意力是不一样的,“相关”的行为历史看重一些,“不相关”的历史甚至可以忽略。那么这样的思想反应到模型中也是直观的。

是用户u的第i次行为的embedding向量,因为这里用户的行为就是浏览商品或店铺,所以行为的embedding的向量就是那次浏览的商品或店铺的embedding向量。

因为加入了注意力机制, V_u 从过去 V_i 的加和变成了 V_i加权和V_i 的权重 w_i 就由 V_iV_a 的关系决定,也就是上式中的

那么 g(V_i,V_a) 这个函数到底采用什么比较好呢?看完下面的架构图自然就清楚了。

相比原来这个标准的深度推荐网络(Base model),DIN在生成用户embedding vector的时候加入了一个activation unit层,这一层产生了每个用户行为 V_i 的权重,下面我们仔细看一下这个权重是怎么生成的,也就是 g(V_i,V_a) 是如何定义的。

传统的Attention机制中,给定两个item embedding,比如u和v,通常是直接做点积uv或者uWv,其中W是一个|u|x|v|的权重矩阵,但这篇paper中阿里显然做了更进一步的改进,着重看上图右上角的activation unit,首先是把u和v以及u v的element wise差值向量合并起来作为输入,然后喂给全连接层,最后得出权重,这样的方法显然损失的信息更少。但如果你自己想方便的引入attention机制的话,不妨先从点积的方法做起尝试一下,因为这样连训练都不用训练。

再稍微留意一下这个架构图中的红线,你会发现每个ad会有 good_id, shop_id 两层属性,shop_id只跟用户历史中的shop_id序列发生作用,good_id只跟用户的good_id序列发生作用,这样做的原因也是显而易见的。

好了,到这里为止我们基本讲完了这篇文章的重点部分,如果说上面的部分是文70%的价值所在,那么余下30%应该还有这么几点:

  • 用Dice方法替代经典的PReLU激活函数
  • 介绍一种Adaptive的正则化方法

上面几项介绍起来略显繁琐,大家有兴趣的可以参考。对于广大算法工程师来说,知道如何引入attention机制应该是最实用的收获。

好了,这里是的第一篇文章,水平有限,欢迎大家吐槽,批评,纠错。

本文亦收录在我的新书「」中,这本书系统性地整理、介绍了专栏中所有的重点内容,如果您曾在「」中受益,欢迎订阅,谢谢知友们的支持!

纵然疫情不断袭扰,经济发展蒙上阴影,但据腾讯企鹅智库对20多个省市的5万多网民做过一项创业意向调查,结果显示:从来没想过创业的人,只有3%。40%的人经常有创业冲动、或者经常在琢磨这件事;30%的人偶尔会想一下;19%的人已经在创业的路上。 而在创业者的想法里,投身互联网行业是大多人的首选,这是因为年轻人本身就使用互联网,更容易感知消费群体的习惯、偏好,更容易做出与用户适配的产品来。而且这些行业本身不存在明显的瓶颈,只要找到突破口,就可能实现逆袭。 互联网创业真的还有机遇么? 传统观念下,创业并不简单!创业者不仅每天面对巨大压力,在行业巨头围追堵截的背景下,确实难有机遇。但是随着“共同富裕”、“防资本恶意扩张”、“反垄断”等概念的不断深入,商业竞争环境和经济规则开始变动,大量新型创新商业实践成为可能。 所以只要找对方法,找对平台,创业就很轻松!鲸喜购作为全新的社交商业平台,便是初创者最好的进阶方式!鲸喜购有着社交属性基因,是以电商平台为载体,通过社交传播赋能品牌及企业的一种全新模式。 一个人轻创业是否是美丽的童话? 传统电商,特别是平台电商,上天猫京东,或是拼多多,流量永远是第一位,这就促使大家推广买流量,但是高流量并不意味着高转化,因为广告衔接,彼此之间没有互动,相互之间缺少了解,所以流失率非常高,转化率非常低! 除去线上平台的流量问题,创业者还要面对人员、产品、仓储、供应链等等问题,仿佛迈下的每一步都举步艰难。而在鲸喜购,这些问题皆不存在,相比于传统的电商模式来说,最大不同便是不需要囤货、压货、发货、做售后等,也不需要实体店,一切由平台搞定。真正的实现创业0风险,创业0投入。 鲸喜购按照“服务客户、服务电商、服务实体、服务创业者”的定位,将与经营者(分销商)、供应商通过“共生共建、共创共享”机制形成利益共同体,共同服务客户,为客户创造价值。顾客将成为我们共创的主体,并分享共创的成果。仅占用碎片化的时间,便可以助力每一位创业者开启轻创业之路。 实体创业何时摆脱被巨头捆绑? 众所周知,传统的电商是通过资本野蛮出征,打败竞争对手使自己一家独大,平台之上的广告推广费用不断的增高,投入产出比严重的失衡,很多微型创业企业和个人创业,没有资金,没有系统团队,没有优质的流量资源,成功的希望也就微乎其微。而共富型的商业模式,则不完全是以追求利润为目的,而是“向善”,让所有参与者都能共享到利益。在这种情况下,鲸喜购社交化商业平台给这些创业者带来了以小搏大,低成本创业的机会! 鲸喜购通过全域社交化运作,为线下实体服务联盟商提供专有的智慧门店SAAS系统和用于拓展产品边界的数字货架系统。帮助商家构建属于自己的零售渠道,让他们能跳过传统的商超、卖场和传统电商平台,通过技术手段让所有环节都能成为流量入口,真正实现一个去中心化的新的零售通道,从而让自己拥有更多选择。 与此同时,鲸喜购通过资源整合调整商业结构,以创新发展方式,促进跨界融合,优化发展环境,引导实体零售企业,逐步提高信息水平。将社区连锁店、线下联盟商家等潜在的巨大资源优势转化到平台上来,实现线下物流,服务,体验等优势与线上商流,资金流,信息流融合。 鲸喜购作为新一代社交化商业平台,为个人价值提升和品牌推广升级提供了全新的土壤,而以社交为基础的辐射效应几乎是以几何量级倍增,所以可以预见随着势能的逐渐放大,未来也将成为电商创新的模式样板,所以在此刻和未来,我们都有借势东风的机遇与风口,你准备好了么?

我要回帖

更多关于 淘宝买的加速器可靠吗 的文章

 

随机推荐