«上一篇 下一篇»
  计算机工程  2021, Vol. 47 Issue (8): 69-77  DOI: 10.19678/j.issn.1000-3428.0058466
0

引用本文  

李昆仑, 于志波, 翟利娜, 等. 基于注意力机制与改进TF-IDF的推荐算法[J]. 计算机工程, 2021, 47(8), 69-77. DOI: 10.19678/j.issn.1000-3428.0058466.
LI Kunlun, YU Zhibo, ZHAI Lina, et al. Recommendation Algorithm Based on Attention Mechanism and Improved TF-IDF[J]. Computer Engineering, 2021, 47(8), 69-77. DOI: 10.19678/j.issn.1000-3428.0058466.

基金项目

国家自然科学基金(61672205)

作者简介

李昆仑(1962-), 男, 教授、博士, 主研方向为模式识别、智能信息处理;
于志波, 硕士研究生;
翟利娜, 硕士研究生;
赵佳耀, 硕士研究生

文章历史

收稿日期:2020-05-28
修回日期:2020-07-16
基于注意力机制与改进TF-IDF的推荐算法
李昆仑 , 于志波 , 翟利娜 , 赵佳耀     
河北大学 电子信息工程学院, 河北 保定 071000
摘要:针对传统推荐系统主要依赖用户对物品的评分数据而无法学习到用户和项目的深层次特征的问题,提出基于注意力机制与改进TF-IDF的推荐算法(AMITI)。通过将双层注意力机制引入并行的神经网络推荐模型,提高模型对重要特征的挖掘能力。基于用户评分及项目类别改进TF-IDF,依据项目类别权重将推荐结果分类以构建不同类型的项目组并完成推荐。实验结果表明,AMITI算法能提高对文本中重要内容的关注度以及项目分配的注意力权重,有效提升推荐精度并在实现项目组推荐后改善推荐效果。
关键词多层感知机    注意力机制    卷积神经网络    推荐算法    深度学习    
Recommendation Algorithm Based on Attention Mechanism and Improved TF-IDF
LI Kunlun , YU Zhibo , ZHAI Lina , ZHAO Jiayao     
College of Electronic and Information Engineering, Hebei University, Baoding, Hebei 071000, China
Abstract: Traditional recommendation systems rely heavily on item rating data of users, and fail to learn the deep-seated features of users and items. To address the problem, a recommendation algorithm based on attention mechanism and improved TF-IDF(AMITI) is proposed. A two-level attention mechanism is introduced into the parallel neural network recommendation model to raise its ability of mining key features. Then TF-IDF is improved based on rating data and item category. The recommendation results are classified according to the weight of each item category to build different types of item groups, completing the recommendation process. Experimental results show that the proposed algorithm improves the attention acquired by the important parts in a text, and can allocate different weights to different items. It significantly improves the recommendation accuracy and thus performance by implementing item group recommendation.
Key words: Multilayer Perceptron(MLP)    attention mechanism    Convolution Neural Network(CNN)    recommendation algorithm    Deep Learning(DL)    

开放科学(资源服务)标志码(OSID):

0 概述

随着互联网技术的发展,数据超载成为当今数据爆炸时代面临的困境之一。为解决数据超载难题,推荐系统应运而生。推荐系统旨在从庞大的数据中筛选出用户感兴趣的内容并推荐给用户,使在线用户快速找到符合他们需要的个性化信息[1]。经过多年发展,推荐系统的推荐性能得到了极大的提升。目前推荐算法主要分为基于协同过滤的推荐算法[2]、基于内容的推荐算法[3]和混合推荐算法[4]。基于协同过滤的推荐算法通过获取用户的历史行为和评分数据找到相似用户,通过获取相似用户的喜好并向用户推荐其未曾浏览过的项目。基于内容的推荐算法主要依据用户已经选择的项目或者评分,根据用户的历史行为信息去寻找与之相似的项目进行推荐。混合推荐算法将不同的推荐算法进行融合后再推荐,获得更好的推荐效果。随着数据不断增长,数据类型也越来越多样化。传统推荐算法无法学习到用户或项目的深层次特征。如何充分利用多源异构数据提高推荐系统性能,成为推荐系统研究的热点[5]

近年来,深度学习(Deep Learning,DL)具有自身强大的学习能力,在图像识别、语音识别、自然语言处理等领域得到广泛的应用[6]。深度学习善于挖掘和学习多源异构数据中深层次的特征,通过将其与推荐系统结合获得更高效的学习用户和项目属性的隐藏特征[7]。因此,越来越多的研究者将深度学习应用到推荐系统中。尽管将神经网络应用到推荐系统中能有效提高推荐性能,但不是所有的特征交互作用都能对预测结果做出贡献。例如,在学习用户或项目特征时,与无用的特征相互作用可能会引入噪声从而影响推荐系统性能[8]

本文提出一种基于注意力机制与改进TF-IDF的推荐算法AMITI。将注意力机制引入卷积神经网络(Convolutional Neural Network,CNN)中,在卷积层前加入注意力网络,对经过预处理的项目文本信息进行重新赋权。将多层全连接神经网络学习到的用户特征向量和项目特征向量输入到第2层注意力机制中,使多层感知机(Multilayer Perceptron,MPL)对注意力分数进行参数化。在完成推荐任务后,通过将用户评分和项目类别与TF-IDF结合,分析不同项目类型在推荐结果中的权重,获取用户对不同项目类型的偏好程度,并对推荐结果进行分类。

1 相关工作 1.1 注意力机制

注意力机制(Attention Mechanism)最初被用在图像处理领域。在对图像进行处理时注意力机制使神经网络更关注输入数据的重点内容[9]

