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

article/2025/9/20 6:54:43

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

提示:最近系统性地学习推荐系统的课程。我们以小红书的场景为例,讲工业界的推荐系统。
我只讲工业界实际有用的技术。说实话,工业界的技术远远领先学术界,在公开渠道看到的书、论文跟工业界的实践有很大的gap,
看书学不到推荐系统的关键技术。
看书学不到推荐系统的关键技术。
看书学不到推荐系统的关键技术。

王树森娓娓道来**《小红书的推荐系统》**
GitHub资料连接:http://wangshusen.github.io/
B站视频合集:https://space.bilibili.com/1369507485/channel/seriesdetail?sid=2249610

基础知识:
【1】一文看懂推荐系统:概要01:推荐系统的基本概念
【2】一文看懂推荐系统:概要02:推荐系统的链路,从召回粗排,到精排,到重排,最终推荐展示给用户
【3】一文看懂推荐系统:召回01:基于物品的协同过滤(ItemCF),item-based Collaboration Filter的核心思想与推荐过程
【4】一文看懂推荐系统:召回02:Swing 模型,和itemCF很相似,区别在于计算相似度的方法不一样
【5】一文看懂推荐系统:召回03:基于用户的协同过滤(UserCF),要计算用户之间的相似度
【6】一文看懂推荐系统:召回04:离散特征处理,one-hot编码和embedding特征嵌入
【7】一文看懂推荐系统:召回05:矩阵补充、最近邻查找,工业界基本不用了,但是有助于理解双塔模型
【8】一文看懂推荐系统:召回06:双塔模型——模型结构、训练方法,召回模型是后期融合特征,排序模型是前期融合特征
【9】一文看懂推荐系统:召回07:双塔模型——正负样本的选择,召回的目的是区分感兴趣和不感兴趣的,精排是区分感兴趣和非常感兴趣的
【10】一文看懂推荐系统:召回08:双塔模型——线上服务需要离线存物品向量、模型更新分为全量更新和增量更新
【11】一文看懂推荐系统:召回09:地理位置召回、作者召回、缓存召回
【12】一文看懂推荐系统:排序01:多目标模型
【13】一文看懂推荐系统:排序02:Multi-gate Mixture-of-Experts (MMoE)
【14】一文看懂推荐系统:排序03:预估分数融合
【15】一文看懂推荐系统:排序04:视频播放建模
【16】一文看懂推荐系统:排序05:排序模型的特征
【17】一文看懂推荐系统:排序06:粗排三塔模型,性能介于双塔模型和精排模型之间
【18】一文看懂推荐系统:特征交叉01:Factorized Machine (FM) 因式分解机
【19】一文看懂推荐系统:物品冷启01:优化目标 & 评价指标
【20】一文看懂推荐系统:物品冷启02:简单的召回通道
【21】一文看懂推荐系统:物品冷启03:聚类召回
【22】一文看懂推荐系统:物品冷启04:Look-Alike 召回,Look-Alike人群扩散
【23】一文看懂推荐系统:物品冷启05:流量调控
【24】一文看懂推荐系统:物品冷启06:冷启的AB测试
【25】推荐系统最经典的 排序模型 有哪些?你了解多少?
【26】一文看懂推荐系统:排序07:GBDT+LR模型
【27】一文看懂推荐系统:排序08:Factorization Machines(FM)因子分解机,一个特殊的案例就是MF,矩阵分解为uv的乘积
【28】一文看懂推荐系统:排序09:Field-aware Factorization Machines(FFM),从FM改进来的,效果不咋地
【29】一文看懂推荐系统:排序10:wide&deep模型,wide就是LR负责记忆,deep负责高阶特征交叉而泛化
【30】一文看懂推荐系统:排序11:Deep & Cross Network(DCN)
【31】一文看懂推荐系统:排序12:xDeepFM模型,并不是对DeepFM的改进,而是对DCN的改进哦
【32】一文看懂推荐系统:排序13:FNN模型(FM+MLP=FNN),与PNN同属上海交大张楠的作品
【33】一文看懂推荐系统:排序14:PNN模型(Product-based Neural Networks),和FNN一个作者,干掉FM,加上LR+Product
【34】一文看懂推荐系统:排序15:DeepFM模型(Factorization-Machine),xDeepFM可不是对DeepFM的改编哦,而是对DCN的改编
【36】一文看懂推荐系统:经典双塔模型:微软DSSM模型(Deep Structured Semantic Models),无特征交互,后来美团改进了


