推荐系统(十八)Gate网络(一):新浪微博GateNet

article/2025/9/20 6:33:39

推荐系统(十八)Gate网络(一):新浪微博GateNet

推荐系统系列博客:

  1. 推荐系统(一)推荐系统整体概览
  2. 推荐系统(二)GBDT+LR模型
  3. 推荐系统(三)Factorization Machines(FM)
  4. 推荐系统(四)Field-aware Factorization Machines(FFM)
  5. 推荐系统(五)wide&deep
  6. 推荐系统(六)Deep & Cross Network(DCN)
  7. 推荐系统(七)xDeepFM模型
  8. 推荐系统(八)FNN模型(FM+MLP=FNN)
  9. 推荐系统(九)PNN模型(Product-based Neural Networks)
  10. 推荐系统(十)DeepFM模型
  11. 推荐系统(十一)阿里深度兴趣网络(一):DIN模型(Deep Interest Network)
  12. 推荐系统(十二)阿里深度兴趣网络(二):DIEN模型(Deep Interest Evolution Network)
  13. 推荐系统(十三)阿里深度兴趣网络(三):DSIN模型(Deep Session Interest Network)
  14. 推荐系统(十四)多任务学习:阿里ESMM(完整空间多任务模型)
  15. 推荐系统(十五)多任务学习:谷歌MMoE(Multi-gate Mixture-of-Experts )
  16. 推荐系统(十六)多任务学习:腾讯PLE模型(Progressive Layered Extraction model)
  17. 推荐系统(十七)双塔模型:微软DSSM模型(Deep Structured Semantic Models)

CTR预估模型在学术界/工业界进化的路线有明显的几个节点:1. 从单特征到交叉特征,围绕着如何学到更有用的交叉特征,诞生了一系列的模型。2. attention火起来后,被迅速应用到CTR预估领域中,又有很多模型被提出。3. gate网络火起来后,同样也催生了一些模型。但话说,我其实一直没太搞明白『attention』和『gate』本质上的区别是什么?有路过的大佬可以评论区帮忙解答下。

言归正传,这篇博客将要介绍新浪微博张俊林大佬团队提出的GateNet模型,这篇文章我只在arxiv上找到了,并没有找到公布发表的会议版本,应该是还没投。整篇文章看起来比较简短,因为Gate网络实在没什么好讲的,所以文章大量的笔墨都在实证研究上了,不过遗憾的是,数据集都是用的公开的数据集,没有看到在新浪微博自己的数据集上的实验效果。

本篇博客将会从两个方面介绍下GateNet:

  1. GateNet网络类型
    1.1. embedding层Gate(Feature Embedding Gate)
    1.2. 隐藏层Gate(Hidden Gate)
  2. GateNet论文实验结论
  3. 自己实践中一些结论

一、GateNet网络类型

这篇论文中依据Gate网络施加位置的不同,分为了两种类型:embedding层Gate(Feature Embedding Gate)和 隐藏层Gate(Hidden Gate)。下面来分别介绍一下:

1.1、embedding层Gate(Feature Embedding Gate)

顾名思义,embedding层Gate就是把Gate网络施加在embedding层,具体又可以分为两种:bit-wise和vector-wise。bit-wise就是每一个特征的embedding向量的每一个元素(bit)都会有一个对应的Gate参数,而vector-wise则是一个embedding向量只有一个Gate参数。假设样本有两个特征,每个特征embedding维度取3,用个图来形象的对比下bit-wise和vector-wise的gate的区别:
bit-wise gate

图1. embedding层bit-wise方式的gate

vector-wise gate

图2. embedding层vector-wise方式的gate

值得一提的是,论文中关于gate网络参数是否共享提出了两个概念:

  • field private: 所谓field private就是每个特征都有自己的一个gate(这意味着gate数量等于特征个数),这些gate之间参数不共享,都是独立的。图1、图2中gate的方式就是这种。
  • field sharing: 与field private相反,不同特征共享一个gate,只需要一个gate即可。优点就是参数大大减少,缺点也是因为参数大大减少了,性能不如field private。

通过论文中给出的实验表明,field private方式的模型效果要好于field sharing方式。

下面通过形式化的公式来看下embedding层Gate的流程(尽管我觉得上面两个图已经非常清晰的展示了细节,但配合公式来一波强化记忆吧),假设有 n n n个特征,每个特征的embedding维度为 d d d,则 E = [ e 1 , e 2 , . . . , e n ] E=[e_1, e_2, ..., e_n] E=[e1,e2,...,en] e i e_i ei为特征 i i i对应的embedding向量, e i ∈ R d e_i \in R^d eiRd,下面为整个计算步骤:
第一步:计算gate value: g i = σ ( W i ⋅ e i ) g_i=\sigma(W_i \cdot e_i) gi=σ(Wiei),如果是bit-wise方式,则 W i ∈ R d W_i \in R^d WiRd W ∈ R d × d W \in R^{d \times d} WRd×d是一个矩阵;如果vector-wise方式,则 W i W_i Wi为一个标量, W ∈ R d W \in R^{d} WRd是一个向量。

