随着互联网技术的发展以及智能手机的普及, 信息超载问题也亟待解决.推荐系统[作为解决信息超载问题的有效工具, 已被成功应用于各个领域, 包括电子商务、电影、音乐和基于位置的服务等[.推荐系统通过分析用户与系统交互的历史数据来获取用户偏好, 使不同的用户进入系统时能够得到个性化推荐结果.由于推荐系统需要依赖于用户的历史数据, 所以一般是作为一个应用存在于不同的网站中[.为方便系统获取用户偏好, 大多数网站都允许用户对自己购买或体验过的项目(商品、电影、音乐等)评分, 推荐系统则可以根据用户-项目评分矩阵(如u代表用户, i代表项目)分析用户的偏好, 并为其推荐可能感兴趣的项目.

图 1

Fig. 1

Fig. 1 Architecture of our proposed attentive matrix factorization with regulation

图 1 基于注意力机制的规范化矩阵分解模型框架

近年来, 推荐系统的实用价值使其在工业界和学术界都得到了广泛的研究.在众多推荐方法中, 协同过滤算法[应用最为普遍, 其主要思想是:基于评分矩阵中的已有项来预测未知项, 继而为用户推荐预测分值较高的项目.协同过滤算法可以分为基于记忆(memory-based)的[和基于模型的(model-based)[两类算法, 其中, memory-based算法又包括基于用户的(user-based)[和基于项目(item-based)的[.虽然协同过滤算法已经取得了巨大成功, 但是依旧存在数据稀疏和冷启动问题:数据稀疏指由于用户只能体验系统中极小一部分项目, 所以评分矩阵中存在很多未知项; 冷启动问题则指对于评分记录很少甚至没有的用户, 系统很难获取其偏好并作出推荐.

Memory-based算法的核心在于寻找与目标用户(待推荐用户)或目标项目(待评分项目)有较高相似度的最近邻.现有memory-based算法中, 用户(项目)间的相似度主要通过计算用户评分向量(项目得分向量)之间的皮尔逊相关系数(Pearson coefficient of correlation, 简称PCC)或余弦相似度(cosine similarity, 简称COS)获取[.这两种方式都需要参与计算的用户(项目)间存在公共评分项目(打分用户), 数据稀疏导致由这两种方法获取的相似度无法准确代表用户(项目)间的相似关系.对于没有评分记录的冷启动用户(项目), 系统无法基于此方法为其找到最近邻.Memory-based算法在分析用户偏好时只用到了局部评分记录; model-based算法则依据评分矩阵中所有已知项来训练预测模型, 通过预测模型获取用户偏好和项目的属性特征, 并利用学习到的参数预测评分矩阵中的未知项.在众多model-based算法中, 矩阵分解(MF)技术[因其有效性和简便性而被广泛采用.MF模型认为, 用户的偏好和项目的属性特征都可以用低维的特征向量表示, 其中, 用户特征向量每一维的元素代表了用户对项目某种属性特征的偏好程度, 项目特征向量对应维的元素则代表该项目拥有此属性特征的程度, 用户对项目的评分则用二者特征向量的内积表示[.显然, 具有相似偏好用户的特征向量也应该是相似的.然而, 数据稀疏导致MF学习到的用户特征向量不能准确代表用户的偏好, 也无法反映用户间的相似关系, 这同时降低了推荐准确度和模型在训练阶段的收敛速度.此外, MF无法为冷启动用户学习特征向量获取其偏好.

为了提高MF的推荐准确度, 带约束条件的规范化矩阵分解(RMF)技术引起了研究者的关注[.引入信任关系的RMF认为用户与其信任人有相似的偏好, 直接将用户的信任人看作其相似朋友.Zhang等人在文献[

MF中, 用户对项目的评分是二者特征向量间的内积.He等人[认为, 这种简单的线性方式无法捕捉用户和项目间复杂的交互关系.他们提出了基于神经网络的协同过滤模型框架(NCF), 该框架利用多层感知机将用户和项目的特征向量以非线性方式结合预测评分, 并通过实验证明了该框架的有效性.DMF模型将评分矩阵作为深度神经网络的输入, 以非线性方式学习用户和项目的特征向量, 在神经网络的输出层, 通过计算用户和项目特征向量间的余弦相似度预测评分[.虽然深度神经网络的引入能够有效提升MF的准确度, 但是与此同时, 模型的复杂度也大幅提升.如何在提高模型准确度的同时避免模型复杂度的大幅升高, 是极具挑战的任务.

MF将用户特征向量和项目特征向量所对应的维度元素相乘, 并将乘积结果等权重相加后的和作为用户对项目的评分, 忽略了用户对项目不同属性特征的关注度.我们希望通过学习用户对项目各个属性特征不同的关注度来获取用户更准确的偏好, 进而提高模型性能.获取用户对项目属性关注度最直观的方法是为用户学习一个f维的关注度向量(f是项目属性特征向量的维度), 其中, 第k维元素代表用户对项目第k个属性特征的关注度(k∈[0, f-1]).这样会使模型多引入M*f个参数(M是系统中用户数量).由于系统中用户数量通常非常大, 所以这种方式同样会使模型复杂度大幅度升高.如何在避免模型复杂度大幅升高的前提下分析用户对项目各个属性特征不同的关注度, 获取用户更准确的偏好, 是本文的另一个研究内容.

基于上述工作的问题, 本文主要面临如下挑战:(1)如何利用评分矩阵和信任关系挖掘用户间可靠的相似关系, 解决MF中的数据稀疏和冷启动问题; (2)如何在避免模型复杂度大幅提升的前提下, 分析用户对项目属性特征的关注度, 获取用户更准确的偏好.为了解决这些挑战, 本文提出融合信任关系和评分矩阵的基于注意力机制[的规范化矩阵分解模型(ARMF), 模型框架如

●  第1部分是用户间相似关系的挖掘:首先, 依据评分矩阵和信任关系构建异构网络; 然后, 利用网络嵌入技术[挖掘用户间的相似关系;

●  第2部分是基于注意力机制的评分预测函数构建:通过公共权重矩阵, 以双线性方式在MF中引入注意力机制, 分析用户对项目各个属性的关注度, 获取用户更准确的偏好;

●  第3部分是模型参数优化:以准确地重构评分矩阵同时使有相似偏好的用户具有相似的特征向量为目的构建目标函数, 并采用随机梯度下降法(SGD)[优化模型参数.

本文主要贡献如下.

(1) 为了挖掘用户间可靠的相似关系, 提出了伪相似朋友的概念用于构建异构网络, 并在网络嵌入阶段提出了伪相似传播机制和一种新的随机游走算法VDWalk;

(2) 为了分析用户对项目各个属性特征不同的关注度, 获取用户更准确的偏好, 同时保证模型复杂度不会大幅提升, 首次以双线性方式将注意力机制引入MF中;

(3) 在真实数据集FilmTrust[和CiaoDVD[上进行了大量实验, 实验结果表明, 与现有的矩阵分解模型相比, ARMF模型具有更好的推荐准确性和健壮性.

1 相关工作

1.1 传统协同过滤算法

协同过滤算法包括memory-based和model-based两类算法.

Memory-based算法的关键在于最近邻的查找过程.

●  文献[

●  文献[

●  文献[

由于memory-based算法需要计算系统中所有用户(项目)间的相似度, 导致该类算法的扩展性较差, 所以model-based算法逐渐成为研究重点.Model-based算法包括基于图模型的[、基于聚类的[和基于MF的[等, 其中, MF是目前应用最为普遍的算法.假设系统中有M个用户(用户集合用U表示)和N个项目(项目集合用I表示), MF的主要思想是:利用评分矩阵RM×N中的已有评分记录学习能够代表用户偏好和项目属性特征的用户特征P∈Rf×M和项目特征Q∈Rf×N, 用户对项目的评分则用二者特征向量的内积表示.为了尽可能准确地重构评分矩阵并预测未知项, MF通过最小化公式(1)中所示的目标函数并采用SGD学习模型参数P和Q:

$

L(R, \mathit{\boldsymbol{P}}, \mathit{\boldsymbol{Q}}) = \frac{1}{2}\sum\limits_{u = 1}^m {\sum\limits_{i = 1}^n {{I_{ui}}{{\left( {\sum\limits_{j = 0}^{f - 1} {\mathit{\boldsymbol{P}}_u^j*\mathit{\boldsymbol{Q}}_i^j} - {R_{u, i}}} \right)}^2}} } + \frac{{{\lambda _1}}}{2}||\mathit{\boldsymbol{P}}||_F^2 + \frac{{{\lambda _2}}}{2}||\mathit{\boldsymbol{Q}}||_F^2

$

(1)

其中, Iu, i是一个指示函数, 如果用户u对项目i进行了评分, Iu, i等于1, 否则为0;$\mathit{\boldsymbol{P}}_u^j$表示用户u对项目第j个属性特征的偏好程度; $\mathit{\boldsymbol{Q}}_i^j$表示项目i拥有第j个属性特征的程度; λ1和λ2是正则项系数, 引入正则项是为了防止模型过拟合; $|| \cdot ||_2^F$代表向量的二范式.RMF在MF目标函数的基础上增加约束项, 使用户的特征向量与其相似朋友的

特征向量之间的距离尽可能小, 以此提升了模型性能.挖掘用户间的相似关系为用户找到其相似朋友, 是RMF的任务之一.CUNE[通过将已评分项目有交集的用户连接的方式构建用户同质网络, 在利用网络嵌入技术学习网络中用户的隐向量后, 依据用户隐向量间的相似度挖掘用户间的相似关系.然而, 数据稀疏和冷启动问题导致系统中只有小部分用户能够连接到网络, 稀疏的网络使得通过网络嵌入得到的用户隐向量反映不出用户间可靠的相似关系.如何挖掘用户间可靠的相似关系, 是RMF需要解决的问题.

1.2 引入信任关系的协同过滤算法

信任关系作为评分矩阵的辅助信息, 被证明能够有效缓解协同过滤算法中的数据稀疏和冷启动问题[. Guo等人[提出了融合信任关系的user-based算法——Merge:该算法依据用户信任人的评分记录预测用户对未评分项目的评分, 以此来对评分矩阵中的未知项进行填补, 用户之间的相似度依据新的评分矩阵得到.实验结果证明, 该方法得到的用户间相似关系更可靠, 推荐结果的准确度也更高.文献[[则是利用广度优先遍历法推断和计算用户间信任值.Jamali和Ester提出了融合item-based和trust-based的TrustWalker随机游走算法[, 该算法分别连接用户与其评分项目、信任人构建用户-项目异构网络, 在预测目标用户对目标项目的评分时, 从目标用户出发在网络中随机游走, 为在准确度和效率间取得平衡, 在游走过程中, 按条件要么返回目标用户对与目标项目相似项目的评分, 要么返回目标用户信任人对目标项目的评分.

Ma等人[认为, 用户对项目的评分不仅依赖于自己的偏好, 还容易受其信任人的影响.他们提出了基于MF的STE模型, STE将用户依据个人偏好对项目的评分与用户信任人对项目的评分线性相加作为用户对项目的最终评分.该模型只考虑了信任人对用户评分的影响, 忽略了信任人对用户特征向量的影响.引入信任关系的RMF基于用户与其信任人有相似偏好的假设, 将用户的信任人看作其相似朋友, 所以信任人直接影响着用户的特征向量.其中:SocialRec[通过共享用户特征向量矩阵, 同时分解评分矩阵和信任矩阵来学习用户特征向量, 这样, 用户的特征向量不仅取决于自己的评分, 还受到其信任人的影响; SocialMF[认为用户与其信任人有相似的特征向量, 特征向量间的相似度取决于用户对信任人的信任度; SocialReg[计算用户与其信任人二者评分向量之间的相似度来决定他们特征向量之间的相似度; Parvina等人[在学习用户特征向量时, 同时考虑用户信任人和非信任人的影响——用户特征向量与其信任人特征向量间的距离应尽可能近, 同时与其非信任人特征向量间的距离应尽可能远.这些算法都认为用户与其所有信任人有相似的偏好, 同时忽略了用户与其他用户间的相似关系.然而, 用户在定义信任人时会受到复杂因素的影响, 用户与其信任人不一定有相似的偏好.为找到与用户有相似偏好的信任人, Li等人[提出了信任关联度的概念.他们认为, 只有与目标用户有相似评分记录的信任人是目标用户的相似朋友.同时还引入了信任传播机制解决数据稀疏和冷启动问题.虽然引入了信任传播机制, 但是目标用户的相似朋友候选集依旧很小, 可能会丢失真实存在的相似关系.与现有引入信任关系的RMF不同的是, 本文将用户间的信任关系作为评分矩阵的辅助信息, 挖掘系统中所有用户间的相似关系, 并为用户找到其相似朋友.

2 基于注意力机制的规范化矩阵分解模型

为了能够找到用户之间可靠的相似关系并分析出用户复杂的偏好, 本文提出了基于注意力机制的规范化矩阵分解模型——ARMF.该模型的框架如

(1)   用户间相似关系的挖掘, 主要包含两部分.

①   异构网络构建:依据评分矩阵和用户间信任关系构建用户-项目异构网络(详见第2.3节);

②   异构网络嵌入:利用网络嵌入技术学习步骤①所构建的网络中用户的隐向量, 通过计算用户隐向量间的余弦相似度, 挖掘用户间的相似关系(详见第2.4节);

(2)   基于注意力机制的评分预测:以双线性方式在MF中引入注意力机制, 从用户的历史数据中获取用户更准确的偏好(详见第2.5节);

(3)   模型参数优化:依据步骤(1)中挖掘到的相似关系和步骤(2)中对评分的预测, 构造目标函数并采用SGD优化模型参数(详见第2.6节).ARMF的执行过程可总结如

图 2

Fig. 2

Fig. 2 Execution of ARMF

图 2 ARMF的执行过程

2.1 问题描述

在推荐系统中, 假设有M个用户U={u1, u2, …, uM}和N个项目I={i1, i2, …, iN}, 用户通过对体验过的项目评分, 系统会生成一个M行N列的评分矩阵RM×N(M=8, N=6), 其中, 第u行i列的Ru, i表示用户u对项目i的评分(评分通常是1~5的整数).在本文中, 用Iu表示用户u评分大于σ(σ∈[0, 5])的项目集合; Cu表示和用户u共同评分项目个数不少于δ(δ∈Z)的用户集合; Du表示和用户u至少有一个公共评分项目, 且对项目评分都大于σ(σ∈[0, 5])的用户集合.

在引入信任关系的推荐系统中, 用户可以定义自己的信任人, tu, v代表用户u对用户v的信任度.在大多数系统中, tu, v∈{0, 1}(0表示不信任, 1表示信任), 本文用Tu={v|tu, v=1}表示用户u的信任人集合.依据用户之间的信任关系, 可以构建对应的信任网络(TN), 如

当δ=1和σ=2时, u的Iu, Cu, Du以及Tu见例1.在第2.3小节异构网络构建和第2.4小节异构网络嵌入阶段, 会以例1为基础介绍模型每个模块的实现步骤, 以便理解模型原理.

例1:

用户

Iu

Cu

Du

Tu

u1

Ø

Ø

Ø

{u7}

u2

{i3}

Ø

{u7}

{u4}

u3

{i1, i2}

{u5}

{u5}

{u1}

u4

{i4, i5}

{u6}

{u6}

Ø

u5

{i1, i2}

{u3}

{u3}

Ø

u6

{i4, i5}

{u4}

{u4}

Ø

u7

{i3}

Ø

{u2}

Ø

u8

Ø

Ø

Ø

{u7}

本文利用RM×N和TN挖掘用户间可靠的相似关系, 并分析用户对项目各个属性特征不同的关注度.在尽可能准确地预测评分矩阵中未知项的同时, 保证有相似偏好用户的特征向量间有较高的相似度.

2.2 引入信任关系的异构网络

推荐系统中, 用户和用户之间的信任关系以及用户和项目之间的交互关系可以通过不同的方式构建用户-项目异构网络展现出来.最直接的方式就是用户与其已评分项目连接, 同时与其信任人连接, 并假设用户与其信任人有相似偏好[.由于用户与其信任人不一定完全相似, 直接将信任关系看作相似关系可能导致非个性化的推荐结果.因此, 本文将用户的信任人看作其伪相似朋友(伪相似朋友定义详见第2.3节), 而非相似朋友, 来挖掘用户间更可靠的相似关系.此外, 与文献[u只与Iu中的项目连接, 项目在网络中只是起到媒介作用, 将可能相似的用户连接起来.比如, 例1中的i3可以使u2与u7相互连接.本文通过将用户与其伪相似朋友连接的方式构建异构网络, 并基于若两个用户有相似的伪相似朋友则他们有相似偏好, 即有相似隐向量的假设, 利用网络嵌入技术挖掘用户间可靠的相似关系.下面将在第2.3节和第2.4节分别介绍如何利用评分矩阵和信任网络构建异构网络和如何通过网络嵌入获取用户间的相似关系.

2.3 引入信任关系的异构网络构建

为了构建稠密的用户-项目异构网络, 提出了伪相似朋友的概念.将可能与用户u有相似偏好的用户定义为其伪相似朋友, 同时假设:如果两个用户有较多公共的伪相似朋友, 则他们一定有相似偏好.具体地, 用户u的伪相似朋友Fu定义如下.

定义 1(伪相似朋友Fu).

(1) 对称伪相似

ⅰ. u∈Fv且v∈Fu|v∈Cu;

ⅱ. u∈Fv且v∈Fu|v∈Du;

(2) 非对称伪相似

v∈Fu|v∈Tu.

基于定义1, 首先根据评分矩阵找到每个用户u的Iu, Cu, Du以及Tu(例1), 然后直接连接每个用户u与其伪相似朋友v(v∈Cu), u和Du中的伪相似朋友则通过Iu中的项目间接连接, 这样得到u1和u8)和处于小圈中的用户节点(比如u5和u3).如果直接在稀疏的U-I Net1上学习用户的隐向量, 不仅无法为孤立的用户学习其隐向量, 也会使得为处于小圈中的用户学习到的隐向量不准确, 最终会导致依据隐向量挖掘的用户相似关系不可靠.

为了解决数据稀疏问题, ARMF在评分矩阵的基础上融入了用户间的信任关系, 认为用户的信任人可以看作其伪相似朋友.通过在U-I Net1的基础上连接用户与其信任人, 可得到u1和u8都通过u7连接到网络中, 处于小圈中的其他用户也可以连接到更多其他伪相似朋友, 这就使得通过网络嵌入挖掘到的相似关系更加可靠.此外, 通过在用户和信任人之间添加连边的操作, 可以将携带信任信息的新用户加入网络中, 并为其找到相似朋友, 成功解决了冷启动问题.

2.4 异构网络嵌入

为了获取U-I Net2中用户间可靠的相似关系, 提出了伪相似传播机制, 并设计了VDWalk随机游走算法.在利用网络嵌入学习用户隐向量时, 我们做了如下假设:如果两个用户有较多公共的伪相似朋友, 则他们有相似偏好, 即有相似的隐向量.数据稀疏问题会导致每个用户的伪相似朋友数量很少, 虽然在构建异构网络时引入了用户间的信任关系, 但是由于信任关系也存在冷启动问题, 即有很少评分记录的用户通常也有非常少的信任人[, 所以用户的伪相似朋友集合间很难有比较大的交集.鉴于此, 我们提出了伪相似传播机制, 伪相似传播概念见定义2.

定义 2(伪相似传播). u∈Fv且v∈Fr, 则u∈Fr.

伪相似传播机制使每个用户能够拥有更多的伪相似朋友, 进而可以挖掘到用户间更可靠的相似关系.由于引入了伪相似传播机制, 网络U-I Net2中每个用户附近的用户都可以看作其伪相似朋友.基于如果两个用户有相似的伪相似朋友则他们有相似的偏好, 即有相似的隐向量的假设, 在U-I Net2上以每个非孤立用户(由于网络中的孤立节点没有邻居节点, 没有办法为他们采集到路径, 不能通过网络嵌入方法学习他们的隐向量, 所以下文提到的U-I Net2中的用户均指非孤立用户)为起始节点选取ρ条长度为l的路径, 把这些路径放入Skip-gram模型[学习用户的隐向量.

为了能够为每个用户节点采集到的ρ条路径尽可能不同, 我们提出了基于DeepWalk[的一种变形随机游走算法——VDWalk.

算法 1. VDWalk.

输入:U-I Net2;路径条数:ρ; 路径长度:l;

输出:以U-I Net2中每个用户为起始节点的ρ条长l的路径.

1.  初始化路径集合Walks为空;

DeepWalk在每次采集下一个节点时会在当前节点邻居节点中随机选择一个, 这样可能导致一些节点被重复选择, 而一些节点从不被选择, 也可能为同一个节点采集到相同的路径, 从而降低了通过网络嵌入学习到的节点隐向量的准确度.为避免这些情况的出现, VDWalk定义不同的邻居节点有不同的优先选择权, 在每次采集下一个节点时, 优先选择当前节点的邻居节点中优先级较高的节点.邻居节点的优先选择权定义如下.

定义 3(优先选择权).

(1)   u > v|u∈U, v∈U, state(u)=False, state(v)=True

(2)   u=v|u∈U, v∈U, state(u)=True, state(v)=True

(3)   u=v|u∈U, v∈U, state(u)=False, state(v)=False

(4)   u > i|u∈U, i∈I, state(u)=False, state(i)=False

(5)   u > i|u∈U, i∈I, state(u)=True, state(i)=True

(6)   i > u|u∈U, i∈I, state(u)=True, state(i)=False

(7)   i=j|i∈I, j∈I

其中:a > b表示a的优先选择权大于b, a=b表示a的优先选择权等于b, state(a)=False表示a节点未被访问过, state(a)=True表示a节点已被访问过.

VDWalk在为每个用户节点采集路径时, 会初始化U-I Net2中所有节点的邻居节点状态为‘False’(算法1第1行~第3行), 在选择下一个节点时, 会根据定义3优先选择父节点邻居节点中优先级较高的节点(第6行~第11行).基于用户u和Tu和Cu中的用户比Du中的用户更为相似的假设, 父节点邻居节点中的用户节点比项目节点有较高的选择优先权(第7行~第10行), 除非所有的用户节点已经被访问过, 才会选择项目节点(第8行~第10行).项目节点在VDWalk中只是起到媒介作用, 使能够为用户u采集到Du中的伪相似朋友, 所以它不被放入路径中(第12行、第13行).这样, 路径中除了用户u本身之外的其他节点都是其伪相似朋友, 记作Nu.例2是以U-I Net2中以u3为起始节点选取第1条长度为5的路径时的选择过程.

例2:下图中的黄色节点表示路径中每一步的节点选择过程:以u3为源节点, 最初u3的邻居节点中既有项目节点i1和i2, 又有用户节点u1和u5.因为用户节点优先级高于项目节点, 并且此时两个用户节点都未被访问过, 所以从u1和u5中随机选择一个作为子节点.如果选择了u1, u1的邻居节点只有u7, u7作为下一个子节点, 然后u7通过i3选择u2, u2的信任人u4作为终止节点, 最终的路径为(u3, u1, u7, u2, u4), ${N_{{u_3}}}$={u1, u7, u2, u4}.

图 3

Fig. 3

Fig. 3 Example of VDWalk

图 3 VDWalk算法例子

Skip-gram模型针对句中给定单词, 最大化窗口大小为t内周围单词的共现概率, 用函数Φ将该单词映射到一个d维的低维空间中.其形式化地定义为:若给定句子S=(w1, w2, …, wo, wo+1, …)中的单词wo, Skip-gram通过最小化目标函数L来学习wo的低维隐向量:

$

L = - lb{\rm{Pr}}(\{ {w_o}_{ - t}, \ldots , {w_o}_{ + t}\} \backslash {w_o}|\mathit{\Phi }\left( {{w_o}} \right))

$

(2)

从Skip-gram的目标函数可以看出, Skip-gram模型将会对具有相似上下文的单词学习到相似的隐向量.因为我们提出了类似的假设, 即:如果两个用户有相似的伪相似朋友, 他们就有相似的隐向量, 所以可以利用Skip- gram模型学习U-I Net2中用户的隐向量, 并以此来获取用户之间隐藏的相似关系, 此时目标函数为

$

L = - lb{\rm{Pr}}({N_u}|\mathit{\Phi }\left( {{E_u}} \right))

$

(3)

将在U-I Net2上收集到的所有路径放入Skip-gram模型中, 学习用户的d维隐向量E, 根据公式(4)计算用户隐向量之间的余弦相似度, 取和用户u有最大相似度的前K个用户作为他的相似朋友, 记为Su:

$

Sim(u, v) = \frac{{\sum\limits_{j = 0}^{d - 1} {\mathit{\boldsymbol{E}}_u^j \cdot \mathit{\boldsymbol{E}}_v^j} }}{{\sqrt {\sum\limits_{j = 0}^{d - 1} {{{(\mathit{\boldsymbol{E}}_u^j)}^2}} } \sqrt {\sum\limits_{j = 0}^{d - 1} {{{(\mathit{\boldsymbol{E}}_v^j)}^2}} } }}

$

(4)

其中, Euj代表用户u隐向量的第j维.

2.5 基于注意力机制的评分预测

ARMF希望分析用户对项目不同属性特征的关注度, 获取用户更准确的偏好.最直观的做法就是为每个用户学习一个关注度向量, 此时, 用户u对项目i的评分预测函数见公式(5):

$

{{R'}_{u, i}} = \sum\limits_{j = 0}^{f - 1} {\varepsilon _u^j \times \mathit{\boldsymbol{P}}_u^j \times \mathit{\boldsymbol{Q}}_i^j}

$

(5)

其中, $\varepsilon _u^j$表示用户u对项目第j个特征的关注度.但为系统中每个用户学习εu需多引入M×f个参数, 这样不仅使

模型复杂度升高, 也不能保证相似用户对项目属性特征有相似的关注度.鉴于此, 引入用户共享矩阵W∈Rf×f, 用户新的偏好矩阵ω即可通过PTW得到, 这样只需多引入f2个参数.由于f一般比较小, 所以模型复杂度的提升特别小.此时, ${R'_{u, i}}$可通过公式(6)得到:

$

{{R'}_{u, i}} = \mathit{\boldsymbol{P}}_u^T\mathit{\boldsymbol{W}}{\mathit{\boldsymbol{Q}}_i}

$

(6)

虽然只是用了双线性计算方式, 却能挖掘出用户项目间复杂的交互关系, 获取用户更准确的偏好.同时, 由于所有用户共享矩阵W, 所以保证了相似用户对项目属性特征也有相似的关注度.

2.6 模型参数优化

在模型训练阶段, 首先随机初始化模型参数, 并以保证评分预测准确度的同时使得相似用户有相似的特征向量为目的, 构建公式(7)中的目标函数:

$

L(R, \mathit{\boldsymbol{P}}, \mathit{\boldsymbol{Q}}, \mathit{\boldsymbol{W}}) = \frac{1}{2}\sum\limits_{u = 1}^m {\sum\limits_{i = 1}^n {{I_{ui}}{{({{R'}_{u, i}} - {R_{u, i}})}^2}} } + \frac{\lambda }{2}\sum\limits_{u = 1}^m {\left\| {{\mathit{\boldsymbol{P}}_u} - \frac{1}{{|{S_u}|}}\sum\limits_{v \in {S_u}} {{\mathit{\boldsymbol{P}}_v}} } \right\|} _F^2 + \frac{{{\lambda _1}}}{2}||\mathit{\boldsymbol{P}}||_F^2 + \frac{{{\lambda _2}}}{2}||\mathit{\boldsymbol{Q}}||_F^2 + \frac{{{\lambda _3}}}{2}||\mathit{\boldsymbol{W}}||_F^2

$

(7)

其中, λ是规范化函数的系数.规范化函数约束用户的特征向量与其相似朋友特征向量的平均值距离尽可能小, 以此来保证用户与其相似朋友有相似的特征向量, λ1, λ2和λ3是正则项系数.目标函数构建后, 采用SGD对模型参数进行优化, Pu, Qi和W的一阶求导公式如下所示:

$

\left. \begin{array}{c}

\frac{{\partial L}}{{\partial {\mathit{\boldsymbol{P}}_u}}} = ({{R'}_{u, i}} - {R_{u, i}})\mathit{\boldsymbol{W}}{\mathit{\boldsymbol{Q}}_i} + \lambda \left( {{\mathit{\boldsymbol{P}}_u} - \frac{1}{{{S_u}}}\sum\limits_{v \in {S_u}} {{\mathit{\boldsymbol{P}}_v}} } \right) + {\lambda _1}{\mathit{\boldsymbol{P}}_u} - \sum\limits_{\{ v|v \in {S_u}\} } {\frac{\lambda }{{|{S_v}|}}\left( {{\mathit{\boldsymbol{P}}_v} - \frac{1}{{|{S_v}|}}\sum\limits_{w \in {S_v}} {{\mathit{\boldsymbol{P}}_w}} } \right), } \\

\frac{{\partial L}}{{\partial {\mathit{\boldsymbol{Q}}_i}}} = ({{R'}_{u, i}} - {R_{u, i}})\mathit{\boldsymbol{P}}_u^T\mathit{\boldsymbol{W}} + {\lambda _2}{\mathit{\boldsymbol{Q}}_i}, \\

\frac{{\partial L}}{{\partial \mathit{\boldsymbol{W}}}} = ({{R'}_{u, i}} - {R_{u, i}})\mathit{\boldsymbol{P}}_u^T{\mathit{\boldsymbol{Q}}_i} + {\lambda _3}\mathit{\boldsymbol{W}}

\end{array} \right\}

$

(8)

3 实验

3.1 数据集

实验采用文献[

表 1(Table 1)

Table 1 Experimental datasets statistics

表 1 实验数据集统计数据

名称

Filmtrust

CiaoDVD

用户

1 508

17 615

项目

2 071

16 121

评分

35 497

72 665

信任关系

1 632

22 483

Table 1 Experimental datasets statistics

表 1 实验数据集统计数据

为了验证各个模型的健壮性, 每次测试时, 预先将测试数据集划分为Warm集以及Cold集, 这主要根据训练数据集中每个用户的评分记录所得.具体过程如下:训练数据集中包含了用户及其评分记录, 若训练集中单个用户的评分记录大于等于5, 则该用户对应测试集中的评分记录为Warm集; 若训练集中单个用户的评分记录小于5, 那么该用户对应测试集中的评分记录为Cold集.

3.2 评估方法

为了评估各个模型的准确性和健壮性, 本文采用了5交叉验证法[.并在每次验证时采用均方根误差(root mean square error, 简称RMSE)和平均绝对误差(mean absolute error, 简称MAE)来对各模型预测评分的准确度性进行评估.假设测试集中的评分记录个数为X, RMSE和MAE计算方式见公式(9)和公式(10).

$

RMSE = \sqrt {\frac{{{{({{R'}_{u, i}} - {R_{u, i}})}^2}}}{X}}

$

(9)

$

MAE = \frac{{|{{R'}_{u, i}} - {R_{u, i}}|}}{X}

$

(10)

模型在训练阶段的收敛速度越快, 系统就可以更快地依据训练结果做出响应.由于所有模型的目标函数都是非凸函数, 只有局部最优解[, 所以为了比较各个模型在训练阶段的收敛速度, 在本文中约定:当模型的准确度不再提升时, 认为模型收敛达到局部最优解.模型参数优化的具体步骤见算法2.

算法 2.模型参数优化.

输入:随机初始化的模型参数;

输出:优化的模型参数.

1.  根据模型的目标函数在训练集上以给定学习率采用SGD更新参数;

2.  在测试集上, 根据公式(10)和公式(11)分别计算RMSE和MAE;

3.  Pre_RMSE=RMSE;

4.  While Pre_PMSE > RMSE

5.    执行第1行~第3行

由于模型的最终目的是使预测误差最小, 所以将RMSE的值作为模型收敛的指标:模型参数通过随机初始化得到后(算法输入), 在模型参数优化阶段, 首先在训练集上采用SGD更新模型参数(第1行), 然后在测试集上计算RMSE和MAE, 验证模型参数的可行性(第2行).不断重复这个步骤, 直至RMSE不再变小, 完成对参数的优化(第4行、第5行).我们将模型在训练集上更新参数的迭代次数作为模型收敛速度的指标, 对比各个模型的收敛速度.

3.3 对比实验及实验参数设置

本文采用以下几个对比实验.

①   BasicMF[:最简单形式的MF, 通过分解评分矩阵学习模型参数;

②   SocialRec[:共用用户特征矩阵同时分解评分矩阵和信任矩阵学习模型参数;

③   SocialMF[:约定用户与其信任人有相似的特征向量, 特征向量间的相似度取决于他们评分向量的PCC;

④   SocialReg[:规定用户与其信任人有相似的特征向量, 特征向量的相似度取决于用户对其信任人的信任度;

⑤   CUNE[:依据评分矩阵构建用户同质网络挖掘用户间的相似关系, 在模型训练阶段约定具有相似偏好的用户有相似的特征向量.

为保持和其他对比实验的一致性, 分别在特征向量维度f为5和10时验证各模型性能, 并进行大量实验找出各模型的最优参数, 除学习率均为0.01外, 其他参数配置见

表 2(Table 2)

Table 2 Parameter settings of different models

表 2 模型参数设置

模型名称

参数设置

SocialMF

λr=1, λu=λv=0.001

SocialRec

λc=0.1, λu=λv=λz=0.001

SocialReg

β=0.1, λ1=λ2=0.001

CUNE

λu=λv=λz=0.001, L=20, T=30, l=20, τ=5, k=50

BasicMF

λ1=λ2=0.01

ARMF

λ=0.5, λ1=λ2=λ3=0.001, τ=20, ρ=30,

t=2, δ=σ=2, k=10, d=f

Table 2 Parameter settings of different models

表 2 模型参数设置

3.4 实验结果分析

3.4.1 准确性分析

我们首先分析了所有模型在准确性方面的表现, 各模型在两个数据集的Warm集和Cold集上的准确度见

表 3(Table 3)

Table 3 Accuracy of ARMF comparing with other models over Warm users

表 3 在Warm集上各算法准确度对比

DataSet

Dim

Metrics

BasicMF

SocialRec

SocialReg

SocialMF

CUNE

ARMF

Filmtrust

5

RMSE

0.884 3

0.851 5

0.836 5

0.844 9

0.831 5

0.813 4

MAE

0.718 8

0.654 9

0.641 2

0.650 8

0.652 1

0.628 4

10

RMSE

0.883 9

0.856 5

0.843 2

0.843 7

0.829 9

0.811 1

MAE

0.719 0

0.660 6

0.648 7

0.649 6

0.651 1

0.626 4

CiaoDVD

5

RMSE

1.064 2

1.140 1

1.067 9

1.098 1

1.022 0

1.008 4

MAE

0.830 8

0.850 0

0.787 6

0.810 0

0.756 7

0.735 9

10

RMSE

1.063 7

1.142 5

1.066 0

1.133 7

1.060 0

1.008 0

MAE

0.830 6

0.853 7

0.787 7

0.828 6

0.785 3

0.733 7

Table 3 Accuracy of ARMF comparing with other models over Warm users

表 3 在Warm集上各算法准确度对比

表 4(Table 4)

Table 4 Accuracy of ARMF comparing with other models over Cold users

表 4 在Cold集上各算法准确度对比

Data set

Dim

Metrics

BasicMF

SocialRec

SocialReg

SocialMF

CUNE

ARMF

Filmtrust

5

RMSE

0.984 8

1.003 1

0.945 0

0.937 4

0.949 7

0.877 7

MAE

0.801 5

0.818 1

0.735 6

0.736 8

0.746 0

0.670 3

10

RMSE

0.991 5

0.996 3

0.965 2

0.947 3

0.950 2

0.865 9

MAE

0.810 1

0.807 7

0.763 3

0.742 5

0.754 2

0.661 1

CiaoDVD

5

RMSE

1.147 1

1.237 4

1.113 4

1.136 8

1.130 1

1.041 4

MAE

0.863 4

0.940 9

0.800 5

0.831 4

0.828 8

0.715 1

10

RMSE

1.147 2

1.240 6

1.110 4

1.134 1

1.131 3

1.035 3

MAE

0.865 5

0.943 5

0.803 9

0.831 5

0.836 1

0.709 0

Table 4 Accuracy of ARMF comparing with other models over Cold users

表 4 在Cold集上各算法准确度对比

从两个表中可以看到, 所有模型在特征向量维度f=5和f=10时性能保持相对一致.故我们以f=5为例对各个模型进行分析, 但分析结果同样适用于f=10.由于所有模型的目标函数都是最小化评分预测值与真实值之间的差平方, 故在实验中主要采用RMSE衡量模型的准确性, 并以此分析和比较各个模型.

如Warm集上的性能分析如下.

●  在FilmTrust数据集上, 由于BasicMF忽略了用户间的相似关系, 数据稀疏问题导致其学习到的用户特征向量不够准确, 所以在所有模型中表现最差; SocialRec, SocialReg, SocialMF和CUNE都是通过分解评分矩阵学习模型参数, 同时约束相似用户有相似的特征向量, 所以它们的表现结果相差不大;

●  但各模型在CiaoDVD数据集上的性能并没有和在FilmTrust数据集上的性能保持完全一致, 此时, SocialRec, SocialReg和SocialMF准确度不如BasicMF.这是因为这几个模型在训练模型参数时使用户与其信任人有相似特征向量, FilmTrust数据集中的信任关系可以近似看作相似关系, 而CiaoDVD数据集上直接将信任关系看作相似关系会引入比较多的噪音, 最终导致学习到的用户特征向量不能很好代表用户偏好;

●  由于CUNE挖掘的用户相似关系比直接将信任人看做相似朋友可靠, 所以CUNE在两个数据集中都较其他几个模型取得更好的结果;

●  ARMF相比其他模型准确度得到了明显提升, 主要因为ARMF在保证相似用户具有相似特征向量的同时分析用户对项目各个特征的关注度, 从而获取了用户更准确的偏好.

从Cold集上的准确性均不如其他模型, 其中, SocialRec最差.这是因为Cold集中用户评分记录较少, BasicMF很难学习到能够代表他们偏好的特征向量.此外, 这些用户的信任人也相对较少, 这就使得需要同时分解评分矩阵和信任矩阵的SocialRec准确性最差.SocialReg和SocialMF在学习模型参数时借助少量的信任关系缓解了冷启动问题.CUNE在Cold集上较其他模型的表现不如其在Warm集上优越, 这主要因为CUNE构建的网络中Cold集中用户不能与较多其他用户建立联系, 导致CUNE学习到的隐向量不能很好反映出他们与其他用户间的相似关系, 在学习最终参数时会引入噪音.这表明, 仅依据评分矩阵挖掘用户间的相似关系对冷启动问题不敏感.ARMF在评分矩阵的基础上引入信任关系构建相对较稠密的网络, 在一定程度上解决了冷启动问题.网络嵌入阶段挖掘到的用户间可靠的相似关系, 保证了训练阶段学习到的用户特征向量的准确性, 使得ARMF在所有模型中取得最高的推荐准确度.

从Warm集还是Cold集, 所有模型在FilmTrust数据集上都取得比CiaoDVD数据集上高的准确度.这主要因为FilmTrust数据集相比CiaoDVD数据集中每个用户平均评分个数更多, 而用户评分记录个数直接影响模型学习到的参数质量.

3.4.2 收敛速度分析

f=5, 右侧f=10.

图 4

Fig. 4

Fig. 4 Rate of convergence of models on FilmTrust

图 4 各模型在FilmTrust数据集上的收敛速度

图 5

Fig. 5

Fig. 5 Rate of convergence of models on CiaoDVD

图 5 各模型在CiaoDVD数据集上的收敛速度

从图中可以看出, 在f=5和f=10两种情况下, BasicMF在两个数据集上的收敛速度都最慢, 而ARMF的收敛速度是最快的.这主要是由于BasicMF在学习模型参数时忽略了用户之间的相关性, 数据稀疏导致其在每次循环中学到的参数变动较大, 难以达到平稳状态, 收敛速度比较缓慢; 其他模型通过约束用户向量之间的相似性缓解了数据稀疏问题, 使模型的收敛速度加快; ARMF收敛速度之所以能够大幅度优于其他RMF模型, 是因为注意力机制使ARMF能够快速分析出用户更准确的偏好.

此外, SocialRec, SocialReg, SocialMF和CUNE的收敛速度在两个数据集上的收敛速度表现不同.由于这4个模型都在训练模型参数时约束用户与其相似朋友有相似的特征向量, 根据f=5和f=10时, 它们在FilmTrust数据集上收敛速度相差都不大.但当f=5时, 它们在CiaoDVD数据集上的收敛速度相差较大.这主要是因为将CiaoDVD数据集中信任关系看作相似关系会引入较多噪音, 同时, 数据稀疏导致CUNE挖掘到的相似关系中也会存在较多噪音.噪音的存在, 使得收敛速度会对模型目标函数比较敏感, 不同的目标函数会有不同的优化过程, 使得它们的收敛速度也相差较大.但是当f=10时, 它们在CiaoDVD数据集上又有相近的收敛速度.这是因为特征向量维度的增加使得模型健壮性较好, 使得模型不再因为噪音的出现而使收敛速度对模型目标函数敏感.

对比4副图还可以发现, 所有模型在FlimTrust数据集上的收敛速度比其在CiaoDVD上的收敛速度快.这主要是因为FlimTrust数据集中用户平均评分记录个数比CiaoDVD数据集中的要多, 用户评分记录越多, 就更容易分析出其偏好, 也就加快了模型收敛速度.

3.4.3 注意力机制分析

为验证ARMF中注意力机制的有效性, 将ARMF去掉注意力机制之后的模型NEMF在两个数据集的Warm集和Cold集上做实验比较其和其他模型的准确性.当f=5时, 所有模型在4个数据集上的RMSE实验结果如f=10时能够得到同样的结论, 所以此处省略了对比实验图.

图 6

Fig. 6

Fig. 6 RMSE of models on four dataset

图 6 各模型在4个数据集上的RMSE

3.4.4 模型特点总结

在综合比较了各个模型的准确性以及收敛速度后, 为对实验中所有对比模型有更直观的了解, 对各模型的特点进行了如下总结(见

表 5(Table 5)

Table 5 Summary of different models' characteristics

表 5 各模型特点总结

模型

数据稀疏敏感度

冷启动敏感度

社交网络依赖性

模型收敛速度

推荐准确度

实用性

BasicMF

SocialRec

SocialMF

SocialReg

CUNE

ARMF

Table 5 Summary of different models' characteristics

表 5 各模型特点总结

●  由于BasicMF不依赖社交网络, 所以对数据稀疏和冷启动敏感度都比较强, 继而导致模型的推荐准确度很低, 收敛速度很慢.综合看来, BasicMF的实用性很弱;

●  SocialRec通过共享用户特征矩阵同时分解评分矩阵和信任关系矩阵, 虽然使模型收敛速度加快, 但是数据稀疏和冷启动问题导致其准确性与BasicMF接近, 其实用性也较弱;

●  SocialMF和SocialReg通过引入信任关系缓解数据稀疏和冷启动问题, 不仅加快了模型收敛速度, 也使模型准确度提升.但这两个模型将用户的信任人看作其相似朋友, 在引入噪音的同时, 丢失了可能存在的相似关系, 导致模型性能提升并不明显, 实用性不是很强;

●  CUNE依据评分矩阵构建网络并挖掘用户间的相似关系, 解决了数据稀疏问题, 提高了模型准确度和模型的收敛速度.但对于冷启动用户, 该算法无法学习到其准确的特征向量, 所以实用性不是很高;

●  ARMF利用信任关系作为评分矩阵的辅助信息挖掘用户间的相似关系, 解决了数据稀疏和冷启动问题, 同时具有最高的准确度和最快的收敛速度, 所以有较强的实用性.

4 结束语

为解决数据稀疏和冷启动问题给MF在训练模型时带来的困扰, 本文提出了融合用户信任关系和评分矩阵的基于注意力机制的规范化矩阵分解算法.ARMF在挖掘用户间可靠相似关系的同时, 能够分析出用户对项目不同特征的关注度, 获取用户更准确的偏好.在利用网络嵌入技术找用户之间的相似关系时, 为解决数据稀疏问题带来的困扰, ARMF在依据评分矩阵构建用户-项目异构网络时, 考虑了用户之间的信任关系对网络的影响, 同时解决了冷启动问题.另外, ARMF通过双线性方式引入了注意力机制, 在没有大幅增加模型复杂度的情况下, 获取了用户准确的偏好, 同时保证了相似用户之间有相似的特征向量, 提高了推荐准确度; 注意力机制的引入也使模型收敛速度大大加快.在两个真实数据集上的大量实验结果, 验证了ARMF的准确性和健壮性.

本文由人工智能赋能的数据管理、分析与系统专刊特约编辑李战怀教授、于戈教授和杨晓春教授推荐.

ciaodvd数据集的简单介绍_基于注意力机制的规范化矩阵分解推荐算法相关推荐

  1. ciaodvd数据集的简单介绍_人工智能进阶-CIFAR-10数据集介绍

    CIFAR-10 该数据集共有60000张彩色图像,这些图像是32*32,分为10个类,每类6000张图.这里面有50000张用于训练,构成了5个训练批,每一批10000张图:另外10000用于测试, ...

  2. 基于python 的电影推荐算法_基于python语言编程的矩阵分解电影推荐算法

    [实例简介]一种基于矩阵分解方法的电影推荐算法 [实例截图] [核心代码] import numpy as np from numba import cuda, float64, jit from s ...

  3. ciaodvd数据集的简单介绍_COCO数据集的简单介绍

    COCO通过大量使用Amazon Mechanical Turk来收集数据.COCO数据集现在有3种标注类型:object instances(目标实例), object keypoints(目标上的 ...

  4. 从原理到实现,详解基于朴素ML思想的协同过滤推荐算法

    作者丨gongyouliu 编辑丨Zandy 来源 | 大数据与人工智能(ID: ai-big-data) 作者在<协同过滤推荐算法>.<矩阵分解推荐算法>这两篇文章中介绍了几 ...

  5. mysql binlog update_mysql binlog 简单介绍与基于binlog数据恢复

    mysql binlog 简单介绍与基于binlog数据恢复 通过备份文件恢复 binlog(本节重点) binlog 二进制日志文件 show variables like 'log_bin'; 二 ...

  6. 新年美食鉴赏——基于注意力机制CBAM的美食101分类

    新年美食鉴赏--基于注意力机制CBAM的美食101分类 一.数据预处理 1.数据集介绍 2.读取标签 3.统一命名 4.整理图片路径 5.划分训练集与验证集 6.定义美食数据集 二.注意力机制 1.简 ...

  7. 可视化神经机器翻译模型(基于注意力机制的Seq2seq模型)

    可视化神经机器翻译模型(基于注意力机制的Seq2seq模型)   序列到序列模型是深度学习模型,在机器翻译.文本摘要和图像字幕等任务中取得了很大的成功.谷歌翻译在2016年底开始在生产中使用这样的模型 ...

  8. 《Effective Approaches to Attention-based Neural Machine Translation》—— 基于注意力机制的有效神经机器翻译方法

    目录 <Effective Approaches to Attention-based Neural Machine Translation> 一.论文结构总览 二.论文背景知识 2.1 ...

  9. NLP-Beginner任务三学习笔记:基于注意力机制的文本匹配

    **输入两个句子判断,判断它们之间的关系.参考ESIM(可以只用LSTM,忽略Tree-LSTM),用双向的注意力机制实现** 数据集:The Stanford Natural Language Pr ...

最新文章

  1. 有必要总结一下:matlab图像灰度调整——imadjust函数的使用
  2. 招聘 | ​浙江农林大学孙学鹏团队招聘事业编制科研人员
  3. 制药行业SAP项目里的那些MES系统
  4. 2013年第四届蓝桥杯C/C++ A组国赛 —— 第三题:埃及分数
  5. 深度学习之基于opencv和CNN实现人脸识别
  6. oracle 10g r2 for solaris x86,Oracle10g for Solaris9(x86)安装指南
  7. 【JS 逆向百例】某易支付密码 MD5+AES 加密分析
  8. 淘宝客程序 —— 突破了传统淘宝客程序对自动采集商品收费的模式
  9. levedb 导入 mysql_[LevelDB] 数据库3:循序渐进 —— 操作接口
  10. MOSS中如何自定义WebService
  11. 关于腾讯云服务器不能用公网ip访问的解决方案
  12. Django 的 之 视图
  13. CMake macOS安装
  14. Linux 录屏软件有哪些?
  15. 跨数据库分布式实时事务 - 基于RabbitMQ实时消息队列服务实现
  16. vue富文本使用详解
  17. python爬取微博恶评_用python写网络爬虫-爬取新浪微博评论
  18. 文华财经期货指标公式,期货交易用什么指标信号简单,准确率高,
  19. Gsensor驱动概述
  20. CSS角度单位(deg)

热门文章

  1. android+点击屏幕隐藏键盘,Android点击EditText文本框之外任何地方隐藏键盘的解决办法...
  2. 最大化_成本最小化与利润最大化
  3. 【PAT】A1090 Highest Price in Supply Chain
  4. ubuntu14.04、CentOS安装oracle 11g数据库【转载】
  5. struts2教程(5)--请求参数校验
  6. (仿头条APP项目)6.点击过的新闻列表文字变灰和下拉刷新与滚动加载新闻数据
  7. LeetCode19删除链表的倒数第N个节点20有效的括号
  8. 作业收缴系统使用手册(自写开源小系统)
  9. java camel from uri_java – 如何将Camel属性加载到Bean中?
  10. 从html导出带样式的excel,关于将HTML导出到Excel中时样式的问题