MNIH等[10]将注意力机制与循环神经网络(Recurrent Neural Network,RNN)结合用于图像分类,减少了非必要信息的干扰,提高分类的准确性。注意力机制被广泛应用于机器翻译、特定目标情感分析、语音识别等领域。将注意力机制引入到神经网络中,在处理句子分类问题时使网络识别句子中的重要信息,并对这些信息给予更高的关注度,同时提高神经网络的可解释性。夏斌等[11]将注意力机制引入到RNN,提出ARNN结构进行位置推荐,利用目标用户的历史签到数据捕获用户的生活模式,并向用户进行可解释性的位置推荐;CHEN等[12]提出的AFM模型不仅通过用户的关注内容整合项目特征,还增强了模型的可解释性。

1.2 基于深度神经网络的推荐算法

随着研究的深入,越来越多的深度神经网络模型被引入到推荐系统中[13]。基于深度学习的推荐方法能够融入多源异构数据并生成推荐,这些数据分为用户的显式反馈数据如评分、喜欢/不喜欢;隐式反馈数据如浏览、点击等行为记录;用户属性信息如性别、年龄、职业等;项目属性信息如项目名称、简介等;社交关系、标签、评论等辅助信息[14]。通过构建多层神经网络来输入项目或用户的相关信息,采用回归等方法对输入数据进行评分预测,解决了传统推荐算法中数据稀疏性和冷启动等难题[15]。文献[16]提出一种基于神经协同过滤的推荐模型(Neural Collaborative Filtering,NCF)。该模型通过一个并行的神经网络分别学习用户与项目潜在特征向量,在预测层通过MLP将隐向量映射为预测值。NCF推荐模型如图 1所示,由两个并行的神经网络组成,用户和项目的评分数据经过嵌入层。嵌入层首先输入数据分配索引,用索引构建用户和项目的特征序列;再将该索引转换为具有固定大小的向量。通过嵌入层可将输入层中高维稀疏的向量映射为低维稠密的向量表示。

Download:
图 1 NCF模型架构 Fig. 1 NCF model architecture

用户和项目数据都是通过one-hot编码得到稀疏向量,经过嵌入层得到用户嵌入向量pu和项目嵌入向量qv作为多个全连接层的输入。利用MLP学习用户和项目的交互函数:

$ {\hat y_{{\rm{uv}}}} = {f_{{\rm{MPL}}}}({\mathit{\boldsymbol{p}}_u},{\mathit{\boldsymbol{q}}_v}) $ (1)

其中:fMPL(·)为MLP网络中的激活函数。利用非线性激活函数增强模型的非线性和灵活性,定义MLP模型如式(2)~式(4)所示:

$ {y_1} = M(u,v) = {\mathit{\boldsymbol{p}}_u} \odot {\mathit{\boldsymbol{q}}_v} $ (2)
$ {y_2} = {f_2}\left( {{\mathit{\boldsymbol{w}}_2}\left( {{\mathit{\boldsymbol{p}}_u} \odot {\mathit{\boldsymbol{q}}_v}} \right) + {\mathit{\boldsymbol{b}}_2}} \right) $ (3)

$ {y_n} = {f_n}\left( {{\mathit{\boldsymbol{w}}_n}{t_{n - 1}} + {\mathit{\boldsymbol{b}}_n}} \right) $ (4)

其中:⊙表示元素积操作;ynfnwnbn分别表示第n层的输出值、激活函数、权值矩阵和第n层的偏置向量。

NCF模型利用MLP提取高阶特征信息以提高模型的推荐能力。在特征交互过程中并非所有的特征交互作用都能对预测结果做出贡献,忽视了历史交互序列中项目对当前预测所起的不同作用。因此,将注意力机制引入神经网络中为历史交互序列的项目分配个性化权重,并将改进TF-IDF对推荐结果分组,向目标用户进行项目组推荐。

2 AMITI推荐算法

在NCF推荐模型的基础上将用户和项目的属性信息作为输入数据u: {u1, u2, …, un},例如,用户ID、年龄、性别等;项目属性信息v: {v1, v2, …, vn},例如,项目ID、类型、标题等。AMITI模型架构如图 2所示。

Download:
图 2 AMITI模型架构 Fig. 2 AMITI model architecture

引入双层注意力机制,一层用于与CNN结合构建子网络,使CNN学习项目文本中的重点内容;另一层以用户及项目特征向量作为输入数据,利用注意力机制为用户历史交互项目分配个性化权重,得到不同项目对当前预测偏好所起的作用。将推荐结果分组,以项目组的形式向用户展示推荐结果,增强推荐内容的有序性。

2.1 学习用户和项目潜在特征

为改善推荐系统中数据稀疏的问题,利用用户和项目的属性信息进行评分预测。将用户及项目属性信息经过数据预处理后输入到嵌入层对属性信息进行编码,嵌入层将输入的稀疏向量映射为稠密的低维嵌入向量,得到用户和项目属性的嵌入表示puqv。在训练刚开始的时候,嵌入是简单的随机选择,随着训练的进行,每个嵌入的向量都会得到更新,以帮助神经网络执行其任务。

将用户和项目的嵌入向量puqv输入到并行的多层全连接神经网络中,分别学习用户和项目非文本属性的潜在特征向量。

