Page 194 - 《软件学报》2021年第12期
P. 194

3858                                Journal of Software  软件学报 Vol.32, No.12, December 2021

         解了数据差异带来的影响,提升模型的推荐性能.然而,联邦蒸馏虽然可以缓解 Non-IID 的影响,但若设备之间数
         据差异较大或数据量较少,仍然需要其他优化手段来提高模型的精度.在下面的章节中,本文方法利用特征注意
         力编码得到特征间更多的交互信息来丰富本地特征.

         2.4   特征Attention编码
             在推荐场景中,用户兴趣和产品的种类具有多样性,一个用户可能对多个种类产品感兴趣,一个种类可能有
         多个产品,但最终影响模型结果可能只有其中一部分.以付费服务推荐场景为例:当一个用户同时购买了两个付
         费产品,很难区分他对哪个产品更感兴趣;但如果其中一个产品连续购买多次,另一个产品只购买过一次,那么
         说明连续购买年数这一特征,对模型的分类具有更高的权重影响.同时,对于不同的用户,可能是因为不同的特
         征而决定最后是否会购买.这类场景下,对用户交互过的商品和候选商品做特征 Attention 编码尤为重要,可以有
         效地捕捉用户对不同商品及不同特征之间的差异性.由于不同的用户关注的兴趣点不同,用户兴趣呈现多样性
         变化,主流的深度神经网络(DNN)模型对用户的历史行为是同等对待,且忽略了时间因素对推荐结果的影响                                    [30] ,
         离当前越近的特征越能反映用户的兴趣.然而,现有的基于联邦学习的推荐方法未考虑特征之间的交互关系.为
         了充分利用历史特征及特征交互信息,本文通过加入一个改进的 Attention 机制,在特征向量进入模型训练之前
         通过 Attention 机制计算用户行为权重,得出每个用户不同的兴趣表征.目前,基于 Attention 机制的方法                     [31,32] 通常
         在输出层前加入 Attention 层,以捕捉用户和 Item 的二阶交叉信息.与这些方法不同,我们并未在模型输出层前加
         入 Attention 层,而是在模型输入前使用.这样做有如下目的:1)  保证框架灵活性,避免侵入现有本地模型的结构;
         2)  尽可能丰富输入特征的信息,提高模型精度.
             对于每一个用户,有一个等长于特征总数 r 的 Attention 编码,其中,Attention 编码的每一个维度表示该特征
         的权重(即重要程度).由于用户线上的交互特征通常非常稀疏,当一个用户的特征值只有一个非零特征时,这个
         特征会得到很高的 Attention 得分;而当一个用户有多个非零特征时,受限于 Softmax 计算的 Logits 值,各个特征
         的 Attention 得分反而不高,重点信息难以全部保留.本文使用的 Attention 方法主要包含两点改进:1)  由于不同
         设备中数据特征维度空间不同,提出一种映射方法将不同设备数据映射到相同维度,进而允许其进行 Attention
         操作;2)  增加 Attention 编码的维度,增强特征交互的表征能力.
             (1) Attention 编码映射
             由于每台设备的数据特征空间不相同,首先需要将所有特征统一映射到一个 dim 维的 Embedding 矩阵.具
         体地,通过创建特征 embedding 向量[feature_count,dim],将单阶或多阶特征映射到[b,r,dim].其中,feature_count
         为所有特征的类别总数,b 为一个 minibatch 的数据量(如 16,32),每批次训练数据维度为[b,max_feature],
         max_feature 为所有特征的维度总和,r 为特征总数量.映射过程中,若特征为单阶,如连续数值型特征,则特征
         Embedding 为该数字在 Embedding 向量中对应的特征;若特征为多阶,如 One-Hot 特征,则使用多阶特征所有特
         征值在 Embedding 向量中对应特征的和作为该多阶特征的 Embedding.具体搜索矩阵对第 i 个特征的 Attention
         权重计算方式如下:
                                                (, ) QS=
                                              PQ S i    i T                                   (7)
                                             T
         其中,Q 为搜索矩阵,S i 为特征 i 的查询键值,(⋅) 为矩阵转置.映射后的 Q 维度为[b,1,dim],S i 维度为[b,r,dim],V i 维
         度为映射到[b,r,dim].P(⋅)为查询项与搜索矩阵的相似度,同时也为搜索矩阵 Q 对特征的权重系数,维度为[b,1,r].
         最后,再通过 Softmax 操作归一化到[0,1].具体如下:
                                                           (, )S
                                      a =  softmax (( , ))P Q S  =  PQ  i                     (8)
                                       i            i     r
                                                        ∑ i= 1 PQ  i
                                                             (, )S
             (2)  增加 Attention 的维度
             传统的 self-attention 是在序列内部做 attention 操作,每次使用一个用户的特征去查询其和所有其他特征的
         匹配程度,共进行 r 轮相同操作得到 attention 值.对于每个用户,只有一个等长于 r 的 Attention 矩阵,Attention 矩
         阵的大小为[b,r].但推荐场景的数据集通常很稀疏,当一个用户只有一个非零特征时,这个特征会得到很高的分
   189   190   191   192   193   194   195   196   197   198   199