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).下面逐一来说明 ...
最新文章
- 10年Python大牛倾力打造系统Python学习流程图!
- HTTPS是如何加密的
- 【正则表达式】JavaScript的exec()和search()方法
- mysql数据库约束详解_MySQL数据库中的外键约束详解
- 具有预先训练模型的AI人脸识别
- [GoogleAppEngine]GAE平台需设置默认threadsafe-编译问题
- 热烈庆贺本博客9级及排名138
- 【PAT】A-1034 :Head of a Gang(图的DFS遍历和map的巧妙使用---图的入门题目)
- DolphinScheduler 调度系统
- C#通过NOPI读写Excel,并插入图片,VS2019
- android手机开机密码,安卓手机锁屏密码忘了怎么办 锁屏密码解决方法
- python生成中文字符画_用python生成字符画
- 解决pip Could not fetch URL There was a problem confirming the ssl certificate: HTTPSConnectionPool问题
- 收藏向:看完此篇让你轻松玩转领英
- AndroidStudio安装apk到vivo手机时提示安装失败
- 如何保证电脑硬盘格式化后数据不能被恢复?
- BlumNet: Graph Component Detection for Object Skeleton Extraction阅读笔记
- iOS Background Fetch 后台应用程序刷新的使用
- 数字图像中手写阿拉伯数字的识别技术概览
- 鹅厂招人啦!限量内推码和面试直通卡!助你直拿Offer(内附岗位介绍)