$ {\mathit{\boldsymbol{\hat p}}_u} = f\left( {{\mathit{\boldsymbol{w}}_{u2}}f\left( {{\mathit{\boldsymbol{w}}_{u1}}{\mathit{\boldsymbol{p}}_u} + {\mathit{\boldsymbol{b}}_{u1}}} \right) + {\mathit{\boldsymbol{b}}_{u2}}} \right) $ (5)
$ {\mathit{\boldsymbol{\hat q}}_v} = f\left( {{\mathit{\boldsymbol{w}}_{v1}}{\mathit{\boldsymbol{p}}_v} + {\mathit{\boldsymbol{b}}_{v1}}} \right) $ (6)

其中:f(·)为tanh激活函数;wnbn分别为需要学习的权值矩阵和偏置。

2.2 引入注意力机制的卷积神经网络

对于项目属性的文本信息如项目标题,为了增强网络对文本中重点内容的学习能力,将注意力机制与CNN结合构成提取文本特征的子网络。文本卷积神经网络构成如图 3所示,由注意力层、卷积层、池化层、全连接层组成。

Download:
图 3 文本卷积神经网络 Fig. 3 Text convolutional neural network

注意力层通过对每个项目文本的词向量矩阵赋予注意力权重以得到更新后的词向量矩阵。将项目文本内容通过嵌入层得到词向量矩阵$ {\boldsymbol{E}}\in {{\mathbb{R}}^{n\times d}}$,其中d为词向量的维度,即把每一个词映射为d维向量$ {{\boldsymbol{x}}_{j}}\in {{\mathbb{R}}^{d}}$n为单词的个数;$ {\boldsymbol{F}}\in {{\mathbb{R}}^{s\times d}}$表示目标用户ui浏览过的所有项目所携带文本信息的词向量矩阵,xi为第i个词的词向量表示$ {{\boldsymbol{x}}_{i}}\in {{\mathbb{R}}^{d}}$。计算目标用户词向量矩阵F中每个词汇的词向量表示xi与项目所有文本词向量矩阵E中每个词汇xi的注意力分数。

$ a\left( {{\mathit{\boldsymbol{x}}_i},{\mathit{\boldsymbol{x}}_j}} \right) = \mathit{\boldsymbol{v}}_a^{\rm{T}}R\left( {{\mathit{\mathit{w}}_a}\left[ {{\mathit{\boldsymbol{x}}_i} \oplus {\mathit{\boldsymbol{x}}_j}} \right]} \right) $ (7)

其中:vaTwa为训练参数。

通过softmax函数对a(xi, xj)注意力分数进行归一化处理,得到每个词向量对应的注意力权重aij

$ {a_{ij}} = s\left( {a\left( {{\mathit{\boldsymbol{x}}_i},{\mathit{\boldsymbol{x}}_j}} \right)} \right) = \frac{{{\rm{exp}}\left( {a\left( {{\mathit{\boldsymbol{x}}_i},{\mathit{\boldsymbol{x}}_j}} \right)} \right)}}{{\sum\limits_{j = 1}^n {{\rm{exp}}} \left( {a\left( {{\mathit{\boldsymbol{x}}_i},{\mathit{\boldsymbol{x}}_j}} \right)} \right)}} $ (8)

其中:aijAs×d为注意力权重值,将注意力权重矩阵As×d与项目原词向量矩阵F进行向量拼接运算,得到更新后的项目词向量矩阵Matts×d,作为卷积神经网络的输入矩阵。

$ {\mathit{\boldsymbol{M}}_{{\rm{att}}}} = \mathit{\boldsymbol{A}} \odot \mathit{\boldsymbol{F}} $ (9)

在卷积层中,每个神经元由卷积核$ {{\boldsymbol{F}}_{j}}\in {{\mathbb{R}}^{d\times m}}$沿着句子的方向从矩阵Fatt的最左边向右滑动。其中卷积核Fj的窗口大小设置为m,通过卷积操作后获取句子中每个单词的特征表示,再通过激活函数形成特征图。第j个神经元产生的特征如式(10)所示:

$ {C_j} = f\left( {{\mathit{\boldsymbol{M}}^{s \times d}}{\rm{*}}{\mathit{\boldsymbol{F}}_j} + {\mathit{\boldsymbol{b}}_j}} \right) $ (10)

其中:*为卷积运算;bj为偏置项;f为非线性激活函数ReLU,通过激活函数f以增强卷积神经网络的非线性。

$ R\left( x \right) = {\rm{max}}\left( {0,x} \right) $ (11)

选取最大池化对卷积层的输出结果进行池化操作,将特征图分为若干个矩形区域,并对每个子区域输出最大值。最大池化去除每个子区域中对于当前任务不重要或重复的特征,保留能表达文本特征的信息。同时进一步减少参数数量,有效提高网络特征提取效率。第j个卷积核的池化结果如式(12)所示:

