TianduAI

Action speak louder than words

0%

Step by Step实现推荐系统中的Transformer

用户行为序列的处理方式有很多,从原始的pooling类,如average poolingweighted average pooling等,到Attention类,如DIN中的处理模式等,到Sequence类,如DIEN中的GRU等。Transformer一出生就大放异彩,而用户行为序列天然就适用于Transformer等这种序列模型,于是Transformer在用户行为序列中被广泛使用。本文,从0开始构建适用于推荐系统的Transformer Layer,会设计到其中的各种细节,并辅以代码详细讲解。

Transformer的经典结构图如下所示:

首先明确一点,推荐系统中的Transformer Layer只有上图左半部分,即EncoderDecoder是不参与的。 实现Transformer Layer,可以将其拆解为以下几个步骤实现:

  • Positional Embedding
  • Self Attention
  • Multi-head Attention
  • Feed-forward Network

下面我们逐一进行实现,Action!

Positional Embedding

什么是Positional Embedding?为什么需要它?简而言之,就是Self Attention的计算过程中没有考虑item在行为序列中的位次信息,所以需要增加与位置相关的Positional Embedding,以引入位次信息,其具体表现形式就是一个矩阵,其中的每个元素均与item在序列中的位次相关。想要更详细的了解Positional Embedding,可以阅读《一文教你彻底理解Transformer中Positional Encoding》。在《Attention is all you need》