‍‍

作者 | 梁唐

来源 | TechFlow

之前我们介绍了推荐当中应用得非常广泛的FM大家族,从FM这个模型衍生出了一系列的模型,从纯FM,到AFM、FFM、DeepFM等等一系列的FM模型,最后的终极版本是xDeepFM。这个模型非常复杂,可以说是把FM魔改到了极致,今天这篇文章先不讨论这个,等以后论文解析的时候好好介绍一下这个模型。

现在回过头来看的话,会发现FM模型的各种魔改其实是一种探索,当时还不知道未来的出路在哪里,也不知道深度学习在推荐领域能够带来什么变化。前人尝试出来FM模型效果不错,那么最简单的办法当然是在FM上各种魔改。魔改多了之后,逐渐探索出了方法论,那么就有了下一次的迭代升级。

FM的下一个迭代版本是什么呢?其实不再是单纯的某一个或者是某一种模型,而是一种思想和方法。我们之前的文章也提到过,也就是应用Embedding向量的方法,基于Embedding向量的应用,到这里有衍生出了许多个分支,有了更细维度的拆分。比如有的继续研究传统CTR的提升,有的研究模型的多任务学习,可以让模型同时优化几个指标,有的研究强化学习,想要训练出更加智能的模型等等。

今天我们还是先来聊聊最传统的CTR优化的方向,给大家介绍几个相对来说比较前沿的模型和方法。

用户时序特征

之前在介绍FM模型的时候,曾经提到过它有一个巨大的问题,就是模型的输入的维度是固定的,也就是说我们生成的特征也是固定的。看起来这个没什么问题,因为无论机器学习还是深度学习,它们的模型基本上参数空间都是固定的,至少大小是固定的。

问题不在于模型,而在于应用的时候,我们还是以电商场景举例,大家都知道在电商场景当中,有的用户活跃,行为多,有的用户相对不那么活跃,比较冷淡,偶尔来买点东西。对于这两种不同的用户来说,显然前者的行为更多,传递的信息也就更多。这个也很好理解,用户行为越多,喜好越明显,相反如果用户缺什么来买什么就很难猜测喜好。

但由于模型的输入是固定的,过去买过100件商品和没买过商品的用户,他们的特征加工完了之后是同样的维度,显然这会导致前者丢失大量的信息。另外一个问题是FM模型本身没有时序处理的部分,它肯定就学不到时序的一些信息。比如张三一周之前想买袜子,于是点击了很多袜子,前两天又对一款游戏感兴趣,点击了几次游戏。可能总体上来说游戏点击的次数不如袜子多,但显然由于游戏点击的行为发生地距离现在更近,他之后会点击游戏的概率要大于袜子。如果只是单纯的制作一个用户过去最经常点击的类别,那么对于张三来说这个类别显然是袜子,但是这个信息肯定是不准确的。

早年的算法工程师们也不傻,也都知道要把用户行为的特征着重研究,应用进模型。但这里有两个问题,第一个问题是用户的行为数量是不同的,有的用户行为多有的行为少,但模型的参数往往是固定的。第二个问题是FM模型没有时序的处理逻辑,它不能处理时间上的先后关系以及这个关系带来的影响。

由于这两个问题的存在,导致了我们仅仅制作特征是不够的,包含的信息往往比较片面,我们还需要模型层面的改进。

怎么改进呢,其实很简单,不是说了FM本身没有时序处理的部分,导致它学不到先后逻辑上的关联么。那什么领域的模型主要研究时序?NLP,因为语句是有先后顺序的,无论是文本分析还是机器翻译都需要考虑上下文,所以NLP是最早使用RNN、LSTM等时序模型的领域。

NLP先行一步,推荐也紧跟而上,尝试着将NLP的一些技术和思想应用到推荐模型当中来,由此诞生了许许多多的模型。在这里承志着重挑选了这两年效果不俗得到广泛认可的模型给大家简单介绍一下。

DIN

整体上来说DIN模型的原理并不复杂,相反还很简单。它的本身其实就是一个Embedding + MLP的结构,只不过在其中加上了DIN模块。也就是下图红框当中的部分。

