1.一种基于深度学习的商品序列推荐方法,其特征在于,包括以下步骤:步骤1:获取公开的用户购买商品序列,对其进行预处理,得到商品名及商品的元数据;
步骤2:将商品名和元数据作为输入,输送至设计的序列推荐模型中,得到预训练模型,所述预训练模型分为输入层、编码层、多层感知机层和映射层;
步骤3:在预训练模型的输出层上选择合适的输出作为当前序列的表示,进一步计算得到推荐商品列表;
d
在步骤2中,在输入层阶段,有N个输入,每个输入vi∈R ,i∈[1,N],vi为商品的嵌入表d示,有其对应的位置编码pi∈R,其中pi是通过位置嵌入表获取的,在输入阶段,令作为每一个商品的初始输入,输入层的目的在于将商品名向量化,作为模型的输入数据,经过输入层处理的数据被送至编码层处理;
在步骤2中,所述编码层的输入为输入层的输出,在编码层可以获取物品的隐层表示,编码层由多层transformer组合而成,其中transformer包括多头注意力层、L1归一化层、前馈网络层以及L2归一化层;
所述多头注意力层用于考虑输入层传送过来的数据之间的权重比,确保模型能获取商品间的长期依赖,多头注意力的计算公式为:由于采用的是自注意力,所以这里Q,K,V来自同一向量,其中Q表示查询向量query,K表示键向量key,V表示value向量V,在第一层Q,K,V都等于 d表示输入向量的维度,h为多头的数量, 是为了产生更小的注意力分布,防止梯度极小化,由于是多头注意力,所以在计算的过程中独立的分成几份来计算,这里选用4个头的注意力层,即h=4,多头的计算方式如下所示:L‑1 Q L‑1 K L‑1 V
headi=Attention(H Wi,H Wi,H Wi)L O
MH(H)=[head1;head2;head3;head4]WL
其中,headi为第i个计算得到的多头注意力值,MH(H)为第L层的4个多头注意力值的拼接;
L
其中H 表示的是第L层的隐层表示输出,所以对于每个头能求得其对应的注意力,其中Q d×d/4 K d×d/4 V d×d/4Wi∈R ,Wi∈R ,Wi ∈R 为独立的权重矩阵,且每个头不共享,最后将得到的4个O头拼接起来,再乘上一个权重矩阵W即得到当前第L层的多头注意力值,多头注意力层的输出作为L1归一化层的输入;
所述归一化层的作用是将参数限定值一个区间内,能大幅提升模型的训练速度,在编码层的Transformer结构里,L1归一化层是将多层注意力层的输出做一个归一化整合,其输出为前馈网络层的输入,其表达式如下所示:L
其中AN1表示第L层L1归一化层处理后得到的结果;
所述前馈网络层的输入为L1归一化层的输出,其目的是采用GELU函数激活归一化后的多头注意力值,使得该模型具有非线性,非线性的作用是使模型能拟合任意函数,其激活表达式如下所示:f1 f2
FFN(x)=GELU(xW +bf1)W +bf2GELU(x)=xφ(x)
f1
其中,FFN(x)为前馈网络层计算得到的结果,其中是标准高斯分布的累积分布函数,Wd×4d f2 4d×d 4d d∈R ,W ∈R ,bf1∈R ,bf2∈R是学习的参数,且在每个transformer中共享参数,表示前馈网络层的输出结果,前馈网络层的输出为L2归一化层的输入;
所述L2归一化层的输入为前馈网络层的输出,其目的是将激活后的多层注意力值进行一个缩放,提升模型训练速度,其执行表达式如下所示:其中, 表示第L层L2归一化层处理后得到的结果,结合前馈网络层,整个transformer执行过程如下所示:经过编码层的处理后,得到了商品的隐层表示,编码层的输出为多层感知机层的输入;
所述多层感知机层将商品的隐层表示和商品的元数据结合起来,丰富商品的隐层表示的语义,多层感知机层的输入为编码层的输出,多层感知机采用3层结构,输入层d+c+t为个单元,隐藏层与输入层一致,输出层为d个单元,其中d表示编码层输出的向量维度,c为类别编码的向量维度,t为品牌编码的向量维度,其执行过程如下示:H(x)=f(W1·x+b1)
O(x)=f(W2·x+b2)
其中f采用tanh激活函数,H(x)表示多层感知机的隐层表示,O(x)表示多层感知机的输(d+c+t)×(d+c+t) d×(d+c+t) d+c+t d出,W1∈R ,W2∈R ,b1∈R ,b2∈R为学习参数,多层感知机的输出为映射层的输入;
所述映射层的输入为多层感知机的输出,其目的是将多层感知机输出的混合隐层表示转换为对应的概率值,其转换公式如下所示:PR PR O
其中W 是学习参数,b ,b是偏置项,训练的损失函数如下所示:其中M是输入序列,|M|为输入序列个数,P(Vmask=Vtrue)表示模型预测出当前被mask的商品为其本身的概率;
在步骤3中,对训练模型进行微调以用于序列推荐,因为是下一项预测,所以在模型末端加入Vmask,其对应的pmask可以从位置表中获取,通过编码层得到其对应的输出隐层表示hm,进而可以得到其预测概率,最后我们选取概率值前10位的商品作为推荐,如果存在新的商品加入序列,则将该商品向量加入至模型尾部,Vmask进行后移,做出下一次推荐。