$ c_j^{\rm{'}} = {\rm{max}}\left\{ {{c_1},{c_2},{c_3}, \cdots ,c_j^{d - m + 1}} \right\} $ (12)

将池化后的输出结果输入到全连接层,与全连接层的权值矩阵相乘并加上偏置求和,通过ReLU激活函数后分类输出,得到项目文本信息的隐特征,如式(13)所示:

$ {\mathit{\boldsymbol{q}}_{{\rm{text}}}} = R\left( {{w_j}c_j^{\rm{'}} + {\mathit{\boldsymbol{b}}_j}} \right) $ (13)

其中:wj为全连接层的权重系数;bj为对应的偏置项。将项目非文本属性特征向量$ {{\boldsymbol{\hat{b}}}_{v}}$与文本特征向量qtext做向量连接即可得到项目特征$ {{\boldsymbol{\hat{q}}}_{j}}$

$ {\mathit{\boldsymbol{\hat q}}_j} = c\left( {{{\mathit{\boldsymbol{\hat q}}}_v},{\mathit{\boldsymbol{q}}_{{\rm{text}}}}} \right) $ (14)
2.3 预测评分生成

传统的神经网络推荐模型在预测层通常执行用户特征的隐表示${{\boldsymbol{\hat{p}}}_{u}}$和项目特征的隐表示${{\boldsymbol{\hat{q}}}_{j}}$之间的交互以得到最终的预测评分。由于该模型缺乏对推荐任务的定制优化,对用户所有历史项目的平等处理会限制其表示能力,例如,在用户进行电影点播时,被推荐电影可能只与用户播放历史中的部分电影相关,而传统的电影推荐方式通常会把用户播放历史中所有的电影作为上下文进行推荐,这与用户的实际偏好不符。传统的神经网络推荐模型忽视了用户历史项目中不同项目对预测下一个项目所起的作用不同,因此准确率较低。

在AMITI模型的预测层,利用神经注意力网络区分历史项目的重要性来克服传统神经网络推荐模型的局限性。学习到用户特征的隐表示$ {{{\boldsymbol{\hat{p}}}}_{u}}$和项目特征的隐表示$ {{{\boldsymbol{\hat{q}}}}_{j}}$作为注意力层的输入,学习目标用户对不同项目的关注度,不同关注度对预测下一项目所起的作用不同。用户ui对项目vj的注意力分数如式(15)所示:

$ {s_{\rm{c}}}\left( {{{\mathit{\boldsymbol{\hat p}}}_u},{{\mathit{\boldsymbol{\hat q}}}_j}} \right) = {R_e}\left( {{\mathit{\boldsymbol{w}}_1}\left( {{{\mathit{\boldsymbol{\hat p}}}_u} \odot {{\mathit{\boldsymbol{\hat q}}}_j}} \right) + {\mathit{\boldsymbol{b}}_1}} \right) $ (15)

其中:w1b1是需要学习的权重矩阵和偏置项,通过Re激活函数得到当前项目对预测下一项目的非线性关系。$ {s_{\rm{c}}}({\boldsymbol{\hat p}_u},{\boldsymbol{\hat q}_j})$即注意力分数值越大,表示用户ui对项目vj有更多的关注度,项目vj对预测下一个项目所起的作用越大。利用softmax函数对注意力分数$ {{\hat a}_{ij}}$进行归一化处理。

$ {\hat a_{ij}} = \frac{{{\rm{exp}}\left( {{s_{\rm{c}}}\left( {{{\boldsymbol{\hat p}}_u},{{\boldsymbol{\hat q}}_j}} \right)} \right)}}{{\sum\limits_{j \in R\left( u \right)} {{\rm{exp}}\left( {{s_{\rm{c}}}\left( {{{\boldsymbol{\hat p}}_u},{{\boldsymbol{\hat q}}_j}} \right)} \right)} }} $ (16)

其中:$ {{\hat a}_{ij}}$为项目vj对用户ui偏好曲线的贡献度;R(u)为用户ui的历史交互项目集,通过对项目特征隐表示$ {{\mathit{\boldsymbol{\hat q}}}_j}$重新分配权重,如式(17)所示:

$ {\boldsymbol{\hat q}_i} = \sum\limits_{j \in R\left( u \right)} {{{\hat a}_{ij}}} {\boldsymbol{\hat q}_j} $ (17)

将用户隐含特征$ {{\mathit{\boldsymbol{\hat p}}}_u}$与项目隐含特征$ {{\mathit{\boldsymbol{\hat q}}}_i}$作内积计算得到预测评分,如式(18)所示:

$ {\hat y_{ui}} = \boldsymbol{\hat p}_u^{\rm{T}}{\boldsymbol{\hat q}_i} $ (18)

采用均方误差(Mean Square Error,MSE)作为损失函数在训练模型的过程中去最小化真实评分和预测评分之间的差距。

$ {L_{{\rm{sqr}}}} = \mathop \sum \limits_{\left( {u,i} \right) \in R\left( u \right)} {\left( {{y_{ui}} - {{\hat y}_{ui}}} \right)^2} $ (19)

其中:yui为用户对项目的真实评分;$ {{\hat y}_{ui}}$为用户对项目的预测评分。利用随机梯度下降方法最小化损失函数对目标函数进行优化,采用反向传播算法来优化学习每一层的权重wn和偏置bn。通过上述算法完成对神经网络的训练后,利用模型预测用户对未评分项目进行评分,根据预测评分大小,向目标用户进行推荐,产生的推荐结果用于后续分组,实现项目组推荐。

2.4 TF-IDF方法的改进

TF-IDF常被用于文本分类和信息检索,通常仅考虑文档数量和关键词在文档中出现的频率,而当字词拥有评分数据时无法充分利用评分数据更准确地计算TF-IDF值。例如,利用TF-IDF计算用户ui观看电影中喜剧类型gj的TF-IDF值时,仅将喜剧类型gj在用户ui浏览历史电影集和整个数据集中出现的频率代入计算,并未利用用户对喜剧类电影的评分数据。当喜剧类型gj在用户浏览历史中出现频率较低,但用户对这类电影的评分却较高时,采用传统的TF-IDF方法无法准确地获取用户对喜剧类型gj的偏好程度。

将评分数据引入到TF-IDF方法中,在评估字词重要程度的同时,避免丢失评分较高的字词。改进的TF-IDF方法如式(20)所示:

$ {S_{{u_j},{w_i}}} = \frac{{\sum\limits_{s = 1}^n {{r_{{u_{j,}}v_s^{{w_i}}}}} }}{{\sum\limits_{s = 1}^n {{r_{{u_{j,}}{v_s}}}} }}{\rm{lb}}\frac{{\left| D \right|}}{{\left| {\left\{ {j:{w_i} \in {d_j}} \right\}} \right|}} $ (20)

其中:Suj, wi为词语wi对于用户uj的重要程度,取值是0~1;$\sum\limits_{s = 1}^n {{r_{uj, v{s^{wi}}}}} $为包含词语wi的文件评分和;$\sum\limits_{s = 1}^n {{r_{uj, vs}}} $为所有文件的评分和;|D|为语料库中文件总数;|{j: widj}|为包含词语wi的文件数量。式(20)中根据项目所在的数据集确定获取评分数据ruj, vs。在针对训练集中指定用户的历史项目进行统计时,利用用户对其历史项目的评分数据计算Suj, wi。利用改进的TF-IDF对推荐结果中项目所含类型进行TF-IDF值计算,通过获取用户对不同类型的偏好程度,实现项目组推荐。式(20)中的ruj, vs即通过AMITI模型获得的目标用户uj对候选集中项目vs的预测评分。

式(20)中第一部分为TF-IDF的词频计算(Term frequency,TF),利用预测评分计算包含文件wi的项目评分和在总文件评分和中的占比,当占比较大时说明含有词语wi的文件评分越高,一定程度反映了词语wi的重要性;第二部分为TF-IDF的逆向文件频率(Inverse document frequency,IDF),表示在语料库的文件总数|D|中,包含词语wi的文件数量越多,对TF即词语wi重要性的削弱能力越强。将两部分相乘得到的Suj, wi值说明用户对词语wi的偏好程度。

基于TF-IDF算法的改进对推荐结果中项目类型进行分析,获取不同项目类型对用户的重要程度,实现推荐结果的自动分组。Top-N推荐结果中的同类项目被放入同一组中。用户最喜欢的某类项目将被优先推荐,使用户能快速找到符合自己兴趣的内容。改进的TF-IDF算法具体实现步骤如下:

步骤1  计算词频是在特定文件dj中,包含词语wi的项目评分和在用户浏览历史中所有项目的评分和中所占比例。

$ {\rm{T}}{{\rm{F}}_{j,i}} = \frac{{\sum\limits_{s = 1}^n {{r_{{u_{j,}}v_s^{{w_i}}}}} }}{{\sum\limits_{s = 1}^n {{r_{{u_{j,}}{v_s}}}} }} $ (21)

步骤2  计算逆向文件频率指数据集中项目数量除以包含词语wi的项目的数量,再将得到的商取对数,如式(22)所示:

$ {\rm{ID}}{{\rm{F}}_i} = {\rm{lb}}\frac{{\left| D \right|}}{{\left| {\left\{ {j:{t_i} \in {d_j}} \right\}} \right|}} $ (22)

步骤3  将词频和逆向文件词频相乘得到词语wi在文件dj中的TF-IDF值Suj, wi

$ {S_{{u_j},{w_i}}} = {\rm{T}}{{\rm{F}}_{j,i}} \times {\rm{ID}}{{\rm{T}}_i} $ (23)

改进后的TF-IDF在计算词频时利用评分数据反映词语wi在文件dj中所占比例。而传统的TF-IDF词频计算则通过将词语wi在文件dj中出现的次数与文件dj中所有词语出现次数之和的比,从而获得词语wi的词频。

2.5 推荐结果分组

利用改进TF-IDF方法获取用户对不同项目类型的喜好程度。以电影推荐为例,选用MovieLens数据集进行算法测试。电影类型词频信息如表 1所示。首先对用户ui推荐得到N部电影。其次对推荐结果中的电影建立电影信息文档M={m1, m2, …, mN},从电影信息文档中提取出所包含的电影类型并建立电影类型信息文档G={g1, g2, …, gN}。最后对电影类型文档进行词频统计,得到推荐结果中电影类型的词频信息。

下载CSV 表 1 电影类型词频信息 Table 1 Word frequency information of movie genre

当推荐的电影ms包含电影类型gi时,Rms, gi则为1,反之为0。利用改进的TF-IDF对获得电影类型词频信息进行分析,预测用户对不同电影类型的偏好程度,如式(24)所示:

$ {S_{{u_j},{g_i}}} = \frac{{\sum\limits_{s = 1}^n {{r_{{u_{j,}}{m_s}}} \times {R_{{m_s},{g_i}}}} }}{{\sum\limits_{s = 1}^n {{r_{{u_{j,}}{m_s}}}} }}{\rm{lb}}\frac{N}{{\sum\limits_{s = 1}^n {{R_{{m_s},{g_i}}}} }} $ (24)

其中:ruj, ms为用户uj对电影ms的评分;Rms, gi为电影ms是否包含类型giN为推荐结果的电影数量;Suj, gi为用户对不同电影类型的偏好程度。

将电影类型按其喜好程度Suj, gi降序排列,取前K个类型作为待推荐项目组的组名称即L={L1, L2, …, LK},其中L表示待推荐的项目组集合。在每个项目组加入D部相同类型的电影,LK中的电影源于AMITI模型生成的推荐结果,将项目组中的电影根据预测评分降序排列。最终进行由K个项目组构成,且每个项目组包含D部同类型电影的项目组推荐,如图 4所示。

Download:
图 4 传统推荐列表和项目组推荐列表 Fig. 4 The traditional recommendation list and the item group recommendation list
2.6 AMITI算法描述

利用深度神经网络结合注意力机制能有效提升推荐算法对用户和项目潜在特征的提取能力,并缓解数据的稀疏性问题。依据项目类型分组将推荐结果推荐给用户。AMITI算法整体实现步骤如下:

输入  用户属性信息u: {u1, u2, …, un},un表示用户的第n个属性;项目属性信息v: {v1, v2, …, vn},vn表示项目的第n个属性

输出  生成K个项目组,每个项目组含D个同类项目

步骤1  对用户属性和项目属性进行数据预处理,将其转换成数字类型。

步骤2   用户属性和项目ID及类型属性输入嵌入层,得到低维稠密的嵌入向量puqv。将puqv分别输入到并行的多层全连接层中进行特征学习,得到用户特征$ {{\mathit{\boldsymbol{\hat p}}}_u}$和项目非文本属性向量$ {{\mathit{\boldsymbol{\hat q}}}_v}$

步骤3   对项目名称做卷积处理,通过注意力机制对电影名称的词向量矩阵重新赋权,得到更新后的词向量矩阵Matts×d

步骤4   将词向量矩阵Matts×d输入卷积神经网络中提取项目名称特征并生成特征qtext,再利用tf.concat()函数合并项目各属性特征得到最终的项目特征$ {{\mathit{{\hat q}}}_j}$

步骤5  使用注意力机制为每个项目分配个性化权重$ {{\hat a}_{ij}}$,得到更新后的项目特征$ {{\mathit{\boldsymbol{\hat q}}}_i}$

步骤6  将用户隐含特征$ {{\mathit{\boldsymbol{\hat p}}}_u}$与项目隐含特征${{\mathit{\boldsymbol{\hat q}}}_i}$作内积计算得到预测评分$ {{\hat y}_{ui}}$

步骤7  输入指定用户产生Top-N个推荐结果,利用改进TF-IDF分析用户对不同项目类型的偏好程度值Suj, gi

步骤8  根据偏好程度Suj, gi值将项目类型降序排列,取前K个类型作为待推荐项目组的组名,K即为推荐项目组的数量。

步骤9  在每个项目组加入D部与组名对应的同类电影,并按每部电影的预测评分降序排列。最终进行由K个项目组构成,且每个项目组包含D部同类型电影的项目组进行推荐。

与传统的协同过滤推荐算法相比,AMITI算法以用户和项目属性信息为输入数据,经过深度神经网络特征提取产生预测评分,解决了传统协同过滤推荐算法中评分数据稀疏性问题。与NCF推荐模型相比,AMITI算法在深度神经网络中引入注意力机制,一方面增强CNN对项目文本中重要内容的提取能力;另一方面区分历史项目对预测下一个项目所起的不同作用,能有效提高推荐精度。

3 实验结果与分析

在实验环境及所选实验数据集和相应的评价指标,对推荐算法与传统的推荐算法进行对比分析。

3.1 实验环境及数据集介绍

实验中使用的计算机配置为Intel Core i5-4210U的CPU,8 GB内存,Windows7旗舰版64位操作系统。编程语言使用python语言,版本为python3.6,编译环境在Anaconda的Jupyter Notebook中实现。

实验选用的数据集是美国GroupLens[17]提供的电影数据集MovieLens-1M来验证上述推荐算法的有效性。该数据集被广泛应用于推荐系统的实验中,其中包含6 040个用户对3 952部电影的1 000 209条评分记录,评分范围为0~5。在6 040个用户中每个用户至少对20部电影进行评分。在电影训练集中,包含每部电影的元数据(电影ID、电影标题、上映时间、电影的所属类型);在评分训练集中包含(用户ID、电影ID、对应的用户评分、时间戳);在用户训练集中包含关于用户的人口统计学数据(年龄、性别、职业)。该数据集的稀疏度在94%左右,在实验中随机选取数据中80%作为训练集,20%作为测试集,通过训练集数据训练模型,用测试集数据对算法的性能进行评价。

3.2 评价指标

本文采用均方根误差[18](Root Mean Square Error,RMSE)和平均绝对误差[19](Mean Absolute Error,MAE)作为评价模型性能的指标。对于测试集的用户,用户u对物品i的真实评分为rui,推荐算法计算出的预测评分为$ {{\hat r}_{ui}}$,则RMSE(RMSE)和MAE(MA)的计算如式(25)和式(26)所示:

$ {R_{{\rm{MSE}}}} = \sqrt {\frac{{\sum\limits_{u,i \in T} {{{\left( {{r_{ui}} - {{\hat r}_{ui}}} \right)}^2}} }}{{\left| T \right|}}} $ (25)
$ {M_{\rm{A}}} = \frac{{\sum\limits_{u,i \in T} {\left| {{r_{ui}} - {{\hat r}_{ui}}} \right|} }}{{\left| T \right|}} $ (26)

其中:T为测试集中含评分记录的项目数量。

在验证推荐结果的准确性后,根据保留率公式对最终项目组推荐结果的可靠性进行验证,如式(27)所示:

$ {R_{{\rm{Retention}}\;{\rm{Rate}}}} = \frac{{\sum\limits_{u \in T} {\left| {R\left( u \right) \cap F\left( u \right)} \right|} }}{{\sum\limits_{u \in T} {\left| {F\left( u \right)} \right|} }} $ (27)

其中:R(u)为分组前的推荐结果;F(u)为最终的推荐结果。

3.3 对比实验

为了验证项目组推荐算法得到推荐结果的准确性和有效性,在统一的数据集MoviesLens选取以下4种经典的推荐算法与项目组推荐算法进行对比。

1)ItemCF:基于物品的协同过滤推荐算法,根据之前计算出的物品相似度和用户历史行为为用户生成推荐列表[20]

2)CDL:协同深度学习是一种使用堆叠去噪自编码提取描述文档特征并结合用户历史评分数据产生推荐的模型[21]

3)NAIS:融合注意力机制的基于项目MLP的协同过滤推荐模型[22]

4)NCF:神经协同过滤推荐算法,利用MLP神经网络从用户和项目的隐向量中学习用户和项目间的交互函数,产生预测评分。

3.4 结果分析

在MovieLens-1M的电影数据集上对提出AMITI算法进行实验评估,将RMSE和MAE作为评价指标衡量预测评分的准确性。在保证实验数据集和实验环境相同的情况下,研究以下3个超参数对AMITI模型推荐性能的影响。

1)迭代次数(epoch):1个迭代次数表示使用训练集中所有样本在神经网络训练了1次。

2)丢弃率(dropout):在模型参数较多,训练样本较少的情况下,训练出的模型易产生过拟合现象。利用丢弃率随机抹去一些神经元,减少参数数量,从而防止过拟合现象的发生。

