36种序列召回模型综述

目录

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


1.Fpmc

Factorizing Personalized Markov Chains for Next-Basket Recommendation:WWW 2010

模型结构

核心代码

优势

问题

2.HRM

Learning Hierarchical Representation Model for Next Basket Recommendation:SIGIR 2015

模型结构

核心代码

优势

问题

3.Gru2rec

Improved Recurrent Neural Networks for Session-based Recommendations: DLRS 2016

模型结构

核心代码

优势

问题

4.Gru2recf

Parallel Recurrent Neural Network Architectures for Feature-rich Session-based Recommendations: RecSys 2016

模型结构

核心代码

优势

问题

5.Gru2reckg

It is an extension of GRU4Rec, which concatenates item and its corresponding pre-trained knowledge graph embedding feature as the input

模型结构

核心代码

优势

问题

6.Transrec

Translation-based Recommendation:RecSys 2017

模型结构

核心代码

优势

问题

7.Narm

Neural Attentive Session-based Recommendation:CIKM 2017

模型结构

核心代码

优势

问题

8.SASRec

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来抑制模型过拟合。

9.SASRecf

This is an extension of SASRec, which concatenates item representations and item attribute representations as the input to the model

模型结构

核心代码

优势

问题

10.Caser

Personalized Top-N Sequential Recommendation via Convolutional Sequence Embedding:WSDM 2018

模型结构

核心代码

优势

问题

11.DIN

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)

优势:自适应地学习了用户兴趣地特征表达。

问题:在捕获序列行为间的依赖关系上很弱,基本不能捕获到兴趣的动态进化性,另外通过用户的显式的行为来表达用户隐含的兴趣,这一准确性无法得到保证。

12.DIEN

Deep Interest Evolution Network for Click-Through Rate Prediction:2018

模型结构: 由兴趣从兴趣抽取层(基于行为序列,采用GRU抽取兴趣序列,并通过计算一个辅助loss,来提升兴趣表达的准确性)和兴趣进化层组成(建模与target item相关的最终的兴趣演化过程)

核心代码:

优势:可以很好地捕获用户兴趣,并建模兴趣演化过程;

问题:单向机构限制了在用户行为序列中隐表示的能力;通常一个严格从左盗用的严格排序的单向序列,并不总是实际可行的;

13.MANN

Sequential Recommendation with User Memory Networks:WSDM 2018

模型结构

核心代码

优势

问题

14.KSR

Improving Sequential Recommendation with Knowledge-Enhanced Memory Networks:SIGIR 2018

模型结构

核心代码

优势

问题

15.Stamp

STAMP: Short-Term Attention/Memory Priority Model for Session-based Recommendation.: KDD 2018

模型结构

核心代码

优势

问题

16.NextItNet

A Simple Convolutional Generative Network for Next Item Recommendation:WSDM 2019

模型结构

核心代码

优势

问题

17.Fdsa

Feature-level Deeper Self-Attention Network for Sequential Recommendation:IJCAI 2019

模型结构

核心代码

优势

问题

18.SRGNN

Session-based Recommendation with Graph Neural Networks:AAAI 2019

模型结构

核心代码

优势

问题

19.Gcsan

Graph Contextualized Self-Attention Network for Session-based Recommendation: IJCAI 2019

模型结构

核心代码

优势

问题

20.AttRec

Next Item Recommendation with Self-Attentive Metric Learning:AAAAl2019

模型结构

核心代码

优势

问题

21.BERT4Rec

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)

优势:双向模型可以学到隐信息;

问题:仅考虑了行为之间的相关性,没有考虑用户历史行为序列的前后顺序

22.BST

Behavior Sequence Transformer for E-commerce Recommendation in Alibaba:2019

模型结构:多头自注意力层 + Feed Forward全连接层(残差连接、Add&Norm数据归一化),使用LeakyReLU作为激活函数;

23.M3

Towards Neural Mixture Recommender for Long Range Dependent User Sequences:arXiv 2019

模型结构

核心代码

优势

问题

24.MIND

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。

核心代码:

优势:用多个向量表征用户在不同方面的多个兴趣。

25.DSIN

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;

26.MIMN/SIM/SDM

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 表达;

核心代码

优势:实现了对长期用户行为序列的建模;

27.DMT

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(对选择偏差建模)

优势:实现对用户的多种行为、多种目标同时建模;

28.Comirec

Controllable Multi-Interest Framework for Recommendation:2020

模型结构:通过Dynamic Routing Method或self-attentive method提取用户兴趣;

核心代码

优势:可以从用户行为序列中捕捉多种兴趣,通过聚合模块可以平衡推荐的准确性和多样性;

29.S3rec

Self-Supervised Learning for Sequential Recommendation with Mutual Information Maximization:CIKM 2020

模型结构

核心代码

优势

问题

30.MEANTIME

Mixture of Atention Mechanisms with Multi-temporal Embeddings for Sequential Recommendation:arXiv 2020

模型结构

核心代码

优势

问题

31.CTA

A Contextualized Temporal Atention Mechanism for Sequential Recommendation:arXiv 2020

模型结构

核心代码

优势

问题

32.FISSA

Fusing Item Similarity Models with Self-Attention Networks for Sequential Recommendation:Recsys 2020

模型结构

核心代码

优势

问题

33.SSE-PT

Sequential Recommendation Via Personalized Transformer:Recsys 2020

模型结构

核心代码

优势

问题

34.TiSASRec

Time Interval Aware Self-Atention for Sequential Recommendation:WSDM 2020

模型结构

核心代码

优势

问题

35.DFN

Deep Feedback Network for recommendation:2020

模型结构

核心代码

优势

问题

36.SINE

Sparse-Interest Network for Sequential Recommendation:WSDM2021

模型结构

核心代码

优势

问题

参考:

【1】深入理解推荐系统:十大序列化推荐算法梳理

你可能感兴趣的:(机器学习)