4. 精排
4.1 推荐算法的五个维度
记忆与扩展
Embedding
高维稀疏的类别特征
交叉结构
用户行为序列建模
4.2 交叉结构
FTRL:传统时代的记忆大师
技术要求:online learning、特征稀疏
FTRL:为了减少单个样本的随机扰动,最优参数,是让之前所有步骤的损失之和最小
引入代理损失函数:wt+1=argminw[g1:t⋅w+21(∑s=1tσs∥w−ws∥22)+λ1∥w∥1+21λ2∥w∥22]
每个特征独立设置步长:ηt,i=β+∑s=1tgs,i2α
FM:半脚迈入 DNN 的门槛
Embedding + 自动二阶交叉:logitFM=b+∑i=1nwixi+∑i=1n∑j=i+1n(vi⋅vj)xixj
参数 n2 → nk,数据利用率高、训练充分
提升了模型的扩展性
Wide & Deep:兼顾记忆与扩展
Deep(DNN):Embedding + MLP,高阶隐式交叉(扩展性、多样性)
Wide(LR):强于记忆,防止 Deep 过分扩展影响精度,类似正则(查缺补漏)
共同训练:CTRpredict=sigmoid(logitwide+logitdeep)
Wide - FTRL,Deep - Adagrad / Adam / ...
DeepFM:融合二阶交叉
自动特征交叉,Wide 侧增加 FM
DeepFM:CTRpredict=sigmoid(logitlr+logitfm+logitdnn)
Deep:logitdnn=DNN(Concat(Embedding(xdnn)))
FM:logitfm=FM(x,Embedding(xdnn)),与 Deep 共享 / 独立
LR:logitlr=wlr⋅xlr,强于记忆,防止过分扩展的正则化
DCN:不再迷信 DNN
DCN (Deep & Cross Network) :隐式交叉结构
DCN V1:对于 L 层,相当于所有元素 ≤L+1 阶的交叉
每个 cross layer,xl+1=x0xlTwl+bl+xl
DCN V2:原始输入长度大,只做信息交叉(而不是压缩和提炼)
参数容量有限,wl 替换为 d×d 矩阵 Wl,xl+1=x0⊙(Wlxl+bl)+xl
原始输入 x0 长度很大,还提出将大矩阵 Wl 分解成两个 d×l 的矩阵相乘
DCN 与 DNN 融合
串联:DCN → DNN
并联:DCN + DNN
AutoInt:借用 Transformer 特征交叉
Transformer:Attention(Q,K,V)=softmax(dkQKT)V,采用 multi-head 机制增强表达能力
将一系列 Value 压缩成一个 Embedding,压缩方式根据 Query
对 Value 序列加权求和,权重就是 Query 和 Key 的相关程度
AutoInt
步骤
准备各 field 的 embedding
组成 [B,M,d] 的矩阵 X,套用 transformer
多层 transformer 的结果仍然是 [B,M,d] 矩阵,拼接喂给浅层 DNN
缺点
为了使用 self-attention,要求 field embedding 长度相等
对信息只交叉不压缩,每层输出都是 [B,M,d],时间开销不小
实践:不独立预测,而只是作为一个模块,嵌入更大的模型(只选择部分重要特征)
4.3 用户行为序列建模
行为序列信息的构成
每个视频 id 的 embedding
时间差信息:距离现在时间差,分桶为整数,方便模型刻画时间衰减
视频元信息(作者、来源、分类、标签等),动作程度(观看时长、观看完成度)
简单 pooling:sum / average / weighted-sum
DIN:千物千面
Deep Interest Network (DIN):UEu,t=∑j=1Hwjhj=∑j=1HA(hj,t)hj
候选物料 t 作为 query,对用户历史序列做 attention(相似度权重)
召回、粗排场景,user / item 解耦,可以用行为序列最后的 item 作为 query
建模序列内的依赖关系
双层 attention
self-attention:与前后历史行为交叉、关联
target-attention:套用 DIN,建模相关性,得到用户兴趣向量
建模长序列
在线提取用户兴趣:Search-based Intereset Model (SIM)
DIN 软过滤 ~O(L),SIM 改用硬过滤,得到相关短序列 SBS
Hard Search:搜索相同属性的序列,数据库缓存(userId - category - SBS)
Soft Search:根据 item embedding 查找 ANN,组成 SBS
Embedding:用候选 item 和长期行为序列,构建小模型预测 CTR,得到 embedding
缺点:实现复杂,耗时增加,工程难度大(维护缓存)
离线预训练用户兴趣
人工统计长期兴趣,e.g. 某个标签过去 1 周/月的 CTR
离线预训练辅助模型,提取用户长期兴趣
预训练模型:输入长期行为序列,输出 embedding 代表用户长期兴趣
行为序列较长的用户,都过一遍模型,将 embedding 存入 KV 数据库
天级更新即可,短期兴趣留给 DIN、双层 attention 等模型学习
预训练模型:双塔结构,cos(A用户长期, A用户短期) 越小越好,cos(A用户长期, B用户短期)
优点:不会增加线上耗时,实现简单
缺点:长期兴趣,不会随着候选无聊而变化
Last updated