3)学习率(learning rate):决定模型的收敛结果和效率。

随着迭代次数的增加,神经网络中权重的更新次数也随之增加。因过多的迭代次数易造成模型的过拟合,导致模型准确性降低。当迭代次数大于10时,MAE和RMES增大。迭代次数取不同值时对MAE和RMSE的影响如图 5所示。

Download:
图 5 迭代次数取不同值时的实验结果对比 Fig. 5 Comparison experimental results of epoch with different values

超参数中丢弃率可防止模型出现过拟合问题,训练时丢弃率使部分隐层单元停止工作,提高网络的泛化能力。从图 6中可以看出,当丢弃率取值为0.5时模型效果达到最佳,即在训练中有一半的神经被丢弃,随着丢弃率的增大,更多神经元被丢弃则会降低神经网络对特征的学习能力。丢弃率取不同值时对MAE和RMSE的影响如图 6所示。

Download:
图 6 丢弃率取不同值时的实验结果对比 Fig. 6 Comparison experimental results of dropout with different values

学习率不同取值对模型性能的影响如图 7所示。学习率为0.000 1时模型的效果最佳。随着学习率取值的增大,模型的MAE和RMSE随之增大,学习率取值越大易错过局部极小值,导致模型难以拟合。

Download:
图 7 学习率取不同值时的实验结果对比 Fig. 7 Comparison experimental results of different learning rates

