CTR Stacking Models

深度学习CTR

stacking_nn_models_envolution_network

Deep Crossing

Deep Crossing:深度学习CTR模型最典型、基础性模型

deep_crossing_structure

  • multiple residual units:残差网络

Factorization Machine based Neural Network

FNN:使用FM隐层作为embedding向量,避免完全从随机状态训练 embedding

fnn_structure

  • 输入特征为高维稀疏特征,embeddingd层与输入层连接数量大、 训练效率低、不稳定

  • 提前训练embedding提高模型复杂度、不稳定性

Product-based Neural Network

PNN:在embedding层、全连接层间加入product layer,完成 针对性特征交叉

pnn_structure

  • product layer:在不同特征域间进行特征组合,定义有 inner、outer product以捕捉不同的交叉信息,提高表示能力

  • 传统DNN中通过多层全连接层完成特征交叉组合,缺乏针对性

    • 没有针对不同特征域进行交叉
    • 不是直接针对交叉特征设计

Wide&Deep Network

Wide&Deep:结合深层网络、广度网络平衡记忆、泛化

wide_and_deep_structure

  • deep models:基于稠密embedding前馈神经网络
  • wide models:基于稀疏特征、特征交叉、特征转换线性模型
  • 基于记忆的推荐通常和用户已经执行直接相关;基于泛化的推荐 更有可能提供多样性的推荐
  • memorization:记忆,学习频繁出现的物品、特征,从历史 数据中探索相关性
  • generalization:泛化,基于相关性的transitivity,探索 较少出现的新特征组合

  • https://arxiv.org/pdf/1606.07792.pdf

  • wide&deep系模型应该都属于stacking集成

Google App Store实现

wide_and_deep_logit_structure

  • wide部分:cross product transformation

    • 输入
      • 已安装Apps
      • impression Apps
      • 特征工程交叉特征
    • 优化器:带L1正则的FTRL
  • Deep部分:左侧DNN

    • 输入
      • 类别特征embedding:32维
      • 稠密特征
      • 拼接:拼接后1200维 (多值类别应该需要将embedding向量平均、极大化)
    • 优化器:AdaGrad
    • 隐层结构
      • 激活函数relu优于tanh
      • 3层隐层效果最佳
      • 隐层使用塔式结构

DeepFM

DeepFM:用FM替代wide&deep中wide部分,提升其表达能力

deepfm_structure

  • Dense Embeddings:FM中各特征隐向量,FM、DNN公用
  • FM Layer:FM內积、求和层
  • 特点(和Wide&Deep关键区别)

    • wide部分为FM (deep&wide中wide部分有特征交叉,但依靠特征工程实现)
    • FM、DNN部分共享embedding层
  • 同时组合wide、二阶交叉、deep三部分结构,增强模型表达能力

    • FM负责一阶特征、二阶特征交叉
    • DNN负责更高阶特征交叉、非线性

实现

  • DNN部分隐层

    • 激活函数relu优于tanh
    • 3层隐层效果最佳
    • 神经元数目在200-400间为宜,略少于Wide&Deep
    • 在总神经元数目固定下,constant结构最佳
  • embedding层

    • 实验中维度为10

Deep&Cross Network

Deep&Cross:用cross网络替代wide&deep中wide部分,提升其 表达能力

deep_and_cross_structure

  • 特点(和WDL、DeepFM区别)

    • 使用交叉网络结构提取高阶交叉特征
      • 无需特征工程(WDL)
      • 不局限于二阶交叉特征(DeepFM)
  • 交叉网络可以使用较少资源提取高阶交叉特征

https://arxiv.org/pdf/1708.05123.pdf

交叉网络

交叉网络:以有效地方式应用显式特征交叉,由多个交叉层组成

cross_network_cross_layer

  • $x_l$:第$l$交叉层输出
  • $w_l, b_l$:第$l$交叉层参数
  • 借鉴残差网络思想

    • 交叉层完成特征交叉后,会再加上其输入
    • 则映射函数$f(x_l, w_l, b_l)$即拟合残差
  • 特征高阶交叉

    • 每层$x_0 x_l^T$都是特征交叉
    • 交叉特征的阶数随深度$l$增加而增加,最高阶为$l+1$
  • 复杂度(资源消耗)

    • 随输入向量维度、深度、线性增加
    • 受益于$x_l^T w$为标量,由结合律无需存储中间过程矩阵

