在电商推荐场景中,我们常遇到这样的困境:用户昨天刚浏览了登山鞋,今天首页却还在推送同款商品。传统Embedding&MLP架构将用户历史行为简单池化(Pooling),导致短期兴趣信号被淹没。阿里2018年提出的DIN(Deep Interest Network)首次引入注意力机制实现用户兴趣的动态表征,成为CTR预估领域里程碑式的工作。
我曾在跨境电商平台实践过DIN模型,相比基准模型其AUC提升达2.3%。核心突破在于设计局部激活单元(Local Activation Unit),通过计算候选商品与历史行为的相关性权重,实现类似"购物车商品与浏览记录智能关联"的效果。举个例子:当用户点击某款相机时,模型会自动强化其近期浏览的镜头配件行为权重,而非均匀考虑所有历史记录。
DIN的特征分为三组:
关键创新在于行为序列的处理。假设用户有100次历史行为,传统做法是将所有行为Embedding取平均。而DIN则保留完整的序列结构,为后续注意力计算提供基础。在实际工程中,我们使用RoaringBitmap压缩存储稀疏ID特征,使内存占用减少60%。
注意力权重的计算公式为:
code复制a_{ij} = \frac{exp(v_j^T W_a e_i)}{\sum_{k=1}^N exp(v_k^T W_a e_i)}
其中:
这个设计有三大精妙之处:
在构造行为序列时需注意:
模型部署时容易忽略:
我们实现的TensorRT优化版本,QPS达到1200的同时保持AUC无损。关键是将注意力计算分解为:
python复制# 伪代码示例
query = candidate_embedding @ W_query
keys = behavior_embeddings @ W_key
scores = query * keys / sqrt(dim)
weights = softmax(scores)
| 现象 | 根因 | 解决方案 |
|---|---|---|
| 新用户推荐不准 | 行为序列为空 | 引入跨用户聚类特征 |
| 权重集中某个行为 | 过拟合 | 添加Dropout=0.2 |
| 长尾商品CTR偏低 | 嵌入学习不充分 | 采用自适应margin loss |
基于百次实验得出的经验值:
在跨境电商场景中,将batch_size从512调整为1024后,模型收敛速度提升40%,这是因为:
原始DIN的改进空间包括:
我们尝试在召回阶段使用DIN的注意力权重作为重排信号,使转化率提升1.8%。具体做法是将top-K注意力行为商品直接注入召回池,突破传统两阶段推荐的信息隔阂。
在实际业务中,DIN更适合满足以下场景:
这种设计思想后来也影响了DIEN、DSIN等后续模型,形成了阿里推荐技术体系的重要分支。理解DIN不仅掌握了一个模型,更是获得了处理用户动态兴趣的方法论。