图 5~图 7可以看出,在丢弃率、学习率、每批训练大小分别为0.5,0.0001,256情况下,迭代次数取值为10,模型的均方根误差和平均绝对误差达到最低。

项目组推荐与其他4种推荐算法的均方根误差和平均绝对误差对比如图 8所示。在MovieLens-1M的数据集上,AMITI算法与ItemCF、CDL、NAIS、NCF相比,4种算法RMSE分别提高了14.09%、4.46%、2.37%、2.04%,MAR分别提高了14.38%、3.65%、2.77%、2.47%。ItemCF较其他算法的效果较差,MAE和RMSE较大;CDL算法、NAIS算法和NCF算法的指标相近。AMITI算法相比其他算法提升2%以上,基于注意力机制的神经网络提取用户和项目的隐含特征后一定程度上提高了推荐系统的准确性。

Download:
图 8 不同推荐算法的RMSE和MAE结果对比 Fig. 8 Comparison results of RMSE and MAE of different recommended algorithm

在计算用户的电影类型偏好时发现每个用户有2~4个为特别偏好,确定在最终推荐项目组的数量设置推荐效果最佳。Top-N取不同值对保留率的影响如图 9所示。将项目组个数分别设置为2、3、4,每个项目组包含4部同类型电影,同时选取不同的Top-N来比较这3种情况下对应保留率的变化情况。保留率均随项目组数量的增大而增大,当Top-N取值相同,项目组数量越少保留率越高,同时保留率也更快地达到100%。但如果在最终推荐时只推荐2个项目组,很难覆盖大部分用户对电影类型偏好的需求,将最终推荐项目组的数量确定为3。