红框当中的Goods1到Goods N表示的用户历史的行为数据,也就是用户和哪些商品有过交互。对于用户交互过的每一个商品,我们都通过Activation Unit计算它和当前将要预测的候选商品的权重。这个权重也可以理解成相似度,也就是用户交互的商品和候选的商品的相似度。然后我们把序列里所有商品都通过这个方式得到权重,并且对它们的Embedding表示通过sum pooling进行加权求和,最后我们把这么一个加权求和得到的向量输入DNN。

这里的精髓有两个,一个是sum pooling可以解决有的用户行为多有的行为少的问题,因为sum到一起了之后长度就固定了。第二个是这里的权重要经过一次softmax运算,这样可以保证所有权重之和为1。

Transformer

第二个要介绍的模型叫做transformer,如果说DIN只是借鉴了NLP当中时序模型的一些处理逻辑和思想的话,那么transformer几乎就是实打实的直接搬运了。

transformer原本是NLP领域的模型,尤其在机器翻译上获得了非常好的效果。它本质上是一个encoder和decoder的结合,也就是一个编码器和解码器的结合。也就是说通过编码和解码的过程,让模型学到两个序列之间的映射或者是内在关系。

它的整个模型结构图如下所示:

上图当中左边一列是编码器,也就是将input通过Multi-Head Attention、Add & Norm等操作最后输入到解码器decoder当中。解码器会对output做同样的编码操作,然后再学习两个编码之间的交叉信息。至于Multi-Head Attention、Add & Norm这些子模块当中究竟进行了什么样的操作,这里就不多做赘述了,有很多复杂的实现细节,大家感兴趣的话可以去阅读论文原文。

正是因为它开创性地对输入和输出都做了编码和解码的操作,使得它在机器翻译的领域大放异彩,获得了非常好的效果。对于推荐领域来说,它不需要预测一个序列,只需要预测当前item的CTR。所以它主要被用来处理用户行为序列这个特征,利用transformer结构对用户行为序列当中的item以及目标item进行encoding和decoding运算,得到一个定长的向量。

这里我们可以看下transformer在美团推荐场景下的应用,我找来了博客里的图。

从图中可以看得出来,它的结构和DIN没有什么本质上的区别,无非是把用户行为序列按照时间长短分成了两个部分。然后多个Embedding归并的方法不再是sum pooling而是transformer而已。

总结

在推荐场景,尤其是电商场景下,用户的历史行为数据至关重要,它能直接反应用户的兴趣以及偏好。尤其是当用户行为序列很长的时候,还能反应出用户历史行为以及消费能力的变化,使得模型的预测能够更加精准。淘宝的首页推荐能做得这么好,总能推出很吸引人耳目一新的商品,和用户行为序列特征的深度挖掘和使用脱不开干系。

DIN和BST(Transformer)这两篇论文分别发表于18和19年,它的作者都是阿里巴巴,应该算是推荐领域比较前沿尖端的论文了。非常推荐给想要从事推荐算法领域的小伙伴。

好了,今天的文章就到这里,感谢阅读,喜欢的话不要忘了三连。

更多精彩推荐
☞混沌、无序、变局?探索之中,《拟合》开启☞深入浅出,机器学习该怎么入门?☞好看又好用的 GUI,你需要这七个 Python 必备库点分享点收藏点点赞点在看