Nueral Factorization Machine

NFM:用带二阶交互池化层的DNN替换FM中二阶交叉项,提升FM的 非线性表达能力

  • $f_{DNN}(x)$:多层前馈神经网络,包括Embedding LayerBi-Interaction LayerHidden LayerPrediciton Layer
  • $h^T$:DNN输出层权重

模型结构

nfm_structure

Embedding Layer

全连接网络:将每个特征映射为稠密向量表示

  • $v_i$:$k$维embedding向量
  • 只需要考虑非0特征,得到一组特征向量
  • 特征向量会乘以特征值以反映真实值特征 (一般embedding特征取0/1,等价于查表)

Bi-Interaction Layer

BI层:将一组embedding向量转换为单个向量

  • $\odot$:逐元素乘积
  • 没有引入额外参数,可在线性时间$\in O(kM_x)$内计算
  • 可以捕获在低层次二阶交互影响,较拼接操作更 informative,方便学习更高阶特征交互
  • 将BI层替换为拼接、同时替换隐层为塔型MLP(残差网络) 则可以得到wide&deepDeepCross
  • 拼接操作不涉及特征间交互影响,都交由后续深度网络学习 ,实际操作中比较难训练

Hidden Layer

隐层:普通多层嵌套权重、激活函数

  • $l=0$没有隐层时,$f_{\sigma}$原样输出,取$h^T$为 全1向量,即可得FM模型

Attentional Factorization Machines

AFM:引入Attention网络替换FM中二阶交互项,学习交互特征的 重要性,剔除无效的特征组合(交互项)

  • $\varepsilon$:隐向量集,同上
  • $p^T$:Attention网络输出权重

模型结构

afm_structure

Pair-Wise Interaction Layer

成对交互层:将m个embedding向量扩充为$m(m-1)/2$个交互向量

  • $R_X = {(i,j) | i \in X, j \in X, j > i }$
  • $v_i$:$k$维embedding向量

Attention-based Pooling

注意力池化层:压缩交互作用为单一表示时,给交互作用赋不同权重

  • $a{i,j}$:交互权重$w{i,j}$的注意力得分
  • $\odot$:逐元素乘积
  • 考虑到特征高维稀疏,注意力得分不能直接训练,使用MLP attention network参数化注意力得分

    • $W \in R^{t*k}, b \in R^t, h \in R^T$:模型参数
    • $t$:attention network隐层大小

Deep Interest Network

DIN:融合Attention机制作用于DNN

模型结构

din_stucture

activation unit

激活单元

  • 相较于上个结构仅多了直接拼接的用户、上下文特征 din_stucture_comparision

模型训练

Mini-batch Aware Regularization

  • 以Batch内参数平均近似$L_2$约束
  • $W \in R^{K * M}, W_i$:embedding字典、第$i$embedding 向量
  • $K, M$:embedding向量维数、特征数量
  • $B, B_j$:batch数量、第$j$个batch
  • 则参数迭代

Data Adaptive Activation Function

PReLU在0点处硬修正,考虑使用其他对输入自适应的函数替代,以 适应不同层的不同输入分布

Deep Interest Evolution Network

DIEN:引入序列模型AUGRU模拟行为进化过程

模型结构

dien_structure

  • Interest Extractor Layer:使用GRU单元建模历史行为依赖 关系

? 关系

视频推荐

Matching

基于用户行为

离线协同过滤

  • 根据用户行为日志,利用物品-based协同过滤生成离线的 物品2物品相似度矩阵、用户离线推荐结果

    • 基于艾宾浩斯遗忘曲线按照时间进行降权
    • 弱化热点影片的权重
    • 矩阵分解
  • 基于用户的playlog接口实时获取用户的短时间内的观看历史, 通过物品2物品相似度矩阵进行CF扩散,提取出与用户短时间内 观看历史相似的topN个物品用于召回

  • 用户的CF离线推荐结果直接作为线上服务的召回渠道