Download:
图 9 Top-N取不同值对保留率的影响 Fig. 9 The influences Top-N with different values on retention rate

将预测评分较高的电影优先推荐给用户,Top-N选取时需要满足N取值尽量小、保留率尽量大。根据图 9可知,为了适当增加冷门项目出现概率,当项目组数量为3,N=50,同时保证每次推荐都有1~2个项目为随机推荐。

4 结束语

本文提出一种基于注意力机制与改进TF-IDF的推荐算法,通过将双层注意力机制引入卷积神经网络,提高卷积神经网络的特征提取能力,并对项目特征分配不同的偏好权重以实现更符合用户偏好的推荐。在向目标用户进行项目推荐时,将评分数据和项目类型数据与TF-IDF进行结合,完成对推荐结果分组。MovieLens-1M数据集上的实验结果表明,AMITI算法在一定程度上提高了推荐准确性以及增强呈现方式的有序性和可选择性。下一步将矩阵分解技术融合到深度神经网络模型中,以提高评分预测的精准性和最终项目组推荐内容的可靠性。

参考文献
[1]
LIU L, WANG D B. Summary of research on named entity recognition[J]. Acta Information, 2018, 37(3): 329-340. (in Chinese)
刘浏, 王东波. 命名实体识别研究综述[J]. 情报学报, 2018, 37(3): 329-340. DOI:10.3772/j.issn.1000-0135.2018.03.010
[2]
WANG L, XIE Y, ZHOU J S, et al. Segment-level Chinese named entity recognition based on neural network[J]. Journal of Chinese Information Processing, 2018, 32(3): 84-90, 100. (in Chinese)
王蕾, 谢云, 周俊生, 等. 基于神经网络的片段级中文命名实体识别[J]. 中文信息学报, 2018, 32(3): 84-90, 100. DOI:10.3969/j.issn.1003-0077.2018.03.012
[3]
KARJALA T W, HIMMELBLAU D M, MⅡKKULAINEN R. Data rectification using recurrent(Elman) neural networks[C]//Proceedings of International Joint Conference on Neural Networks. Washington D.C., USA: IEEE Press, 1992: 901-905.
[4]
GRIDACH N. A framework based on (probabilistic)soft logic and neural network for NLP[J]. Applied Soft Computing Journal, 2020, 93: 106-132.
[5]
LI X Y, ZHANG H, ZHOU X H. Chinese clinical named entity recognition with variant neural structures based on BERT methods[J]. Journal of Biomedical Informatics, 2020, 107: 103-122.
[6]
HAMMERTON J. Named entity recognition with long short-term memory[C]//Proceedings of the 7th Conference on Natural Language Learning at HLT-NAACL. Philadelphia, USA: ACL Press, 2003: 172-175.
[7]
COLLOBERT R, WESTON J, BOTTOU L, et al. Natural language processing(almost) from scratch[J]. Journal of Machine Learning Research, 2011, 12(1): 2493-2537.
[8]
LAMPLE G, BALLESTEROS M, SUBRAMANIAN S, et al. Neural architectures for named entity recognition[C]//Proceedings of 2016 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies. Philadelphia, USA: ACL Press, 2016: 260-270.
[9]
HUANG Z H, XU W, YU K. Bidirectional LSTM-CRF models for sequence tagging[EB/OL]. [2020-06-01]. https://arxiv.org/abs/1508.01991.
[10]
Maimaitiayifu, SILAMU Wushouer, MUHETAER Palidan, et al. Uyghur named entity recognition based on BiLSTM-CNN-CRF Model[J]. Computer Engineering, 2018, 44(8): 230-236. (in Chinese)
买买提阿依甫, 吾守尔·斯拉木, 帕丽旦·木合塔尔, 等. 基于BiLSTM-CNN-CRF模型的维吾尔文命名实体识别[J]. 计算机工程, 2018, 44(8): 230-236.
[11]
LI J L, WANG P Q, HAN Q Y. Recognition of military named entities based on two-way LSTM[J]. Computer Engineering and Science, 2019, 41(4): 713-718. (in Chinese)
李健龙, 王盼卿, 韩琪羽. 基于双向LSTM的军事命名实体识别[J]. 计算机工程与科学, 2019, 41(4): 713-718. DOI:10.3969/j.issn.1007-130X.2019.04.019
[12]
LI M H, LIU Z, YAO Y Z. Symptom term re-cognition of traditional Chinese medicine records based on LSTM-CRF[J]. Computer Applications, 2018, 38(S2): 42-46. (in Chinese)
李明浩, 刘忠, 姚远哲. 基于LSTM-CRF的中医医案症状术语识别[J]. 计算机应用, 2018, 38(S2): 42-46.
[13]
ZHANG Y, YANG J. Chinese NER using lattice LSTM[C]//Proceedings of the 56th Annual Meeting of the Association for Computational Linguistics. Philadelphia, USA: ACL Press, 2018: 1554-1564.
[14]
PETERS M E, NEUMANN M, IYYER M, et al. Deep contextualized word representations[C]//Proceedings of 2018 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies. Philadelphia, USA: ACL Press, 2018: 2227-2237.
[15]
RADFORD A, NARASIMHAN K, SALIMANS T, et al. Improving language understanding by generative pre-training[EB/OL]. [2020-06-01]. https://blog.csdn.net/leo_95/article/details/89965558.
[16]
DEVLIN J, CHANG M W, LEE K, et al. BERT: pre-training of deep bidirectional transformers for language understanding[C]//Proceedings of 2019 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies. Philadelphia, USA: ACL Press, 2018: 4171-4186.
[17]
PENG M L, XING X Y, ZHANG Q, et al. Distantly supervised named entity recognition using positive-unlabeled learning[EB/OL]. [2020-06-01]. https://arxiv.org/abs/1906.01378.
[18]
GHADDAR A, LANGLAIS P. Robust lexical features for improved neural network named-entity recognition[EB/OL]. [2020-06-01]. https://arxiv.org/abs/1806.03489.
[19]
YANG P, DONG W Y. Chinese named entity recognition method based on BERT embedding[J]. Computer Engineering, 2020, 46(4): 40-45, 52. (in Chinese)
杨飘, 董文永. 基于BERT嵌入的中文命名实体识别方法[J]. 计算机工程, 2020, 46(4): 40-45, 52.
[20]
VASWANI A, SHAZEER N, PARMAR N, et al. Attention is all you need[EB/OL]. [2020-06-01]. https://www.researchgate.net/publication/317558625_Attention_Is_All_You_Need.
[21]
ZHU Y, WANG G, KARLSSON B F. CAN-NER: convolutional attention network for Chinese named entity recognition[EB/OL]. [2020-06-01]. https://arxiv.org/abs/1904.02141.
[22]
CHIU J, NICHOLS E. Named entity recognition with bidirectional LSTM-CNN[EB/OL]. [2020-06-01]. https://arxiv.org/abs/1511.08308.
[23]
WANG J, ZHANG R D, WU C S. Named entity recognition method based on GRU[J]. Computer Systems & Applications, 2018, 27(9): 18-24. (in Chinese)
王洁, 张瑞东, 吴晨生. 基于GRU的命名实体识别方法[J]. 计算机系统应用, 2018, 27(9): 18-24.