第二步:通过第一步中得到的gate value施加到原始embedding向量上, g i e i = g i ⊙ e i g_ie_i = g_i\odot e_i giei=giei ⊙ \odot 表示哈达玛积,也就是element-wise product,对应元素相乘。

最后,得到新的gate-aware embeddings, G E = [ g 1 e 1 , g 2 e 2 , . . . . , g n e n ] GE=[g_1e_1, g_2e_2,....,g_ne_n] GE=[g1e1,g2e2,....,gnen]输入到MLP中。

1.2、隐藏层Gate(Hidden Gate)

另外一种施加Gate网络的地方就是MLP的隐藏层,这个我也不上图了,直接参考图1吧,结构一模一样。计算步骤公式直接看1.1中bit-wise就可以。

二、GateNet论文实验结论

论文中做了大量的实验来验证了几个问题(只基于论文的实验结论,具体业务场景可能结论不一样,大家参考下就可以)

问题1:gate参数field private方式与field sharing方式那个效果好?

实验结果表明,field private方式的模型效果优于field sharing方式。

问题2:gate施加方式 bit-wise与vector-wise哪个效果好?

在Criteo数据集上,bit-wise的效果比vector-wise的好,但在ICME数据集上得不到这样的结论。

问题3:gate施加在embedding层和隐藏层哪个效果好?

论文中没有给出结论,但从给出的数据来看在隐藏层的比在embedding层效果好。此外,两种方式都用的话,相比较只用一种,效果提升不大。

问题4:gate网络用哪个激活函数好?

embedding层是linear,隐藏层是tanh。

三、自己实践中一些结论

我们自己的场景下(多任务下,ctcvr)实践结果来看,有几个结论仅供参考:

  1. gate作用在embedding层与输入层之间效果比作用在隐藏层之间好。
  2. gate使用bit-wise效果好于vector-wise。
  3. gate网络的激活函数sigmoid无论在收敛性和auc增益上都要显著好于其它的激活函数。



参考文献:

[1] Huang T , She Q , Wang Z , et al. GateNet: Gating-Enhanced Deep Network for Click-Through Rate Prediction[J]. 2020.


http://chatgpt.dhexx.cn/article/ADbGoYea.shtml

相关文章

专访张俊林:十年程序员的感悟与算法之路

专访张俊林:十年程序员的感悟与算法之路 http://www.csdn.net/article/2015-10-29/2826075 【编者按】程序员的十年之后会怎样?恐怕很多的技术人在入行之初都曾信誓旦旦,不管是走上人生巅峰,还是单纯的对技术的热爱,坚…

张俊林:当前炼制“大语言模型”的两个现象

知乎:张俊林链接:https://zhuanlan.zhihu.com/p/622365988编辑:深度学习自然语言处理 公众号 先说第一个现象。 自从LLaMA和ChatGLM开源后,再加上各种五花八门的“Self Instruct”数据在网上逐渐汇合,大模型两大要素都…

张俊林:推荐系统的下一步

作者 | Clara Deng采访嘉宾 | 张俊林编辑 | Natalie AI 前线导读:NLP 是人工智能中最难的问题之一,对它的研究与落地充满了挑战性。预训练模型 BERT 的出现给自然语言处理领域带来了里程碑式的改变。我们采访了新浪微博机器学习团队 AI Lab 负责人张俊林…

一文看懂推荐系统:Gate网络(一):新浪微博GateNet,GateNet就是想用attention的方法去搞,和SENet一样,都是张俊林的杰作

一文看懂推荐系统:Gate网络(一):新浪微博GateNet,GateNet就是想用attention的方法去搞,和SENet一样,都是张俊林的杰作 提示:最近系统性地学习推荐系统的课程。我们以小红书的场景为例…

张俊林:对比学习在微博内容表示的应用

分享嘉宾:张俊林博士 新浪微博 编辑整理:李桂荣 中南财经政法大学 出品平台:DataFunTalk 导读:深度学习的成功往往依赖于海量数据的支持,根据训练数据标记与否,可以分为有监督学习和无监督学习/自监督学习。…

一文看懂推荐系统:排序16:Dual Augmented Two-tower Model和张俊林的SENet,都是为了加入特征交叉想,增强重要特征,去掉噪声,类似于attention的骚操作

