xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems
引言(ABSTRACT)
组合特征对与许多商业模型的成功都至关重要。受网络获取的原始数据的种类、容量和提取速度等限制,手工提取特征往往花费较大的代价。随着深度学习的兴起,最近研究者们提出了许多基于DNN的因子分解模型来学习高阶和低阶的交互特征。现在诸如DeepFM和Deep&Wide等模型都可以自动学习隐式的高维交互特征,并结合了低维特征,但是有一个缺点就是它们的高维特征都是在bite-wise的层面上进行交互的。本文提出了一种全新的压缩交互网络(Compressed Interaction Network(CIN)),能够在vector-wise级别学习显式的交互特征,CIN带有一些CNN和RNN的特点,作者进一步将CIN与经典的DNN融合成一个统一模型,命名为"eXtreme Deep Factorization Machine(xDeepFM)"。一方面,xDeepFM能够显式地学习一定的有界度特征交互;另一方面,它可以隐式地学习任意的低阶和高阶交互特性。
什么是bit-wise与vector-wise?
假设隐向量的维度为3维,如果两个特征(对应的向量分别为(a1,b1,c1) (a1,b1,c1)(a1,b1,c1)和(a2,b2,c2) (a2,b2,c2)(a2,b2,c2))在进行交互时,交互的形式类似于f(w1∗a1∗a2,w2∗b1∗b2,w3∗c1∗c2) 的话,此时我们认为特征交互是发生在元素级(bit-wise)上。如果特征交互形式类似于f(w∗(a1∗a2,b1∗b2,c1∗c2))的话,那么我们认为特征交互是发生在特征向量级(vector-wise)。
1简介(INTRODUCTION)
1.1手动提取交互特征的缺点:
1.2几种经典的特征提取模型:
1.3FNN和PNN的缺点都是忽略了低维交互特征,Wide&Deep和DeepFM模型通过混合架构解决了这种问题,但是它们同样存在缺点:a)它们学习到的高维特征是一种implicit fasion,没有一种公式可以明确推论出最终学习出来的交叉特征到底是多少维的;b)另一方面,其DNN部分是在bit-wise的层面下进行学习的,而经典的FM架构是在vetor-wise层面学习的。
2.PRELIMINARIES
2.1 Embedding Layer
在计算机视觉或者自然语言处理领域,输入往往是图片或者文字文本,这些都是空间或者时间上相关的,因此可以用DNN直接作用于结构紧制的原始特征上。但是在推荐系统中,输入的原始特征稀疏,维数大,没有明显的时空相关性。在原始特征输入上应用嵌入层,将其压缩为低维、密集的实值向量。
虽然输入的每个feature的长度可能不同,但是经过embedding layer后,长度均为D,保持一致。
2.2隐式的高阶交互
FNN,Deep Crossing以及Wide&Deep的深层部分利用 field embedding e e e上的前馈神经网络来学习高阶特征交互,具体的前向传播过程如下:
PNN和DeepFM除了在嵌入向量e上应用DNN之外,还在架构中引入了双向交互层。 因此,bit-wise和vector-wise相互作用都包含在他们的模型中。 PNN和DeepFM之间的主要区别在于:PNN将product layer的输出连接到DNN,而DeepFM将FM层直接连接到输出单元。PNN 与 DeepFM 结构如下图所示,属于元素级(bit-wise)的特征交互,也可以理解为相同 field 中的 embedding vector 内的元素也会相互影响。
2.3显式的高阶交互
Cross Network(CrossNet)的结构图如下所示:
Cross-Network的目标在于明确地模拟高阶特征交互。 与传统的完全连接的前馈网络不同,隐藏层通过以下交叉操作计算:
其中 w k , b k , x k w_k, b_k, x_k
文章浏览阅读4.3k次,点赞6次,收藏17次。众所周知,数字证书包含签名证书和加密证书,签名证书用于签名和验证,加密证书用于加密和解密,我因为不明白为什么要使用双证书,所以找寻相关资料查询了一下,下面这篇文章是关于双证书的目的“PKI中使用双证书、即双密钥,双密钥是指签名密钥对与加密密钥对,从本质上说,两个密钥对都是非对称密钥对,因此,都可以用来作非对称加解密,然而为什么需要双密钥呢?这必须从两个密钥的用法说起。签名密钥对用于数据的完整性检测,保证防伪造与防抵赖,签名私钥的遗失,并不会影响对以前签名数据的验证,因此,签名私钥无须备份,因此,签名密钥_签名加密双证书
文章浏览阅读1.6w次,点赞17次,收藏105次。大流程框架简历准备策略:1、对即将面试的公司的产品写一些竞品分析、产品体验报告,有时间花2个月时间做了一个产品demo。2、优化简历(一面就行,HR没时间看,重点突出关键词):对应聘公司和岗位的深刻理解认识,并解读,将项目经历匹配岗位需求去描述,简历投递途径:拉勾网、boss直聘和牛客、垂直的产品用研社区(例如pmcaff、uxren以及一些垂直领域专业人士的公众号上发布的招聘信息..._字节产品经理面经
文章浏览阅读2.8k次,点赞3次,收藏8次。前言记录一下自己遇到的实习面试经历,希望能对后来人有用。面试总共分为两轮:第一轮是项目面试,主要讲自己做的研究工作以及论文相关情况;第二轮主要是CodingTest测试;这里主要讲讲自己的CodingTest,其实代码测试的题目和LeetCode差不多,水平差不多,题目可能不一定相同。给了我两个题目,一道是困难,一道是简单的。一、题目说明题目1:A为一个十进制数(以整数为例),k位,k<100。求B使得B为大于A的最小整数,且A各位的和等于B各位的和。题目2:给一定数量的信封,带有整数对_华为诺亚方舟 coding
文章浏览阅读7k次。原贴:http://www.linuxeden.com/html/softuse/20090613/66175.html网关和本机IP不同网段的上网办法本机IP地址是 202.*.*.*netmask是255.255.255.192网关是 61.*.*.*两者不在同一网段。Windows下貌似很容易解决,直接设好IP网关即可,路由表会自动设好,Linux却不行。_同一网关下ip不同网段
文章浏览阅读2.4k次。八卦图与二进制的联想易有太极,是生两仪,两仪生四象,四象生八卦!计算机都涉及到哪些数制?二进制(Binary),八进制(Octal),十进制(Decimal),十六进制(Hexadecimal)二进制用于电脑识别十进制用于人来识别而八进制与十六进制就是用来协调人和计算机矛盾的进制二进制有极大的优势:易于物理实现,二进制运算规则简单,机器可靠性高,通用性强,可用于逻辑_十进制-10的真值和机器数
文章浏览阅读2.8k次。在HTML5中,边框的边距(margin)和填充(padding)通常是通过CSS来设置的,而不是直接在HTML中。边框本身是由CSS的border属性定义的,而边距和填充则分别通过margin和padding属性来设置。你也可以分别设置每个方向的边距,如margin: 10px 20px 10px 0;(上10px,右20px,下10px,左0px)。例如,margin: 10px 5px;还要注意的是,虽然示例中使用了div元素来展示边框、边距和填充,但这些CSS样式可以应用于任何HTML元素。_htmlvss上边距框代码
文章浏览阅读336次。仅以这篇文章来标志我的编程学习历程。今天时间比较急,先记下,这周末再补上具体内容。_我的奋斗历程
文章浏览阅读2.9k次。Channelschannels与buffers配合去实现高性能的I/O操作。本章向你介绍NIO的channel类型。_java channels
文章浏览阅读517次。Tornado一、数据库与Django框架相比,Tornado没有自带ORM,对于数据库需要自己去适配。我们使用MySQL数据库。在Tornado3.0版本以前提供tornado.database模块用来操作MySQL数据库,而从3.0版本开始,此模块就被独立出来,作为torndb包单独提供。torndb只是对MySQLdb的简单封装,不支持Python 3。所以如果在当前版本中使用torndb进行数据库操作,需要修改源代码,所以在此,我们使用pymysql。项目中如果要使用ORM,可以使用SQL
文章浏览阅读477次。题目: Cow Bowling Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16077 Accepted: 10705 DescriptionThe cows don’t use actual bowling balls when they go bowling. They each take_the cows don't use actual bowling balls when they go bowling. they each take a number (in the range 0..99), though, and line up in a standard bowling-pin-like triangle like this:
文章浏览阅读810次。MainActivity.xml<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" ="http://schemas.android.com/apk/res/android" an.._intent隐式启动
文章浏览阅读9.6k次,点赞4次,收藏54次。Flutter 是谷歌开发的一款开源、免费的,基于 Dart 语言的U1框架,可以快速在i0S和Android上构建高质量的原生应用。它最大的特点就是跨平台和高性能。Dart是由谷歌,在2011 年开发的计算机编程语言,它可以被用于Web、服务器、移动应用和物联网等多个领域。号称要取代JavaScript._flutter环境搭建