4. 精排
Last updated
Last updated
记忆与扩展
Embedding
高维稀疏的类别特征
交叉结构
用户行为序列建模
技术要求:online learning、特征稀疏
FTRL:为了减少单个样本的随机扰动,最优参数,是让之前所有步骤的损失之和最小
引入代理损失函数:
每个特征独立设置步长:
Embedding + 自动二阶交叉:
参数 → ,数据利用率高、训练充分
提升了模型的扩展性
Deep(DNN):Embedding + MLP,高阶隐式交叉(扩展性、多样性)
Wide(LR):强于记忆,防止 Deep 过分扩展影响精度,类似正则(查缺补漏)
Wide - FTRL,Deep - Adagrad / Adam / ...
自动特征交叉,Wide 侧增加 FM
DCN (Deep & Cross Network) :隐式交叉结构
DCN V2:原始输入长度大,只做信息交叉(而不是压缩和提炼)
DCN 与 DNN 融合
串联:DCN → DNN
并联:DCN + DNN
将一系列 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],时间开销不小
实践:不独立预测,而只是作为一个模块,嵌入更大的模型(只选择部分重要特征)
行为序列信息的构成
每个视频 id 的 embedding
时间差信息:距离现在时间差,分桶为整数,方便模型刻画时间衰减
视频元信息(作者、来源、分类、标签等),动作程度(观看时长、观看完成度)
简单 pooling:sum / average / weighted-sum
候选物料 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用户短期)
优点:不会增加线上耗时,实现简单
缺点:长期兴趣,不会随着候选无聊而变化
共同训练:
DeepFM:
Deep:
FM:,与 Deep 共享 / 独立
LR:,强于记忆,防止过分扩展的正则化
DCN V1:对于 L 层,相当于所有元素 阶的交叉
每个 cross layer,
参数容量有限, 替换为 矩阵 ,
原始输入 长度很大,还提出将大矩阵 分解成两个 的矩阵相乘
Transformer:,采用 multi-head 机制增强表达能力
Deep Interest Network (DIN):