摆脱 FM!这些推荐系统模型真香相关推荐

  1. iphone个系列尺寸_iPhone 12尺寸对比:又是真香的典范?

    文|明美无限 众所周知了,虽说苹果公司的iPhone 12还要一段时间才发布,但是有关它的消息已经非常多了,而现在该机的所谓5.4英寸版本模型已经出现. 这不有外媒放出了iPhone 12 5.4英寸 ...

  2. 实战~阿里神器 Seata 实现 TCC模式 解决分布式事务,真香

    今天这篇文章介绍一下Seata如何实现TCC事务模式,文章目录如下: 什么是TCC模式? TCC(Try Confirm Cancel)方案是一种应用层面侵入业务的两阶段提交.是目前最火的一种柔性事务 ...

  3. 真香!腾讯再发阳光普照奖:每人100股,价值超6万!

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:机器学习算法与Python学习 AI博士笔记系列推荐 周志华 ...

  4. 文艺复兴?诺基亚再推翻盖手机 28天待机 仅售700元还带4G 真香就完事了!

    诺基亚作为曾经的全球手机霸主,因为在智能机普及时代的一系列失误的决策,全球手机市场份额急剧下滑,随后卖身微软想要靠着微软的WP系统东山再起,奈何微软不给力,没能挽回诺基亚一去不回的颓势,与微软分开后, ...

  5. Robust.ai 获得 1500 万美元融资,嘴炮 Gary Marcus 也难逃真香定律

    作者 | 八宝粥 出品 | CSDN(id:CSDNnews) 谁也逃不过真香定律! 美国当地时间 28 日,位于湾区的机器人相关 AI 初创公司 Robust.ai 获得 1500 万美元融资.此次 ...

  6. Python做一个Kindle电子书下载助手,真香!

    哈喽,大家好,我是菜鸟哥! 大家有没有想过把亚马逊网站上的Kindle电子书下载到自己的电脑上? 今天分享的项目可以帮大家实现这一目的.该项目用Python开发,简单.好用.开源. 下面分享下项目的使 ...

  7. 最强Python编程神器,真香!

    来源: 软件测评说 大家好,我是 菜鸟哥. 记得上学那会儿,就喜欢折腾,其中印象深刻的一个就是在手机上写Python代码并运行Python. 当时,初学Python,躺在床上,上课都在写代码,确实挺好 ...

  8. 真香啊,一文讲透金融风控建模全流程(Python)

    信贷风控是数据挖掘算法最成功的应用之一,这在于金融信贷行业的数据量很充足,需求场景清晰及丰富. 信贷风控简单来说就是判断一个人借了钱后面(如下个月的还款日)会不会按期还钱.更专业来说,信贷风控是还款能 ...

  9. Spring 响应式编程,真香!!!

    一.前言 响应式编程是啥? 为啥要有响应式编程? 响应式流的核心机制是什么? Spring 响应式编程能解决我们平时开发的什么痛点? Spring 响应式编程有哪些应用场景? Spring 响应式编程 ...

最新文章

  1. centos7配置bind重启后错误解决
  2. Redis系列五:redis键管理和redis数据库管理
  3. 记录一次socket编程:String的trim函数
  4. ASP.NET Core微服务(三)——【跨域配置】
  5. python 按月份分组_django ORM queryset按月、周、TruncMonth分组
  6. Python 内置函数之 open (文件操作)
  7. codeblocks安装后提示找不到编译器
  8. http代码_一行代码就可以实现HTTP文件服务器,他为什么写了150行?
  9. 静态内部类实现 单例模式
  10. 数学专业下的计算机科学,被录取到信息与计算科学专业,这个专业什么性质,发展前景如何?...
  11. Trufun Kant Studio 2008面向VS.NET的开发应用
  12. sparksql读取mysql表的两种方式
  13. 制作一个小型linux
  14. 情感分析[深度学习/机器学习]专业英语词汇分享
  15. matlab编程dea模型,DEA的Matlab程序(数据包络分析)(最新整理)
  16. python行业中性_知乎
  17. 二项分布,柏松分布和正态分布
  18. WWW 2022 推荐系统和广告相关论文整理分类
  19. 惠新宸php教程_【转载】惠新宸:PHP在百度的应用现状及展望
  20. 关于Spring中在applicationContext.xml中AOP(aop:aspectj-autoproxy)的配置问题记录:

热门文章

  1. mysql以及mysql bench安装教程
  2. 用canvas实现一个vue弹幕组件
  3. maven学习(4)-Maven 构建Web 项目
  4. gulp插件之browser-sync安装报错
  5. 借一个同事的经历,谈一谈程序员的成长
  6. MVC中获取模型属性的Range和StringLength验证特性设置
  7. [转]程序员技术练级攻略
  8. Python中的super()函数
  9. 20180829-Java多线程编程
  10. VS2013中, 无法嵌入互操作类型“……”,请改用适用的接口的解决方法