目录
1.Fpmc
2.HRM
3.Gru2rec
4.Gru2recf
5.Gru2reckg
6.Transrec
7.Narm
8.SASRec
9.SASRecf
10.Caser
11.DIN
12.DIEN
13.MANN
14.KSR
15.Stamp
16.NextItNet
17.Fdsa
18.SRGNN
19.Gcsan
20.AttRec
21.BERT4Rec
22.BST
23.M3
24.MIND
25.DSIN
26.MIMN/SIM
27.DMT
28.Comirec
29.S3rec
30.MEANTIME
31.CTA
32.FISSA
33.SSE-PT
34.TiSASRec
35.DFN
36.SINE
Factorizing Personalized Markov Chains for Next-Basket Recommendation:WWW 2010
模型结构:
核心代码:
优势:
问题:
Learning Hierarchical Representation Model for Next Basket Recommendation:SIGIR 2015
模型结构:
核心代码:
优势:
问题:
Improved Recurrent Neural Networks for Session-based Recommendations: DLRS 2016
模型结构:
核心代码:
优势:
问题:
Parallel Recurrent Neural Network Architectures for Feature-rich Session-based Recommendations: RecSys 2016
模型结构:
核心代码:
优势:
问题:
It is an extension of GRU4Rec, which concatenates item and its corresponding pre-trained knowledge graph embedding feature as the input
模型结构:
核心代码:
优势:
问题:
Translation-based Recommendation:RecSys 2017
模型结构:
核心代码:
优势:
问题:
Neural Attentive Session-based Recommendation:CIKM 2017
模型结构:
核心代码:
优势:
问题:
Self-Attentive Sequential Recommendation: ICDM 2018
模型结构:based on Transformer,分为Embedding层、Self-Attention层(多个自注意力机制+(残差连接、LayerNormalization、Dropout)+前馈网络)和预测层。FFN层使用RELU函数加入了非线性能力:
多个自注意力之间叠加,以学习更复杂的特征转换:
核心代码:
def forward(self, item_seq, item_seq_len):
position_ids = torch.arange(item_seq.size(1), dtype=torch.long, device=item_seq.device)
position_ids = position_ids.unsqueeze(0).expand_as(item_seq)
position_embedding = self.position_embedding(position_ids)
item_emb = self.item_embedding(item_seq)
input_emb = item_emb + position_embedding
input_emb = self.LayerNorm(input_emb)
input_emb = self.dropout(input_emb)
extended_attention_mask = self.get_attention_mask(item_seq)
trm_output = self.trm_encoder(input_emb, extended_attention_mask, output_all_encoded_layers=True)
output = trm_output[-1]
output = self.gather_indexes(output, item_seq_len - 1)
return output # [B H]
优势:最早基于self-attention机制来做序列化推荐的模型,利用多头自注意力机制对用户历史行为建模;
问题:网络层数越深,模型容易过拟合、训练过程不稳定。故加入了残差连接、Layer Normalization 和Dropout来抑制模型过拟合。
This is an extension of SASRec, which concatenates item representations and item attribute representations as the input to the model
模型结构:
核心代码:
优势:
问题:
Personalized Top-N Sequential Recommendation via Convolutional Sequence Embedding:WSDM 2018
模型结构:
核心代码:
优势:
问题:
Deep Interest Network for Click-Through Rate Prediction:SIGKDD:2018
模型结构:引入了基于Attention机制的local activation unit模块;
核心代码:
def forward(user, item_seq, item_seq.len):
user_emb = self.attention(target_item_feat_emb, item_feat_list, item_seq_len)
user_emb = user_emb.squeeze()
# input the DNN to get the prediction score
din_in = torch.cat([user_emb, target_item_feat_emb,
user_emb * target_item_feat_emb], dim=-1)
din_out = self.dnn_mlp_layers(din_in)
preds = self.dnn_predict_layers(din_out)
preds = self.sigmoid(preds)
优势:自适应地学习了用户兴趣地特征表达。
问题:在捕获序列行为间的依赖关系上很弱,基本不能捕获到兴趣的动态进化性,另外通过用户的显式的行为来表达用户隐含的兴趣,这一准确性无法得到保证。
Deep Interest Evolution Network for Click-Through Rate Prediction:2018
模型结构: 由兴趣从兴趣抽取层(基于行为序列,采用GRU抽取兴趣序列,并通过计算一个辅助loss,来提升兴趣表达的准确性)和兴趣进化层组成(建模与target item相关的最终的兴趣演化过程);
核心代码:
优势:可以很好地捕获用户兴趣,并建模兴趣演化过程;
问题:单向机构限制了在用户行为序列中隐表示的能力;通常一个严格从左盗用的严格排序的单向序列,并不总是实际可行的;
Sequential Recommendation with User Memory Networks:WSDM 2018
模型结构:
核心代码:
优势:
问题:
Improving Sequential Recommendation with Knowledge-Enhanced Memory Networks:SIGIR 2018
模型结构:
核心代码:
优势:
问题:
STAMP: Short-Term Attention/Memory Priority Model for Session-based Recommendation.: KDD 2018
模型结构:
核心代码:
优势:
问题:
A Simple Convolutional Generative Network for Next Item Recommendation:WSDM 2019
模型结构:
核心代码:
优势:
问题:
Feature-level Deeper Self-Attention Network for Sequential Recommendation:IJCAI 2019
模型结构:
核心代码:
优势:
问题:
Session-based Recommendation with Graph Neural Networks:AAAI 2019
模型结构:
核心代码:
优势:
问题:
Graph Contextualized Self-Attention Network for Session-based Recommendation: IJCAI 2019
模型结构:
核心代码:
优势:
问题:
Next Item Recommendation with Self-Attentive Metric Learning:AAAAl2019
模型结构:
核心代码:
优势:
问题:
Sequential Recommendation with Bidirectional Encoder Representations from Transformer:CIKM 2019
模型结构:采用Deep BiDirectional self-attention机制来建模用户行为序列。由L个stack组成的双向Transformer Layer(由一个Multi-head self-attention sub-layer和一个position-wise feed-forward network组成)、Embedding Layer(item embedding + position embedding)、Output Layer(两层的FFN + GELU activation)组成。由于是双向模型,存在信息泄露问题,所以采用Cloze tacke,对序列中部分item进行masked。由于Cloze task的目的是预测当前被masked的物品,而序列预测推荐的目的是预测未来,二者目标不匹配,在预测阶段我们将masked附加到用户行为序列的末尾,然后根据该masked的最终隐藏表示来预测下一项。
核心代码:
def forward(self, item_seq):
position_ids = torch.arange(item_seq.size(1), dtype=torch.long, device=item_seq.device)
position_ids = position_ids.unsqueeze(0).expand_as(item_seq)
position_embedding = self.position_embedding(position_ids)
item_emb = self.item_embedding(item_seq)
input_emb = item_emb + position_embedding
input_emb = self.LayerNorm(input_emb)
input_emb = self.dropout(input_emb)
extended_attention_mask = self.get_attention_mask(item_seq)
trm_output = self.trm_encoder(input_emb,
extended_attention_mask,
output_all_encoded_layers=True)
output = trm_output[-1]
return output # [B L H]
def calculate_loss(self, interaction):
item_seq = interaction[self.ITEM_SEQ]
masked_item_seq, pos_items, neg_items, masked_index = self.reconstruct_train_data(item_seq)
seq_output = self.forward(masked_item_seq)
pred_index_map = self.multi_hot_embed(masked_index, masked_item_seq.size(-1)) # [B*mask_len max_len]
# [B mask_len] -> [B mask_len max_len] multi hot
pred_index_map = pred_index_map.view(masked_index.size(0), masked_index.size(1), -1) # [B mask_len max_len]
# [B mask_len max_len] * [B max_len H] -> [B mask_len H]
# only calculate loss for masked position
seq_output = torch.bmm(pred_index_map, seq_output) # [B mask_len H]
pos_items_emb = self.item_embedding(pos_items) # [B mask_len H]
neg_items_emb = self.item_embedding(neg_items) # [B mask_len H]
pos_score = torch.sum(seq_output * pos_items_emb, dim=-1) # [B mask_len]
neg_score = torch.sum(seq_output * neg_items_emb, dim=-1) # [B mask_len]
targets = (masked_index > 0).float()
loss = - torch.sum(torch.log(1e-14 + torch.sigmoid(pos_score - neg_score)) * targets) \
/ torch.sum(targets)
优势:双向模型可以学到隐信息;
问题:仅考虑了行为之间的相关性,没有考虑用户历史行为序列的前后顺序
Behavior Sequence Transformer for E-commerce Recommendation in Alibaba:2019
模型结构:多头自注意力层 + Feed Forward全连接层(残差连接、Add&Norm数据归一化),使用LeakyReLU作为激活函数;
Towards Neural Mixture Recommender for Long Range Dependent User Sequences:arXiv 2019
模型结构:
核心代码:
优势:
问题:
Multi-Interest Network with Dynamic Routing for Recommendation at Tmall:2019
模型结构:引入multi-interest extractor layer,可以利用dynamic routing来自适应地将用户历史行为聚合成用户表示向量;通过label-aware attention layer(基于缩方点积注意力机制scaled dot-product attention),让target item选择要使用哪个interest capsule。
核心代码:
优势:用多个向量表征用户在不同方面的多个兴趣。
Deep Session Interest Network for Click-Through Rate Prediction:2019
模型结构:由session division layer(划分用户session)、interest extractor layer(用多头自注意力机制 抽取用户session interest)、interest interacting layer(用Bi-LSTM捕获session interests间地顺序关系)、interest activating layer(对与target item相关地session interest使用local activation unit)组成。
优势:可以利用在行为序列中的用户多个历史sessions;
Search-based User Interest Modeling with Lifelong Sequential Behavior Data for Click-Through Rate Prediction:2020
模型结构:
(1)MIMN模型:
借鉴神经图灵机,利用额外存储模块来解决长序列数据问题。
为提取高阶信息,采用了多通道GRU的memory induction unit。MIU中包含m个memory slot,表示m个用户interest channel,选择其中topK个interest channel,通过GRU更新t时刻的embedding,即MIU从用户原始输入行为特征和存储在NTM中的信息中提取高阶兴趣信息。
(2)SIM模型:
由Genral Search unit和Exact Search Unit两个模块构成,类似于召回和排序模块。GSU是负责从全部用户行为队列中(可能长达1000)筛选出与当前目标广告相关的候选行为,ESU在此基础上利用筛选后的信息进行有效的建模。
GSU有两种候选行为序列检索方法,即hard-search和soft-search,前者可以认为是基于规则和策略的,后者可以认为是基于Embedding内积相似度的
(3)SDM模型:
用 multi-head self-attention 模块去表达用户的多种兴趣;
用 side-information 和 dnn 网络表达用户的长期兴趣偏好;
用用户的 profile-embedding 对前述长短期兴趣进行 weighted sum pooling 得到用户最终的 embedding 表达;
核心代码:
优势:实现了对长期用户行为序列的建模;
Deep Multifaceted Transformers for Multi-objective Ranking in Large-Scale E-commerce Recommender Systems:2020
模型结构:由Deep Multifaceted Transformers(对多个目标分别建模得到用户兴趣向量)、Multi-gate Mixture-of-Experts layer(用MMoE进行多目标排序)、Bias Deep Neural Network(对选择偏差建模)
优势:实现对用户的多种行为、多种目标同时建模;
Controllable Multi-Interest Framework for Recommendation:2020
模型结构:通过Dynamic Routing Method或self-attentive method提取用户兴趣;
核心代码:
优势:可以从用户行为序列中捕捉多种兴趣,通过聚合模块可以平衡推荐的准确性和多样性;
Self-Supervised Learning for Sequential Recommendation with Mutual Information Maximization:CIKM 2020
模型结构:
核心代码:
优势:
问题:
Mixture of Atention Mechanisms with Multi-temporal Embeddings for Sequential Recommendation:arXiv 2020
模型结构:
核心代码:
优势:
问题:
A Contextualized Temporal Atention Mechanism for Sequential Recommendation:arXiv 2020
模型结构:
核心代码:
优势:
问题:
Fusing Item Similarity Models with Self-Attention Networks for Sequential Recommendation:Recsys 2020
模型结构:
核心代码:
优势:
问题:
Sequential Recommendation Via Personalized Transformer:Recsys 2020
模型结构:
核心代码:
优势:
问题:
Time Interval Aware Self-Atention for Sequential Recommendation:WSDM 2020
模型结构:
核心代码:
优势:
问题:
Deep Feedback Network for recommendation:2020
模型结构:
核心代码:
优势:
问题:
Sparse-Interest Network for Sequential Recommendation:WSDM2021
模型结构:
核心代码:
优势:
问题:
参考:
【1】深入理解推荐系统:十大序列化推荐算法梳理