CNN 模型在图像、语音和自然语言处理(NLP)领域是非常重要的特征提取器,因为它们能够有效捕捉局部连接的信息。然而,在推荐系统中,特征输入通常是稀疏且无序的,这使得直接应用 CNN 来提取特征变得困难。为此,华为诺亚方舟实验室在2019年的WWW会议上提出了一种巧妙的方法,即FGCNN模型,利用CNN来提取新特征。该模型的整体框架如图4.30所示。
该论文的核心在于应用CNN来提取新特征,具体框架如图4.31所示,可以分为四个层次:卷积层、池化层、重组层和特征输入层。下面详细介绍这四个层次的功能和结构。
① 卷积层
卷积层是通过卷积核来提取特征的。卷积核的高度(hp)代表每次卷积连接的邻域数量,而宽度(d)需要与嵌入层的维度一致。例如,高度为2的卷积核可以提取二维特征的交叉信息,如姓名与年龄、年龄与身高等。卷积层的输入是从one-hot特征经过嵌入层处理后的数据,维度为nf*k。其中,nf为特征字段的数量,k为隐藏层维度。
② 池化层
特征经过卷积层处理后,维度增加至nfkmc1。为了降低维度,该论文采用了最大池化方法。池化层的输入维度为nfkmc1,经过池化操作后,维度变为nf/hp * k *mc1,其中hp为卷积核的高度。
③ 重组层
重组层用于生成新的特征组。输入为池化层的输出,通过学习参数WR1和BR1来生成新的特征,维度为nf/hp * k *mr1。
④ 特征输入层
重组层生成的新特征与其他特征拼接在一起,形成新的特征向量R。这些新特征可以与原始特征进行交叉,输入到模型层中。
FiBiNet模型由新浪微博张俊林团队在2019年提出,结合了特征重要性和双线性特征交互。该模型包括两个独立模块,可以应用于其他网络结构。整体框架如图4.34所示。
① SENet:特征重要性提取层
SENet的主要功能是从原始特征中提取重要性信息。该层分为三个阶段:挤压(Squeeze)、提取(Extract)和重加权(Reweight)。挤压阶段通过最大池化或平均池化提取特征的统计信息,提取阶段通过自动编码器思想处理信息,重加权阶段通过权重向量对原始特征进行加权处理。
② 双线性特征交互层
从SENet中提取的新特征与原始特征结合后,可以通过双线性交叉方法进行特征交互。双线性交叉方法可以根据特征交互的不同方式分为三种类型:字段类型、字段每个类型和字段交互类型。这些方法可以根据具体的数据集和应用场景选择最适合的方式。
AutoInt模型使用了注意力机制和多头自注意力机制,整体框架如图4.37所示。该模型的核心在于注意力机制,通过查询(query)、键(key)和值(value)来提取特征之间的交互信息。AutoInt模型通过多头机制提高了特征交互的效果,并且保留了原始特征的信息。
① 注意力机制
注意力机制的核心在于计算特征之间的相似度,通过点积和归一化操作实现。最终生成的新特征向量包含了多个头的特征信息,形成了多头注意力机制。
DIN模型通过局部激活的思想解决了特征池化方法的不足。该模型主要关注用户的历史行为对当前商品的兴趣权重。通过引入注意力机制,DIN模型能够动态地调整用户历史行为对当前商品的兴趣权重,从而提高了推荐系统的性能。
① 注意力单元
DIN模型通过计算用户历史行为与当前商品之间的相似度,生成注意力权重,从而调整用户历史行为对当前商品的兴趣权重。
DIEN模型在DIN的基础上进一步引入了时间序列的概念,通过两层GRU网络捕捉用户行为随时间的变化。该模型通过辅助损失函数增强了特征的表示能力,提高了推荐系统的精度。
① 兴趣抽取层
该层使用GRU模型提取用户历史行为中的兴趣信息。通过引入辅助损失函数,该层能够更好地捕捉用户兴趣的变化。
② 兴趣演化层
该层通过注意力机制学习用户历史行为与当前商品之间的权重关系,从而更准确地反映用户兴趣的变化。
特征模型主要关注特征之间的交互,是近年来推荐系统研究的重点方向。按照不同的维度,这些模型可以分为四大类:基于框架的模型、基于FM特征二阶组合的模型、基于注意力的模型和基于高阶特征组合的模型。
推荐系统和搜索引擎的本质都是匹配,前者匹配用户和物品,后者匹配查询和文档。推荐系统模型大致分为传统模型和深度模型两类。传统模型主要包括基于协同过滤的模型和基于特征的模型。深度模型则主要分为基于表示学习的模型和基于匹配函数学习的模型。这些模型各有特点,能够根据不同的应用场景和数据集选择最适合的模型。