CTR预估模型演变及学习笔记
【说在前面】本人博客新手一枚,象牙塔的老白,职业场的小白。以下内容仅为个人见解,欢迎批评指正,不喜勿喷![握手][握手]
【再啰嗦一下】如果你对智能推荐感兴趣,欢迎先浏览我的另一篇随笔:智能推荐算法演变及学习笔记
【最后再说一下】本文只对智能推荐算法中的CTR预估模型演变进行具体介绍!
一、传统CTR预估模型演变
1. LR
即逻辑回归。LR模型先求得各特征的加权和,再添加sigmoid函数。
- 使用各特征的加权和,是为了考虑不同特征的重要程度
- 使用sigmoid函数,是为了将值映射到 [0, 1] 区间
LR模型的优点在于:
- 易于并行化、模型简单、训练开销小
- 可解释性强、可拓展性强
LR模型的缺点在于:
- 只使用单一特征,无法利用高维信息,表达能力有限
- 特征工程需要耗费大量的精力
2. POLY2
POLY2对所有特征进行“暴力”组合(即两两交叉),并对所有的特征组合赋予了权重。

一定程度上解决了LR缺乏特征组合的问题,但是“暴力行为”带来了一些问题:
- 特征维度爆炸,特征数据过于稀疏,特征权重不易收敛
3. FM
相比于POLY2,FM为每个特征学习了一个隐权重向量 w。在特征交叉时,使用两个特征隐向量w的内积作为交叉特征的权重。

将原先n^2级别的权重数量降低到n*k(k为隐向量w的维度,n>>k),极大降低了训练开销。
4. FFM
在FM模型基础上,FFM模型引入了Field-aware。在特征交叉时,使用特征在对方特征域上的隐向量内积作为交叉特征的权重。

FFM模型的权重数量共n*k*f个,计算复杂度上升到k*n^2,远远大于FM模型的k*n。
5. GBDT/xgboost/lightgbm
直接使用机器学习算法中的集成学习方法。
6. GBDT+LR/FM/FFM
利用GBDT自动进行特征筛选和组合,进而生成新的离散特征向量,再把该特征向量当作LR模型的输入。

7. MLR
在LR的基础上采用分而治之的思路,先对样本进行分片,再在样本分片中应用LR进行CTR预估。



以上1-7部分可以总结为传统的CTR预估模型演变,这里分享一下大佬的关系图谱:

二、引入深度学习的CTR预估模型演变
1. Deep Crossing
通过加入embedding层将稀疏特征转化为低维稠密特征,用stacking层连接分段的特征向量,再通过多层神经网络完成特征组合/转换。
跟经典DNN有所不同的是,Deep crossing采用的multilayer perceptron是由残差网络组成的。

2. FNN
相比于Deep Crossing,FNN使用FM的隐层向量作为user和item的Embedding,从而避免了完全从随机状态训练Embedding。

3. Wide & Deep
把单输入层的Wide部分和经过多层感知机的Deep部分连接起来,一起输入最终的输出层。
- wide部分:高维特征+特征组合的LR
- deep部分:deep learning

4. DeepFM
DeepFM对Wide & Deep的改进之处在于,用FM替换掉了原来的Wide部分,加强了浅层网络部分特征组合的能力。

5. Deep & Cross (DCN)
使用Cross网络替代了原来的Wide部分。Cross网络使用多层cross layer对输入向量进行特征交叉,增加特征之间的交互。

6. NFM
相对于DeepFM和DCN对于Wide&Deep Wide部分的改进,NFM可以看作是对Deep部分的改进。
NFM用一个带Bi-interaction Pooling层的DNN替换了FM的特征交叉部分。

7. Deep Interest Network (DIN)
在模型的embedding layer和concatenate layer之间加入了attention unit,使模型能够根据候选商品的不同,调整不同特征的权重。

以上1-7部分可以总结为引入深度学习的CTR预估模型演变,这里分享一下大佬的关系图谱:

三、深度学习推荐模型的上线问题
对于深度学习推荐模型的离线训练自然不是问题,一般可以采用比较成熟的离线并行训练环境。
对于深度学习推荐模型的上线问题,其线上时效性至关重要。
1. “特征实时性”
这里分享一下大佬画的智能推荐系统主流技术架构图,博主认知有限,就不展开介绍了。

2. “模型实时性”
与“特征实时性”相比,推荐系统模型的实时性往往是从更全局的角度考虑问题,博主认知有限,就不展开介绍了。

3. “服务实时性”:双塔模型
很多公司采用“复杂网络离线训练,生成embedding存入内存数据库,线上实现LR或浅层NN等轻量级模型拟合优化目标”的上线方式。
以百度的双塔模型举例说明:
(1)分别用复杂网络对“用户特征”和“广告特征”进行embedding,这就形成了两个独立的“塔”,因此称为双塔模型。
(2)在完成双塔模型的训练后,可以把最终的用户embedding和广告embedding存入内存数据库。
(3)线上推理时,只需要实现最后一层的逻辑,从内存数据库中取出用户/广告的embedding,通过简单计算即可得到预估结果。

最后感叹一句,深度学习CTR模型的发展实在是太迅速了,要保持学习啊!
本文参考了大佬的知乎专栏:https://zhuanlan.zhihu.com/p/51117616
如果你对智能推荐感兴趣,欢迎先浏览我的另一篇随笔:智能推荐算法演变及学习笔记
如果您对数据挖掘感兴趣,欢迎浏览我的另一篇博客:数据挖掘比赛/项目全流程介绍
如果您对人工智能算法感兴趣,欢迎浏览我的另一篇博客:人工智能新手入门学习路线和学习资源合集(含AI综述/python/机器学习/深度学习/tensorflow)
如果你是计算机专业的应届毕业生,欢迎浏览我的另外一篇博客:如果你是一个计算机领域的应届生,你如何准备求职面试?
如果你是计算机专业的本科生,欢迎浏览我的另外一篇博客:如果你是一个计算机领域的本科生,你可以选择学习什么?
如果你是计算机专业的研究生,欢迎浏览我的另外一篇博客:如果你是一个计算机领域的研究生,你可以选择学习什么?
如果你对金融科技感兴趣,欢迎浏览我的另一篇博客:如果你想了解金融科技,不妨先了解金融科技有哪些可能?
之后博主将持续分享各大算法的学习思路和学习笔记:hello world: 我的博客写作思路
CTR预估模型演变及学习笔记的更多相关文章
- 人工智能中小样本问题相关的系列模型演变及学习笔记(二):生成对抗网络 GAN
[说在前面]本人博客新手一枚,象牙塔的老白,职业场的小白.以下内容仅为个人见解,欢迎批评指正,不喜勿喷![握手][握手] [再啰嗦一下]本文衔接上一个随笔:人工智能中小样本问题相关的系列模型演变及学习 ...
- 深度学习中的序列模型演变及学习笔记(含RNN/LSTM/GRU/Seq2Seq/Attention机制)
[说在前面]本人博客新手一枚,象牙塔的老白,职业场的小白.以下内容仅为个人见解,欢迎批评指正,不喜勿喷![认真看图][认真看图] [补充说明]深度学习中的序列模型已经广泛应用于自然语言处理(例如机器翻 ...
- 主流CTR预估模型的演化及对比
https://zhuanlan.zhihu.com/p/35465875 学习和预测用户的反馈对于个性化推荐.信息检索和在线广告等领域都有着极其重要的作用.在这些领域,用户的反馈行为包括点击.收藏. ...
- 闲聊DNN CTR预估模型
原文:http://www.52cs.org/?p=1046 闲聊DNN CTR预估模型 Written by b manongb 作者:Kintocai, 北京大学硕士, 现就职于腾讯. 伦敦大学张 ...
- 深度CTR预估模型中的特征自动组合机制演化简史 zz
众所周知,深度学习在计算机视觉.语音识别.自然语言处理等领域最先取得突破并成为主流方法.但是,深度学习为什么是在这些领域而不是其他领域最先成功呢?我想一个原因就是图像.语音.文本数据在空间和时间上具有 ...
- 【转】- 从FM推演各深度CTR预估模型(附代码)
从FM推演各深度CTR预估模型(附代码) 2018年07月13日 15:04:34 阅读数:584 作者: 龙心尘 && 寒小阳 时间:2018年7月 出处: 龙心尘 寒小阳
- PaddlePaddle分布式训练及CTR预估模型应用
前言:我在github上创建了一个新的repo:PaddleAI, 准备用Paddle做的一系列有趣又实用的案例,所有的案例都会上传数据代码和预训练模型,下载后可以在30s内上手,跑demo出结果,让 ...
- 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性
基于.net的分布式系统限流组件 在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...
- 几句话总结一个算法之CTR预估模型
背景 假设现在有个商品点击预测的任务,有用户端特征性别.年龄.消费力等,商品侧特征价格.销量等,样本为0或者1,现在对特征进行one hot encode,如性别特征用二维表示,男为[1,0],女为[ ...
随机推荐
- matlab计算相对功率
1.对脑电数据进行db4四层分解,因为脑电频率是在0-64HZ,分层后如图所示, 细节分量[d1 d2 d3 d4] 近似分量[a4] 重建细节分量和近似分量,然后计算对应频段得相对功率谱,重建出来得 ...
- git以及gitHub的使用说明书
一.使用说明 1.Git与github的功能: Git是世界上最先进的分布式版本控制系统,也就是用来记录你的项目代码历史变更信息的工具:github就是用来存储你的代码以及变更信息的云端平台: 2.优 ...
- 同事上班时间无聊,用python敲出贪吃蛇游戏打发时间
自从学会啦python,再也不用担心上班时间老板发现我打游戏啦 贪吃蛇代码: 还有不懂的(https://www.ixigua.com/i6808019824560570888/)这里有视频教程. 如 ...
- 带权值的图 BFS
用bfs遍历最图求最短路径时通常借用优先队列即优先考虑最大的或者最小的权值 方法1 优先队列:(内置函数,优先考虑较小的权值) #include<iostream> #include< ...
- 详解 Hashtable
至于HashTable,本人只想说,除了它们各自的特点是截然相反外,其余性质 以及 用法和HashMap的性质几乎一样, (有关Map集合的基本性质,请观看本人博文-- <详解 Map集合> ...
- SQL SERVER 那点事
温故而知新 一.创建数据库 USE MASTER; GO IF EXISTS(SELECT * FROM sys.databases WHERE [name] = 'student') BEGIN A ...
- MYSQL和SQL Server 的区别
注意MYSQL使用注释 -- 时 要后面加上空格 使用 #不用 一.数据类型 MYSQL:支持enum和set类型 ;SQL SERVER:不支持 MYSQL:不支持nchar,nvarchar,nt ...
- PHP面向对象之重写与重载
/*** ====笔记部分==== 重写/覆盖 override 指:子类重写了父类的同名方法 重载: overload 重载是指:存在多个同名方法,但参数类型/个数不同. 传不同的参数,调用不同的方 ...
- 2019-2020-1 20199326《Linux内核原理与分析》第一周作业
开篇概述 我利用假期的时间自学了实验楼上的Linux基础入门前八个实验的课程,学习过程中遇到了一些小问题.但经过查资料等方式最终还是解决了问题.现将学到的一些知识点总结下来.方便日后复习查看. 1.零 ...
- 细说show slave status参数详解
在搭建好mysql主从之后,我们一般在从库上通过命令 show slave status\G 来查看主从的状态,会有很多的参数,接下来笔者就带大家好好的了解这些参数 root@localhost (n ...