W2V

  • 全部影片作为预料库、观看历史按时序排列视为文档,计算所有 物品的词向量

  • 根据词向量计算物品2物品相似度矩阵,用于线上playlog召回 数据

LDA

  • 基于概率主题模型:文档-潜在主题-词三级关系,映射/类比到 用户行为数据:用户-潜在兴趣-资源

  • 通过用户历史行为记录,提取LDA中间产物、用户的潜在兴趣 向量、资源潜在主题分布向量

  • 基于物品的主题向量,进行物品2物品相似度计算,用于线上 playlog召回数据

SimRank

  • 将用户、物品关系视为二部图,考虑相似关系可以在图上传播 思想,使用SimRank计算物品相似队列

基于内容

基于标题

  • 对影片文本简介使用doc2vector,计算资源的表示向量
  • 使用资源的表示项集计算物品2物品相似度矩阵

基于Style

基于Tag

其他方向

  • RNN捕捉用户在点击序列中的模式,利用点击行为发生先后顺序 调整推荐展示顺序

  • Graph Embedding

Ranking

特征工程

  • 低维稠密通用特征:泛化能力良好、记忆能力差

    • embedding特征
    • 统计特征
  • 高维稠密特征:记忆能力较好

    • 视频ID
    • 标签
    • 主题

分类

  • 按特征来源分类

    • 物品特征:资源风格、低于、类型、标签、统计特征
    • 用户特征:性别、年龄、婚姻状况、收入预测
    • context特征:网络状态、时间段、城市
    • 交叉特征
  • 按特征更新频率、获取方式

    • 离线特征:变化缓慢,如:用户、物品基本特征、统计特征
    • 近在线特征:分钟级、小时级需要更新的特征,如:ctr
    • 在线特征:每次请求达到实时获取特征,如:网络状态、 请求时间

特征扩充

  • 用户兴趣向量丰富用户维度上兴趣特征

    • LDA中间产物作为用户潜在兴趣向量
    • W2V词向量、用户行为历史统计出用户兴趣向量
  • 资源embedding向量丰富物品维度特征

    • 用户行为数据embedding得到W2V、LDA词向量
    • 资源标题embedding得到doc2vector词向量
  • 资源封面AutoEncode向量

    • 基于资源封面采用自编码器训练,提取隐层向量作为资源 特征

统计特征细化

  • 特征工程时间窗口细化:按不同时间窗口分别计算资源的统计 特征

    • 丰富资源特征
    • 融入时间衰减因素
  • 在线特征交叉:交叉特征增加样本特征的区分度

连续特征离散化

  • 目标:避免特征为长尾分布、大部分取值集中在小范围,对样本 区分度差
  • 等频离散化:等频分桶、独热编码
  • 对数转化

采样策略

  • 负样本采样策略调整:基本曝光时间、顺序,过滤负样本
  • 不平衡样本策略调整:离线A/B测试正负样本比例,择优调整

模型

  • 一般使用stacking模型堆叠集成
  • 参见ml_models/model_enhancement/ensemble_stacking

基学习器

  • GBDT:各树、各叶子节点对应一维特征

    • 适合低维稠密通用特征,对输入特征分布没有要求
  • DNN

    • 适合普通稠密特征、embedding特征
    • 能抽取有良好分布数据的深层次特征,提高模型准确性、 泛化能力

元学习器

  • LR

    • 适合低维稀疏特征,可对所有特征离散化以引入非线性
  • FM

    • 适合低维稀疏特征
    • LR基础上自动组合二阶交叉项
  • Linear:训练模型、对训练结果线性加权

冷启动、EE

冷启动

Matching

  • 冷启动用户召回

    • 使用imbd算法计算资源得分,根据不同时间周期进行得分 融合、并ab测试,选取最优时间周期组合
    • 按照imdb得分倒排,生成热点召回数据
  • 冷启动资源召回

    • 基于资源库,统计各资源点击、播放率,按一定比例召回 第点击、播放率物品

Ranking

  • 通常使用强化学习算法
  • Thompson Sampling
  • UCB算法
  • Epsilon-Greedy算法
  • 朴素Bandit算法
  • LinUCB算法:较UCB算法加入特征信息
  • COFIBA算法:Bandit算法结合协同过滤

