PPNet模型和tf.stop_gradient的用法
参考链接:
1. 快手参数个性化 CTR 模型 - PPNet
2. 快手精排模型实践
3. LHUC算法论文
- 如上图所示,PPNet 的左侧是目前常见的 DNN 网络结构,由稀疏特征(sparse features)、嵌入层(embedding layer)、多神经网络层(neural layer)组成。
- 右侧是 PPNet 特有的模块,包括 Gate NN 和只给 Gate NN 作为输入的 id 特征。其中 uid,pid,aid 分别表示 user id,photo id,author id。左侧的所有特征的 embedding 会同这 3 个 id 特征的 embedding 拼接到一起作为所有 Gate NN 的输入。
- 需要注意的是,左侧所有特征的 embedding 并不接受 Gate NN 的反传梯度,这样操作的目的是减少 Gate NN 对现有特征 embedding 收敛产生的影响。Gate NN 的数量同左侧神经网络的层数一致,其输出同每一层神经网络的输入做 element-wise product 来做用户的个性化偏置。Gate NN 是一个 2 层神经网络,其中第二层网络的激活函数是 2 * sigmoid,目的是约束其输出的每一项在 [0, 2] 范围内,并且默认值为 1。当 Gate NN 输出是默认值时,PPNet 同左侧部分网络是等价的。
- 经实验对比,通过 Gate NN 为神经网络层输入增加个性化偏置项,可以显著提升模型的目标预估能力。PPNet 通过 Gate NN 来支持 DNN 网络参数的个性化能力,来提升目标的预估能力,理论上来讲,可以用到所有基于 DNN 模型的预估场景,如个性化推荐,广告,基于 DNN 的强化学习场景等。
前面提到,左侧所有特征Embedding不接受GateNN的反向梯度传播。在TensorFlow2.x中,如何阻止呢?通过函数tf.stop_gradient()
函数即可。用法如下:
x = tensorflow.Variable(1, dtype=tensorflow.float32)
with tensorflow.GradientTape() as tape:y = x * xz = y + x
显然,由于z=x2+xz = x^2 +xz=x2+x,所以z′=2x+1z'=2x+1z′=2x+1 。加上tf.stop_gradient()
后:
with tensorflow.GradientTape() as tape:y = tensorflow.stop_gradient(x * x)z = y + x
此时,z′=1z'=1z′=1。
- 参考链接:https://www.zhihu.com/question/486168076
- TensorFlow API:https://tensorflow.google.cn/api_docs/python/tf/stop_gradient?hl=en
PPNet模型和tf.stop_gradient的用法相关推荐
- lr模型和dnn模型_建立ML或DNN模型的技巧
lr模型和dnn模型 机器学习 (Machine Learning) Everyone can fit data into any model machine learning or deep lea ...
- Tensorflow Keras模型和Estimator有什么区别?
对于整个tensorflow2.0框架,tensorflow Keras模型和Tensorflow Estimators都能够训练神经网络模型并使用它们来预测新的数据. 它们都是TensorFlow ...
- 五种IO模型和nginx的web模块
IO模型和nginx模块 IO模型 前言 消息通知 IO模型 nginx nginx模块 安装nginx nginx.conf的配置 main段相关指令 HTTP模块配置 与套接字相关的配置 与路径相 ...
- 架构设计:系统间通信(4)——IO通信模型和JAVA实践 中篇
接上篇<架构设计:系统间通信(3)--IO通信模型和JAVA实践 上篇> 4.多路复用IO模型 在"上篇"文章中,我们已经提到了使用多线程解决高并发场景的问题所在,这篇 ...
- TCP/IP四层模型和OSI七层模型
TCP/IP四层模型和OSI七层模型对应表.我们把OSI七层网络模型和Linux TCP/IP四层概念模型对应,然后将各种网络协议归类. 表1-1 TCP/IP四层模型和OSI七层模型对应表 ...
- 情感分析的描述、基于词袋模型和word2vec模型的情感分析实现
情感分析的描述.基于词袋模型和word2vec模型的情感分析实现 以购物评论为例: # 读入原始数据集 import pandas as pddfpos = pd.read_excel('../dat ...
- 文档信息的向量化-NNLM模型和word2vec
文档信息的向量化-NNLM模型和word2vec
- R语言广义加性模型(GAMs:Generalized Additive Model)建模:数据加载、划分数据、并分别构建线性回归模型和广义线性加性模型GAMs、并比较线性模型和GAMs模型的性能
R语言广义加性模型(GAMs:Generalized Additive Model)建模:数据加载.划分数据.并分别构建线性回归模型和广义线性加性模型GAMs.并比较线性模型和GAMs模型的性能 目录
- tf.estimator的用法
tf.estimator的用法 利用 tf.estimator 训练模型时需要写两个重要的函数,一个用于数据输入的函数(input_fn),另一个用于模型创建的函数(model_fn).下面逐一来说明 ...
最新文章
- Spring父子容器的关系分析--用实例说话
- 学习笔记整理之对象的转型
- Java有线程安全的set吗?
- feign整合hystrix开启hystrix后启动报错_Spring Cloud进阶之路 | 六:断路器(hystrix)...
- mysql怎么查找删除重复数据_Mysql中如何查找并删除重复数据
- Cowboy 源码分析(二十六)
- ffmpeg filter过滤器 基础实例及全面解析
- xp母盘制作流程+QQDLL+系统文件DLL修改(转)
- mysql源代码多少行_数据库是一个庞大的工程,本来想读读mysql的开源代码,可看到代码行数.doc...
- 计算机电路基础答案刘怀望,计算机电路基础
- 基于Android的办公自动化系统APP设计与实现
- 软件测试找游戏bug,游戏测试用例及游戏测试bug详解
- 腾讯云服务器部署教程
- 华三防火墙三层逻辑子接口对接华三交换机
- 情商决定了工作方面的成就
- 对称加密算法、非对称加密算法、散列函数与数字签名的介绍
- 存储资源盘活助力网络强国
- 太酷了!GitHub 开发者自制火星车,教程全面开源!网友:这才是大佬!
- 易语言做mysql登录器_易语言制作简单的一个登陆器
- 如何保存伴奏在计算机,怎么把原唱变成伴奏 有什么方法可以把歌曲去掉原唱保留伴奏...
热门文章
- Ubuntu 12.04 下安装 openGL 驱动时,究竟做了什么事?
- R语言进行探索性因子分析EFA、除了R原生函数(princomp函数和factanal函数)以及psych包以外的其它包:FactoMineR、FAiR包、GPArotation包、nFactors包
- linux的tcp非阻塞客户端与服务端demo源码
- 优质投资组合构建、MA、MACD、KDJ、RSI、OBV相关指标计算及预测模型在线实验闯关
- android 版本比对,iQOO Neo三个版本对比体验 845版、855版、855 Plus版对比实测
- go自定义和使用set包处理列表 交集 并集 差集
- ASP.Net的两种开发模式
- 《计算机基础》在线作业,重庆西南大学17年秋季1056《计算机基础》在线作业(参考复习资料)...
- Visual Basic 6 -VS6SP6 - SP6 for Windows 11
- 素人小学渣PMP一次通过心得(报班篇),11月考试同学请留步