一文看懂推荐系统:排序16:Dual Augmented Two-tower Model和张俊林的SENet,都是为了加入特征交叉想,增强重要特征,去掉噪声,类似于attention的骚操作 提示:最近系统性地学习推荐系统的课程。我们…

张俊林:BERT和Transformer到底学到了什么 | AI ProCon 2019

演讲嘉宾 | 张俊林(新浪微博机器学习团队AI Lab负责人) 编辑 | Jane 出品 | AI科技大本营(ID:rgznai100) 【导读】BERT提出的这一年,也是NLP领域迅速发展的一年。学界不断提出新的预训练模型,刷…

张俊林:GPT-4 模型会开创哪些新的研究方向?

作者|张俊林知乎 整理|蘑菇先生学习记 分享一篇张俊林老师关于GPT-4模型会开创哪些新的研究方向的回答。 引言 在这个历史性的时刻,回答个问题,留下自己作为历史见证人的足迹。先遵循这个问题的主旨,写两句GPT-4开创了…

新浪张俊林:大语言模型的涌现能力——现象与解释

内容来源:ChatGPT 及大模型专题研讨会 分享嘉宾:新浪新技术研发负责人、中国中文信息学会理事 张俊林 分享主题:《大型语言模型的涌现能力:现象与解释》 转载自:https://zhuanlan.zhihu.com/p/621438653 注1&#xf…

张俊林:对比学习研究进展精要

作者 | 张俊林 编辑 | 夕小瑶的卖萌屋 对比学习(Contrastive Learning)最近一年比较火,各路大神比如Hinton、Yann LeCun、Kaiming He及一流研究机构比如Facebook、Google、DeepMind,都投入其中并快速提出各种改进模型:Moco系列、SimCLR系列、…

张俊林:推荐系统排序环节特征 Embedding 建模

每天给你送来NLP技术干货! 分享嘉宾:张俊林博士 新浪微博 编辑整理:刘一全 出品平台:DataFunTalk 导读:随着深度学习在推荐系统应用的发展,特征 Embedding 建模的重要性已经成为共识,同时海量特…

张俊林:从对比学习视角,重新审视推荐系统的召回粗排模型

分享嘉宾:张俊林博士 新浪微博 编辑整理:王岩 开课吧 出品平台:DataFunTalk 导读:今天分享的主题是从对比学习的视角,即从一个不同的角度来看看推荐系统里面的召回和粗排模型。对比学习从去年年中开始比较火&#xff0…

单链表的插入和删除

前言 在上一篇文章(单链表的定义)中我们已经了解了单链表的含义和简单的实现。那么在这篇文章中,我们将要来讲解单链表的插入和删除操作。 按位序插入(带头结点) 我们在上篇文章中已经讲解过,如果想要在…

单链表的定义和表示

一、单链表的存储结构,如下图所示: 定义单链表L的代码段: typedef struct Lnode{ //声明结点的类型和指向结点的指针类型 ElemType data; //结点的数据域 struct Lnode *next; //结点的指针域}Lnode, *Li…

【数据结构】- 链表之单链表(中)

文章目录 前言一、单链表(中)1.1 头删1.2尾删1.2.1第一种方法:1.2.2第二种方法:1.2.3多因素考虑 二、完整版代码2.1 SList.h2.2 SList.c2.3 Test.c 总结 前言 千万不要放弃 最好的东西 总是压轴出场 本章是关于数据结构中的链表之单链表(中) 提示&#…

带头结点的单链表表示和实现

带头结点的单链表表示和实现 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。 链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) 指针(指示后继元素存储位置),元素就是存…

C++单链表

链表是一种常见的数据结构。它主要是利用动态内存分配、结合结构体并配合指针来实现的,能根据需要开辟和释放内存单元。由于链表是用一组任意的存储单元来存储线性表中的数据,存储单元不一定是连续的,且链表的长度不是固定的,因此…

单链表的建立

一、顺序建立链表(尾插法) 1、首先建立一个只需头结点的空链表,此时头指针、尾指针均指向头结点 head(struct node*)malloc(sizeof(struct node));head->nextNULL; 2、在头结点后插入第一个节点 p(struct node*)malloc(sizeof(struct n…

【数据结构】单链表(带图详解)

文章目录 一、单链表的定义及其结构1.1.概念1.2.单链表的结构1.3.单链表的特点 二、单链表的实现2.1.定义结点2.2.创建单链表2.3.打印单链表2.4. 单链表尾插与尾删2.4. 单链表头插与头删2.4.查找某个结点2.5.插入2.6.删除\ 总代码 一、单链表的定义及其结构 1.1.概念 概念&am…