Exploration and Exploitation Tradeoff

Matching

  • 调整不同召回渠道的配比方式保证多样性

Recommendation System

推荐系统架构

recommendation_system_procedure

Matching

召回算法Match:包含多个渠道的召回模型,希望从资源库中选取 多样性偏好内容,缩小排序目标

  • 协同过滤
  • 主题模型
  • 内容召回
  • 热点召回

Ranking

排序:对多个召回渠道内容打分、排序、选出最优的少量结果

  • 若召回结果仍包含大量数据,可以考虑分为两个阶段
    • 粗排:进一步剔除召回结果
    • 精排:对粗排结果再次打分、排序,得到最终推荐结果

Collaborative Filtering-Based Recommendation

基于协同过滤推荐算法:推荐算法中主流

  • 模型一般为n个物品、m个用户的表

    • 只有部分用户、物品之间有评分数据
    • 要用已有部分稀疏数据预测空白物品、数据之间评分关系, 推荐高评分物品
  • 无需太多特定领域的知识,可通过基于统计的机器学习算法得到 较好推荐效果,可以分为

    • 基于用户
    • 基于物品
    • 基于模型
  • 现在指推荐算法一般指协同过滤,其他基于内容、规则、人口 统计信息等都被包含/忽略

User-based

基于用户协同过滤:主要考虑用户之间相似度,找出相似用户、相似 用户喜欢的物品,预测目标用户对对应物品的评分,推荐高评分物品

  • 特点:(相较于Item-Based)推荐更社会化

    • 反映用户所在小型兴趣群体中物品热门程度
    • 可帮助用户找到新类别、惊喜物品
  • 适合场景

    • 用户数量较少、变化慢场合,否则更新、计算用户相似度矩阵 代价大
    • 时效性强、用户个性化兴趣不明显领域
    • 无需给出推荐解释
    • 示例
      • 新闻推荐:注重热门、时效、item更新快
      • 热点视频推荐
  • 方法

    • 基于规则:大众型推荐方法,如:最多用户点击、浏览
    • 基于人口统计信息:简单根据用户基本信息发现用户相关 程度、推荐
    • 混合推荐
      • 结合多个推荐算法,集成算法推荐结果
      • 复杂度高

Item-Based Collaborative Filtering

基于项目协同过滤:考虑物品和物品之间的相似度,找到目标用户 对某些物品的评分,预测用户对相似度高的类似物品评分,推荐高 评分相似物品

  • 特点:(相较于User-Based)推荐更个性化

    • 反映用户自身的兴趣传承
    • 可帮助用户深入挖掘自身兴趣
    • 准确度一般
    • 推荐多样性弱,难以带来惊喜
  • 适合场景

    • 物品数量较少、变化慢场合,否则更新、计算物品相似度 矩阵代价大
    • 长尾物品丰富、个性化需求不明显
    • 需要向用户给出推荐理由
    • 示例
      • 电商
      • 电影:兴趣持久、更个性化

Model-Based Collaborative Filtering

基于模型:目前最主流的协同过滤类型

  • 关联算法:找出用户-物品数据里频繁出现的项集,作频繁集 挖掘,推荐频繁集、序列中其他物品

    • Apriori
    • FPTree
    • PrefixSpan
  • 聚类算法:按照用户、物品基于一定距离度量聚类,推荐高评分 同类物品、同类人群 (类似于基于用户、物品协同过滤)

    • K-means
    • BIRCH
    • DBSCAN
    • Spectral Clustering
  • 分类算法:使用分类模型划分物品

    • 逻辑回归
    • 朴素贝叶斯
  • 回归算法:使用回归模型给物品预测打分,较分类更平滑

    • 线性回归
    • 决策树
    • SVM
  • 矩阵分解:对用户-物品评分矩阵进行分解

    • FunkSVD
    • BiasSVD
    • SVD++
  • 还有基于图模型、神经网络等新模型
  • 还有依赖于自然语言处理NLP,通过挖掘文本内容特征,得到 用户的偏好,进而做推荐,同样可以找到用户独特的小众喜好