提示:文章目录

文章目录

  • 一文看懂推荐系统:Gate网络(一):新浪微博GateNet,GateNet就是想用attention的方法去搞,和SENet一样,都是张俊林的杰作
  • 前言
  • 一、GateNet网络类型
    • 1.1、embedding层Gate(Feature Embedding Gate)
    • 1.2、隐藏层Gate(Hidden Gate)
  • 二、GateNet论文实验结论
  • 三、自己实践中一些结论
  • 总结


前言

CTR预估模型在学术界/工业界进化的路线有明显的几个节点:

1. 从单特征到交叉特征,围绕着如何学到更有用的交叉特征,诞生了一系列的模型。

2. attention火起来后,被迅速应用到CTR预估领域中,又有很多模型被提出。

3. gate网络火起来后,同样也催生了一些模型。

但话说,我其实一直没太搞明白『attention』和『gate』本质上的区别是什么?
有路过的大佬可以评论区帮忙解答下。

其实就是单体attention或者多提attention

言归正传,这篇博客将要介绍新浪微博张俊林大佬团队提出的GateNet模型,

这篇文章我只在arxiv上找到了,并没有找到公布发表的会议版本,应该是还没投。

整篇文章看起来比较简短,因为Gate网络实在没什么好讲的,
所以文章大量的笔墨都在实证研究上了,

不过遗憾的是,数据集都是用的公开的数据集,没有看到在新浪微博自己的数据集上的实验效果。

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

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


一、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的区别:

图1. embedding层bit-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方式。

在这里插入图片描述

1.2、隐藏层Gate(Hidden Gate)

在这里插入图片描述
另外一种施加Gate网络的地方就是MLP的隐藏层,
计算步骤公式直接看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)实践结果来看,有几个结论仅供参考:

gate作用在embedding层与输入层之间效果比作用在隐藏层之间好。

gate使用bit-wise效果好于vector-wise。

gate网络的激活函数sigmoid无论在收敛性和auc增益上都要显著好于其它的激活函数。


总结

提示:如何系统地学习推荐系统,本系列文章可以帮到你

(1)找工作投简历的话,你要将招聘单位的岗位需求和你的研究方向和工作内容对应起来,这样才能契合公司招聘需求,否则它直接把简历给你挂了
(2)你到底是要进公司做推荐系统方向?还是纯cv方向?还是NLP方向?还是语音方向?还是深度学习机器学习技术中台?还是硬件?还是前端开发?后端开发?测试开发?产品?人力?行政?这些你不可能啥都会,你需要找准一个方向,自己有积累,才能去投递,否则面试官跟你聊什么呢?
(3)今日推荐系统学习经验:GateNet就是想用attention的方法去搞


http://chatgpt.dhexx.cn/article/8SAdAxN7.shtml

相关文章

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

分享嘉宾:张俊林博士 新浪微博 编辑整理:李桂荣 中南财经政法大学 出品平台: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…

单链表的常用算法

目录 一、判断链表是否为空 二、单链表的销毁:链表销毁后不存在 三、清空单链表:链表仍存在,但链表中无元素,成为空链表(头指针和头结点仍然在) 四、求单链表的表长 五、单链表的取值 六、单链表的按值查找 七、单链表的插…

线性表的链式存储:单链表的相关介绍(插入、删除、查找等)头节点和头指针的区别

一、链式存储 用一组地址任意的存储单元(地址可以连续也可以不连续),依次存储线性表中的各数据元素。 链式存储结构中的每个存储单元称为“结点”,结点包含一个数据域和一个指针域。 数据元素之间的逻辑关系通过结点中的指针表示 …

单链表的简单讲解

注意:本人也是小白,如果出现错误希望各位读者能够包容 文章目录 前言一、单链表的结构定义二、单链表的基本操作1.单链表的初始化2.单链表的创建1.头插法头插法图片讲解 2.尾插法尾插法图片讲解 3.头插法和尾插法的对比 3.单链表的输出4.单链表的插入图片…

线性表之单链表~

这次来介绍一下数据结构里面的单链表。 这是一个简单的链表,它是单向的,没有(哨兵位置)头结点,不循环,有一个头指针指向第一个节点。 和上次介绍线性表一样,我们同样研究它的 增,删,查&#x…