summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/bjfuthesis/example/contents/mainbody.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/bjfuthesis/example/contents/mainbody.tex')
-rw-r--r--macros/latex/contrib/bjfuthesis/example/contents/mainbody.tex72
1 files changed, 37 insertions, 35 deletions
diff --git a/macros/latex/contrib/bjfuthesis/example/contents/mainbody.tex b/macros/latex/contrib/bjfuthesis/example/contents/mainbody.tex
index 2b8ff0cb50..54bbd920ca 100644
--- a/macros/latex/contrib/bjfuthesis/example/contents/mainbody.tex
+++ b/macros/latex/contrib/bjfuthesis/example/contents/mainbody.tex
@@ -1,6 +1,6 @@
\chapter{绪论}
\section{研究背景与意义}
-一直以来,电影推荐都是在线流媒体播放平台发展中的一个重要问题,做好电影推荐可以使用户能在海量电影中选择满足其偏好的电影,提高用户满意度,从而提高在线流媒体播放平台的流量转化率及购买率,并最终提高在线流媒体播放平台的经济收益。近年来,随着电影行业及互联网行业的不断发展,在线电影数量不断增加,用户在海量电影中选择满足其偏好的电影的难度不断上升,性能优异的推荐算法成为了必然要求。自从在线流媒体播放平台出现以来,人们便开始尝试利用推荐算法来提高平台流量转化率,出现了诸如协同过滤的推荐算法\cite{su2009survey}。但这些算法未能解决数据稀缺性及冷启动问题,并不能为在线流媒体播放平台提供良好的推荐性能。为此,人们尝试将辅助信息融入推荐算法中以解决数据稀缺性及冷启动问题\cite{sun2017collaborative},并提高推荐性能。
+一直以来,电影推荐都是在线流媒体播放平台发展中的一个重要问题,做好电影推荐可以使用户能在海量电影中选择满足其偏好的电影,提高用户满意度,从而提高在线流媒体播放平台的流量转化率及购买率,并最终提高在线流媒体播放平台的经济收益。近年来,随着电影行业及互联网行业的不断发展,在线电影数量不断增加,用户在海量电影中选择满足其偏好的电影的难度不断上升,性能优异的推荐算法成为了必然要求。自从在线流媒体播放平台出现以来,人们便开始尝试利用推荐算法来提高平台流量转化率,出现了诸如协同过滤的推荐算法\cite{he2017neural}。但这些算法未能解决数据稀缺性及冷启动问题,并不能为在线流媒体播放平台提供良好的推荐性能。为此,人们尝试将辅助信息融入推荐算法中以解决数据稀缺性及冷启动问题\cite{sun2017collaborative},并提高推荐性能。
知识图谱是一种结构化的语义知识库,被用于迅速提供对物理世界中的概念和相互关系的描述,为解决推荐问题提供了新的方法\cite{zou2020survey},近年来受到国内外研究人员的广泛关注,成为了当前的研究热点。知识图谱通过对复杂的原始数据进行加工、处理及整合,转化成简单可靠、清晰明了的“实体,关系,实体”三元组,汇聚了大量的知识信息,从而能实现基于知识信息的响应和推理。
@@ -11,7 +11,7 @@
对于海量的电影数据,为了实现准确地推荐给用户其感兴趣的电影,基于协同过滤的传统推荐算法是满足了不用户需求的,特别是对新注册用户,推荐的准确度无法得到保证。所以,本文旨在以知识图谱作为辅助信息,构建一个合适的电影推荐系统,并利用知识图谱中包含的丰富的辅助信息,最终实现一个电影推荐系统,为用户提供有效的、准确的电影推荐,从而提高用户满意度,提高平台收益。
\section{国内外研究现状}
\subsection{推荐系统研究现状}
-推荐系统由Jussi Karlgren于哥伦比亚大学在一份技术报告中以“数字书架”的名称被首次提及\cite{karlgren1990algebra},而后自1994年起被在SICS的Jussi Karlgren\cite{karlgren1994newsgroup}、由Pattie Maes于MIT领导的研究团队、位于Bellcore的Will Hill以及同样位于MIT的Paul Resnick大规模实现并在技术性报告及出版物大量出现,以上人员与GroupLens的工作被授予了2010年ACM软件系统奖。
+推荐系统由Jussi Karlgren于哥伦比亚大学在一份技术报告中以“数字书架”的名称被首次提及,而后自1994年起被在SICS的Jussi Karlgren、由Pattie Maes于MIT领导的研究团队、位于Bellcore的Will Hill以及同样位于MIT的Paul Resnick大规模实现并在技术性报告及出版物大量出现,以上人员与GroupLens的工作被授予了2010年ACM软件系统奖。
自从在90年代中期首批有关协同过滤的论文出现后推荐系统便成为了重要的研究领域。工业界与学术界出现了众多有关建设新的推荐系统的工作。由于该领域包含众多的研究问题及其能帮助用户解决在过多信息中提供个性化推荐的实际应用,因此研究人员对该领域的兴趣依旧很高。
@@ -41,7 +41,7 @@
事实学习分为有监督的事实学习、半监督的事实学习以及无监督的事实学习。有监督的事实学习通过人为标注的语料信息输入以及深度学习方法来完成知识图谱的构建,而半监督的事实学习方法使用启发式地自动标注文本,但缺陷是训练数据集中可能含有大量的噪声数据。而无监督的学习方法主要使用基于深度学习模型的自然语言处理(NLP)的方法,无须人为干预,由训练模型自动完成信息抽取、信息整合。随着深度学习算法的发展,目前基于无监督的事实学习逐渐成为主流\cite{李涓子2017知识图谱研究综述}。
-目前出现了诸多使用以上理论方法设计的知识图谱嵌入算法:基于翻译的TransE\cite{bordes2013translating}、TransH\cite{wang2014knowledge}、TransR\cite{lin2015learning}和基于语义分析的DistMult\cite{yang2014embedding}等。
+目前出现了诸多使用以上理论方法设计的知识图谱嵌入算法:基于翻译的TransE\cite{bordes2013translating}、TransH\cite{wang2014knowledge}、TransR\cite{lin2017learning}和基于语义分析的DistMult\cite{yang2014embedding}等。
目前,知识图谱在业界的应用已经取得了巨大成功\cite{曹倩2015知识图谱的技术实现流程及相关应用}:
@@ -53,7 +53,7 @@
\subsection{基于知识图谱的推荐系统研究现状}
由于传统的推荐系统无法解决稀缺性问题和冷启动问题,因此研究人员企图将辅助信息加入到推荐算法中以改善推荐性能。而这类辅助信息有社交网络、用户/物品属性、图像与上下文等。
-在数种类型的辅助信息中,知识图谱通常包含有更丰富的信息以及物品间的联系。图~\ref{fig:enhanced-recommendation}中说明了知识图谱提供丰富的信息与物品间的连接,有利于提高推荐结果的准确性、多样性和可解释性。知识图谱可以从以下三个方面提高推荐性能:
+在数种类型的辅助信息中,知识图谱通常包含有更丰富的信息以及物品间的联系。图\ref{fig:enhanced-recommendation}中说明了知识图谱提供丰富的信息与物品间的连接,有利于提高推荐结果的准确性、多样性和可解释性。知识图谱可以从以下三个方面提高推荐性能:
\begin{figure}
\includegraphics[width=\textwidth]{enhanced-recommendation}
\bicaption{基于知识图谱的电影推荐系统}{Knowledge graph enhanced movie recommendation system}\label{fig:enhanced-recommendation}
@@ -81,7 +81,7 @@ SHINE设计深度自编码器来嵌入语义网络,社交网络并进行推荐
(1)对推荐系统所需的数据进行采集和处理,使用“MovieLens 1M Dataset”作为数据集,此外还从IMDb及豆瓣网爬取了相关电影数据并进行处理,作为本文的研究对象。
-(2)根据文献\parencite{wang2018ripplenet}提出的算法,实现了基于知识图谱的涟漪网络推荐算法,该算法能根据用户的历史行为为用户进行电影推荐。此外,将涟漪网络算法与其他基于知识图谱的推荐算法(DKN\cite{wang2018dkn}、CKE\cite{zhang2016collaborative} 、PER\cite{yu2014personalized}、SHINE\cite{wang2018shine}、LibFM\cite{rendle2012factorization}和Wide\&Deep\cite{cheng2016wide}等)进行了性能比较。
+(2)根据文献\parencite{wang2018ripplenet}提出的算法,实现了基于知识图谱的涟漪网络推荐算法,此算法能根据用户的历史行为为用户进行电影推荐。不同于文献\parencite{wang2018ripplenet}中仅使用用户评分计算用户偏好,本文在用户偏好的计算过程中还结合了用户收藏,这在一定程度上缓解了冷启动问题并改进了推荐性能。此外,将涟漪网络算法与其他基于知识图谱的推荐算法(DKN\cite{wang2018dkn}、CKE\cite{zhang2016collaborative} 、PER\cite{yu2014personalized}、SHINE\cite{wang2018shine}、LibFM\cite{rendle2012factorization}和Wide\&Deep\cite{cheng2016wide}等)进行了性能比较。
(3)实现了一个基于知识图谱的电影推荐系统,该系统能够根据用户的历史行为(评分、收藏等)来为用户进行电影推荐。该系统分为管理员、未登录用户、普通登录用户。管理员能增加、修改和删除电影和普通用户;未登录用户能根据电影分类查看电影列表以及查看电影详情;普通登录用户除了能进行未登录用户的所有操作外,还能购买、收藏及为电影评分。
\section{论文结构}
@@ -125,7 +125,7 @@ SHINE设计深度自编码器来嵌入语义网络,社交网络并进行推荐
基于内容的推荐与基于协同过滤的推荐各有优缺点。潘多拉音乐所使用的基于内容推荐的推荐算法是根据物品本身的性质来进行推荐的,因此不需要用户信息就可以有较好的准确度。但该算法严重依赖物品本身的特性,因此局限性较大,推荐的内容都是与种子集相关的,推荐结果的多样性较低。而“终级fm”使用的协同过滤算法需要根据用户与物品的交互来生成推荐结果,因此需要大量的用户数据,存在数据稀缺性问题与冷启动问题。
\subsection{基于知识图谱的推荐系统}
-基于内容推荐与协同过滤推荐两者均存在一些局限性,为了提高推荐的准确性,解决传统推荐算法的数据稀缺性与冷启动问题,研究者将一些辅助信息加入至推荐算法中,通常这些辅助信息包括上下文信息、用户或物品的属性、图片和社交网络\cite{常亮2019知识图谱的推荐系统综述}\cite{王一鸣2018基于知识图谱的推荐技术研究及应用}。
+基于内容推荐与协同过滤推荐两者均存在一些局限性,为了提高推荐的准确性,解决传统推荐算法的数据稀缺性与冷启动问题,研究者将一些辅助信息加入至推荐算法中,通常这些辅助信息包括上下文信息、用户或物品的属性、图片和社交网络\cite{常亮2019知识图谱的推荐系统综述}\cite{秦川2020基于知识图谱的推荐系统研究综述}。
而随着知识图谱的发展,将知识图谱作为辅助信息来提高推荐系统的性能已经成为了热门的研究方向。将知识图谱作为辅助信息加入推荐算法的优点有:
@@ -135,7 +135,7 @@ SHINE设计深度自编码器来嵌入语义网络,社交网络并进行推荐
目前主要的基于知识图谱的推荐算法有基于嵌入的方法、基于路径的方法以及混合式方法:
-(1)基于嵌入的方法。基于嵌入的方法使用知识图谱的信息来完善实体的嵌入表示。为了将知识图谱中的信息添加至推荐算法中来辅助推荐,需要使用知识图谱嵌入表示算法(Knowledge Graph Embedding, KGE)表计算实体嵌入(实体嵌入指由知识图谱中的信息得到的在低维向量空间中的向量表示)。KGE算法有TransE\cite{bordes2013translating}、TransH\cite{wang2014knowledge}、TransR\cite{lin2015learning}和DistMult\cite{yang2014embedding}等。而推荐算法利用该嵌入表示来进行相关计算,从而对用户进行物品推荐。
+(1)基于嵌入的方法。基于嵌入的方法使用知识图谱的信息来完善实体的嵌入表示。为了将知识图谱中的信息添加至推荐算法中来辅助推荐,需要使用知识图谱嵌入表示算法(Knowledge Graph Embedding, KGE)表计算实体嵌入(实体嵌入指由知识图谱中的信息得到的在低维向量空间中的向量表示)。KGE算法有TransE\cite{bordes2013translating}、TransH\cite{wang2014knowledge}、TransR\cite{lin2017learning}和DistMult\cite{yang2014embedding}等。而推荐算法利用该嵌入表示来进行相关计算,从而对用户进行物品推荐。
(2)基于路径的方法\cite{lin2015modeling}\cite{guu2015traversing}\cite{toutanova2016compositional}。基于路径的方法将知识图谱视为异构信息网络。而推荐系统利用该异构信息网络寻找实体间的关系,从而完成推荐。
@@ -161,7 +161,8 @@ MongoDB是一个新兴的非关系型存储的分布式存储数据的数据库
Neo4j是一个具有高性能的图数据库,它将结构化的数据信息储存在网络上而不是存储在表中。它具有健壮和成熟的数据库的所有特点。虽然Neo4j是一个新兴的数据库,但它已在具有超过1亿节点、关系和属性的产品中得到了应用,充分体现了其高性能、高可靠性的特点。
-在本系统中,知识图谱的有关信息被存储在Neo4j中,由于知识图谱本身图的特性,这充分利用了Neo4j作为图数据库的特点,可以提供良好的性能支持。
+在本系统中,最终需存储的图结点有182011个,需存储的边有1241995条。如果将它们存储在传统的关系型数据库中,会因大量的连接查询导致极大的性能开销,表现为查询耗时久。Neo4j对图数据处理做了优化,因此查询等操作可以在较短的时间内完成,故本系统将知识图谱数据存储在Neo4j中而不是关系型数据库中。
+
\subsection{后端技术}
本系统使用Flask框架作为网站后端框架。Flask是一个Python编写的轻量级微框架。它具有轻量、便捷、可扩展等特点。系统使用Flask框架充分利用了其便捷、可扩展以及开发便捷的特点,与本系统要求相符。
@@ -176,7 +177,7 @@ Neo4j是一个具有高性能的图数据库,它将结构化的数据信息储
\label{ch:offline-recommendation}
\section{涟漪网络}
\subsection{架构}
-涟漪网络的总体架构如图~\ref{fig:ripplenet-framework}所示,图上方的知识图谱中展示了由用户交互产生的涟漪。涟漪网络以一个用户$u$和一个电影$v$作为输入,并输出用户$u$与电影$v$之间产生交互的概率。对输入用户$u$而言,其历史交互记录$V_u$是知识图谱中的种子集,而后沿着知识图谱中的关系边形成多个涟漪集$S_u^{k}\ (k=1, 2, \dots, H)$。第k个涟漪集是种子集$V_u$经过$k$跳得到的知识三元组。然后迭代地利用这些涟漪集与电影$v$的嵌入表示(黄色的块)计算出用户$u$对电影$v$的的响应(绿色的块),最后结合得到用户的最终嵌入表示(灰色的块)。最终,利用用户$u$与电影$v$的嵌入表示计算出用户$u$对电影$v$感兴趣的预测概率$y_{uv}$。
+涟漪网络的总体架构如图\ref{fig:ripplenet-framework}所示,图上方的知识图谱中展示了由用户交互产生的涟漪。涟漪网络以一个用户$u$和一个电影$v$作为输入,并输出用户$u$与电影$v$之间产生交互的概率。对输入用户$u$而言,其历史交互记录$V_u$是知识图谱中的种子集,而后沿着知识图谱中的关系边形成多个涟漪集$S_u^{k}\ (k=1, 2, \dots, H)$。第k个涟漪集是种子集$V_u$经过$k$跳得到的知识三元组。然后迭代地利用这些涟漪集与电影$v$的嵌入表示(黄色的块)计算出用户$u$对电影$v$的的响应(绿色的块),最后结合得到用户的最终嵌入表示(灰色的块)。最终,利用用户$u$与电影$v$的嵌入表示计算出用户$u$对电影$v$感兴趣的预测概率$y_{uv}$。
\begin{figure}
\includegraphics[width=\textwidth]{ripplenet-framework}
\bicaption{涟漪网络的总体架构}{The overall framework of the Ripple Network}\label{fig:ripplenet-framework}
@@ -186,7 +187,7 @@ Neo4j是一个具有高性能的图数据库,它将结构化的数据信息储
\includegraphics[width=\textwidth]{illustration-of-ripple-sets}
\bicaption{电影知识图谱中由“阿甘正传”激发的涟漪集}{Sets of ripples of “Forest Gump” in Knowledge Graph of movies}\label{fig:illustration-of-ripple-sets}
\end{figure}
-知识图谱常常含有丰富的事实信息与实体间的联系。比如,图~\ref{fig:illustration-of-ripple-sets}(图中不同颜色的圆圈表示不同跳数的涟漪集,越浅的蓝色代表种子集与该区域内实体的关联程度越低)中电影“阿甘正传”与“罗伯特·泽米吉斯”相连,它们之间的联系为“罗伯特·泽米吉斯”是电影“阿甘正传”的导演。而“回到未来”也与“罗伯特·泽米吉斯”相连。因此,如果一个用户与电影“阿甘正传”交互过,则他很有可能也对“回到未来”感兴趣。为了描述用户在知识图谱中分层次的潜在偏好集,递归定义用户$u$的$k$跳相关实体如下:
+知识图谱常常含有丰富的事实信息与实体间的联系。比如,图\ref{fig:illustration-of-ripple-sets}(图中不同颜色的圆圈表示不同跳数的涟漪集,越浅的蓝色代表种子集与该区域内实体的关联程度越低)中电影“阿甘正传”与“罗伯特·泽米吉斯”相连,它们之间的联系为“罗伯特·泽米吉斯”是电影“阿甘正传”的导演。而“回到未来”也与“罗伯特·泽米吉斯”相连。因此,如果一个用户与电影“阿甘正传”交互过,则他很有可能也对“回到未来”感兴趣。为了描述用户在知识图谱中分层次的潜在偏好集,递归定义用户$u$的$k$跳相关实体如下:
\textbf{定义1(相关实体集) } 给定交互矩阵$\Upsilon$与知识图谱$G$,则用户$u$的$k$跳相关实体集的定义为式\eqref{relevant-entities}。
@@ -204,7 +205,7 @@ Neo4j是一个具有高性能的图数据库,它将结构化的数据信息储
S_u^k = \{(h, r, t)|(h, r, t)\in G \text{且} h\in E^{k-1}_u\}, k = 1, 2, \dots, H\label{ripple-set}
\end{equation}
-“涟漪”这个词有两重意思:(1)对由多个雨点产生的真实涟漪的模拟,用户对电影的潜在兴趣集在知识图谱中由近及远地传递。这一过程如图~\ref{fig:illustration-of-ripple-sets}所示。(2)用户的潜在兴趣随着知识图谱中传递的跳数$k$的增大逐渐递减。图~\ref{fig:illustration-of-ripple-sets}中蓝色的变浅显示了潜在兴趣递减的过程。
+“涟漪”这个词有两重意思:(1)对由多个雨点产生的真实涟漪的模拟,用户对电影的潜在兴趣集在知识图谱中由近及远地传递。这一过程如图\ref{fig:illustration-of-ripple-sets}所示。(2)用户的潜在兴趣随着知识图谱中传递的跳数$k$的增大逐渐递减。图\ref{fig:illustration-of-ripple-sets}中蓝色的变浅显示了潜在兴趣递减的过程。
一个可能出现的问题是在跳数$k$增加的过程中涟漪集的大小可能过大。为了解决这个问题,注意到:
@@ -219,7 +220,7 @@ Neo4j是一个具有高性能的图数据库,它将结构化的数据信息储
\label{sec:osum}
传统的协同过滤算法是通过学习用户与物品间的潜在联系来完成推荐,而在涟漪网络算法中,这一过程是通过偏好扩散完成的:对每个用户,涟漪网络将他的过往兴趣视为知识图谱中的种子集,然后沿知识图谱中的路径不断地拓展用户的潜在兴趣集,进而得到按等级划分的关于候选物品的潜在兴趣集。我们利用现实生活中的由雨滴产生的涟漪在水面上扩散来模拟偏好扩散的过程,其中多个“涟漪”重叠形成基于知识图谱的用户偏好分布。
-如图~\ref{fig:ripplenet-framework},每部电影都有一个嵌入表示$v$,$v\in \mathbb{R}^{d}$,其中$\mathbb{R}$是实数集,$d$是嵌入表示向量的维数。给定电影的嵌入表示$v$以及用户$1$跳涟漪集$S_u^{1}$,可以利用电影$v$、$S_u^{1}$中的三元组中头节点$head_i$以及该三元组中的关系$r_i$来计算出电影$v$和实体$head_i$之间的相关度,如式\eqref{eq:item-entity-relevance}所示。
+如图\ref{fig:ripplenet-framework},每部电影都有一个嵌入表示$v$,$v\in \mathbb{R}^{d}$,其中$\mathbb{R}$是实数集,$d$是嵌入表示向量的维数。给定电影的嵌入表示$v$以及用户$1$跳涟漪集$S_u^{1}$,可以利用电影$v$、$S_u^{1}$中的三元组中头节点$head_i$以及该三元组中的关系$r_i$来计算出电影$v$和实体$head_i$之间的相关度,如式\eqref{eq:item-entity-relevance}所示。
\begin{equation}
p_i=softmax(v^TR_ih_i)=\frac{exp(v^TR_ih_i)}{\sum_{(h, r, t)\in S_u^1} exp(v^TRh)}\label{eq:item-entity-relevance}
@@ -292,9 +293,9 @@ Neo4j是一个具有高性能的图数据库,它将结构化的数据信息储
直接求解上式来得到参数$\Gamma$是不可能的,因此可以使用随机梯度下降算法递归地优化损失函数来求解模型参数,而后再计算参数$\Gamma$的损失函数的梯度,并根据采样得到的一小批数据反向传递,然后更新参数并最终得到参数$\Gamma$。
\section{分析}
\subsection{可解释性}
-可解释的推荐系统旨在阐释为什么用户会对一件物品感兴趣,这帮助提升用户对推荐结果的满意度以及对推荐系统的信任。对推荐结果的解释通常基于标签、语义分析等。因为涟漪网络探索用户基于知识图谱的兴趣,因此它提供了一种基于知识图谱中的关系路径来阐述推荐结果的全新方式。比如,在图~\ref{fig:illustration-of-ripple-sets}中,当用户对“幸福终点站”感兴趣,则该用户也可能对“荒岛余生”感兴趣。因为在知识图谱中,“汤姆·汉克斯”与“幸福终点站”相连,关系是演员,而“汤姆·汉克斯”与“荒岛余生”也相连,关系也是演员,换句话说,“荒岛余生”与“幸福终点站”有相同的演员。这便解释了用户对“幸福终点站”和“荒岛余生”同时感兴趣的原因。涟漪网络算法通过在知识图谱中寻找与用户交互过的电影(种子集)相连的物品,并不断扩散,最终确保推荐结果具有较高的准确性。
+可解释的推荐系统旨在阐释为什么用户会对一件物品感兴趣,这帮助提升用户对推荐结果的满意度以及对推荐系统的信任。对推荐结果的解释通常基于标签、语义分析等。因为涟漪网络探索用户基于知识图谱的兴趣,因此它提供了一种基于知识图谱中的关系路径来阐述推荐结果的全新方式。比如,在图\ref{fig:illustration-of-ripple-sets}中,当用户对“幸福终点站”感兴趣,则该用户也可能对“荒岛余生”感兴趣。因为在知识图谱中,“汤姆·汉克斯”与“幸福终点站”相连,关系是演员,而“汤姆·汉克斯”与“荒岛余生”也相连,关系也是演员,换句话说,“荒岛余生”与“幸福终点站”有相同的演员。这便解释了用户对“幸福终点站”和“荒岛余生”同时感兴趣的原因。涟漪网络算法通过在知识图谱中寻找与用户交互过的电影(种子集)相连的物品,并不断扩散,最终确保推荐结果具有较高的准确性。
\subsection{涟漪重叠}
-在涟漪网络中,一个可能的问题是涟漪集中的电影非常多,从而在偏好传递的过程中不可避免地导致用户的真实潜在偏好信息被稀释。然而,用户点击记录中不同的电影常常高度重叠(从种子集出发到达一部电影常常有不止一条路径),这在很大程度上避免了真实潜在偏好信息被稀释的问题。比如,在图~\ref{fig:illustration-of-ripple-sets}中,如果一个用户喜欢“阿甘正传”,则他也可能喜欢“荒岛余生”。在该知识图谱中,从“阿甘正传”到“荒岛余生”有两条路径:“阿甘正传-U.S.-荒岛余生”与“阿甘正传-汤姆·汉克斯-荒岛余生”,这正是涟漪重叠的表现。
+在涟漪网络中,一个可能的问题是涟漪集中的电影非常多,从而在偏好传递的过程中不可避免地导致用户的真实潜在偏好信息被稀释。然而,用户点击记录中不同的电影常常高度重叠(从种子集出发到达一部电影常常有不止一条路径),这在很大程度上避免了真实潜在偏好信息被稀释的问题。比如,在图\ref{fig:illustration-of-ripple-sets}中,如果一个用户喜欢“阿甘正传”,则他也可能喜欢“荒岛余生”。在该知识图谱中,从“阿甘正传”到“荒岛余生”有两条路径:“阿甘正传-U.S.-荒岛余生”与“阿甘正传-汤姆·汉克斯-荒岛余生”,这正是涟漪重叠的表现。
\section{测试}
\subsection{数据集}
本测试使用“MovieLens 1M Dataset”数据集。该数据集由电影信息、用户信息以及用户对电影的评分三部分组成。其中,含有电影数据3883条、用户数据6040条以及1000209条用户对电影的评分数据。因该数据集数据量适中,数据准确可靠,因此在推荐系统的性能测试中被广泛使用。
@@ -305,7 +306,7 @@ Neo4j是一个具有高性能的图数据库,它将结构化的数据信息储
DKN\cite{wang2018dkn}是由微软团队在WWW2018会议上发表的。它是一个主要针对新闻任务提出的框架,知识图谱用于辅助计算新闻标题的嵌入表示。DKN提出对新闻标题内每一个关键实体,在知识图谱内找到其实体嵌入和上下文嵌入。
-CKE\cite{zhang2016collaborative}是微软在KDD2016年发表的,其模型结构在原有系统过滤得到 $U$,$V$向量的基础上,将物品的嵌入与其他描述信息相结合,这些信息主要有:
+CKE\cite{zhang2016collaborative}是微软在KDD2016年发表的,其模型结构在原有系统过滤得到$U$,$V$向量的基础上,将物品的嵌入与其他描述信息相结合,这些信息主要有:
采用TransR算法计算知识图谱嵌入表示,知识图谱内每个实体嵌入表示被提取为物品的结构化向量信息。
采用SDAE模型得到物品描述性文本的文本性嵌入表示。
采用SCAE模型得到物品相关图像的视觉嵌入表示。
@@ -320,7 +321,7 @@ Wide\&Deep\cite{cheng2016wide}是一个结合线性路径的推荐模型。类
\subsection{测试步骤}
在涟漪网络中,设置跳数$H=2$。根据实验结果,较大的跳数几乎无法提高性能却会造成较大的计算开销。我们将数据划分为训练集、评估集与测试集,按照6:2:2的比例进行分配。实验进行5次,计算准确度以及AUC然后取平均值。
\subsection{结果}
-测试结果如表~\ref{tab:acc-auc}中所示,总体上涟漪网络算法的性能最佳,其次是Wide\&Deep算法,说明他们可以充分利用知识图谱中的有效信息来辅助推荐算法。而表现最差的是PER算法,这可能是因为手工定义的元路径在电影推荐方面效果较差。
+测试结果如表\ref{tab:acc-auc}中所示,总体上涟漪网络算法的性能最佳,其次是Wide\&Deep算法,说明他们可以充分利用知识图谱中的有效信息来辅助推荐算法。而表现最差的是PER算法,这可能是因为手工定义的元路径在电影推荐方面效果较差。
\begin{table}
\bicaption{在兴趣预测计算中的AUC和准确度}{AUC and ACC in interest prediction}\label{tab:acc-auc}
\begin{tabular}{lcl}
@@ -404,14 +405,14 @@ Wide\&Deep\cite{cheng2016wide}是一个结合线性路径的推荐模型。类
}
\end{verbatim}
-Neo4j数据库用于存储推荐算法使用的知识图谱,其中的数据结构可表示为:
+Neo4j数据库用于存储推荐算法使用的知识图谱,含有182011个结点、1241995条边,其数据结构可表示为:
\begin{verbatim}
- node: actor | country | director | film | genre | language
- | person_or_entity_appearing_in_film | rating | star
+ node: actor | country | director | film | genre | language
+ | person_or_entity_appearing_in_film | rating | star
| writer
relationship: actor.film | director.film | film.country
- film.director | film.genre | film.language | film.rating
- film.star | film.writer | genre.film
+ | film.director | film.genre | film.language | film.rating
+ | film.star | film.writer | genre.film
| person_or_entity_appearing_in_film.film | writer.film
edge = (node) - [relationship] -> (node)
\end{verbatim}
@@ -420,9 +421,9 @@ Neo4j数据库用于存储推荐算法使用的知识图谱,其中的数据结
\includegraphics{use-case}
\bicaption{系统功能用例图}{Use case diagram for the system }\label{fig:use-case}
\end{figure}
-本系统用户角色分为未登录用户、普通用户与管理员用户,其用例说明如图~\ref{fig:use-case}。
+本系统用户角色分为未登录用户、普通用户与管理员用户,其用例说明如图\ref{fig:use-case}。
\subsection{系统导航}
-本系统使用浮动侧边栏作为导航方式,如图~\ref{fig:admin-navigation}。点击侧导航栏右下角的固定的按钮可以将浮动侧边栏设为固定,再次点击后将取消固定。
+本系统使用浮动侧边栏作为导航方式,如图\ref{fig:admin-navigation}。点击侧导航栏右下角的固定的按钮可以将浮动侧边栏设为固定,再次点击后将取消固定。
\begin{figure}
\fbox{\includegraphics[width=.94\textwidth]{admin-navigation}}
\bicaption{系统侧导航栏(管理员)}{Side navigation panel of the system (for administrators)}\label{fig:admin-navigation}
@@ -433,7 +434,7 @@ Neo4j数据库用于存储推荐算法使用的知识图谱,其中的数据结
\noindent (1)接收随机的电影推荐
-未登录用户首页随机显示50部电影,如图~\ref{fig:anonymous-index}。
+未登录用户首页随机显示50部电影,如图\ref{fig:anonymous-index}。
\begin{figure}
\fbox{\includegraphics[width=.94\textwidth]{anonymous-index}}
\bicaption{未登录用户首页}{Index page for anonymous user }\label{fig:anonymous-index}
@@ -441,7 +442,7 @@ Neo4j数据库用于存储推荐算法使用的知识图谱,其中的数据结
\noindent (2)按分类查看电影
-未登录用户可以根据电影的分类来查看电影,如图~\ref{fig:anonymous-category}。
+未登录用户可以根据电影的分类来查看电影,如图\ref{fig:anonymous-category}。
\begin{figure}
\fbox{\includegraphics[width=.94\textwidth]{anonymous-category}}
\bicaption{未登录用户分类页面}{Category page for anonymous user }\label{fig:anonymous-category}
@@ -449,7 +450,7 @@ Neo4j数据库用于存储推荐算法使用的知识图谱,其中的数据结
\noindent (3)查看电影详情
-未登录用户可以查看电影详情,如图~\ref{fig:anonymous-details}。点击页面上的“添加至心愿单”和“购买”会跳转至登录界面。
+未登录用户可以查看电影详情,如图\ref{fig:anonymous-details}。点击页面上的“添加至心愿单”和“购买”会跳转至登录界面。
\begin{figure}
\fbox{\includegraphics[height=.7\textheight]{anonymous-details}}
\bicaption{未登录用户电影详情页面}{Movie details page for anonymous user }\label{fig:anonymous-details}
@@ -457,7 +458,7 @@ Neo4j数据库用于存储推荐算法使用的知识图谱,其中的数据结
\noindent (4)搜索电影
-未登录用户可以在应用栏右部的搜索框搜索电影,如图~\ref{fig:anonymous-search}。本系统支持模糊搜索,与此同时,随着用户搜索内容的不断输入,系统会在搜索框下方显示候选的匹配词条,方便用户直接点击查看,此外,用户也能通过回车跳转至完整的搜索结果页面。
+未登录用户可以在应用栏右部的搜索框搜索电影,如图\ref{fig:anonymous-search}。本系统支持模糊搜索,与此同时,随着用户搜索内容的不断输入,系统会在搜索框下方显示候选的匹配词条,方便用户直接点击查看,此外,用户也能通过回车跳转至完整的搜索结果页面。
\begin{figure}
\fbox{\includegraphics[width=.94\textwidth]{anonymous-search}}
\bicaption{未登录用户电影搜索界面(侧导航栏已固定)}{Movie search page for anonymous user (side navigation panel pinned)}\label{fig:anonymous-search}
@@ -483,7 +484,7 @@ Neo4j数据库用于存储推荐算法使用的知识图谱,其中的数据结
\noindent (3)评分
-已登录用户能在电影详情页面给电影评分。电影评分功能位于电影详情页面,如图~\ref{fig:general-details}所示。
+已登录用户能在电影详情页面给电影评分。电影评分功能位于电影详情页面,如图\ref{fig:general-details}所示。
\begin{figure}
\fbox{\includegraphics[width=.94\textwidth]{general-details}}
@@ -500,7 +501,7 @@ Neo4j数据库用于存储推荐算法使用的知识图谱,其中的数据结
\subsection{管理员用户}
\noindent (1)管理电影信息
-管理员能增加电影、删除电影与修改电影信息,如图~\ref{fig:admin-movie}所示。
+管理员能增加电影、删除电影与修改电影信息,如图\ref{fig:admin-movie}所示。
\begin{figure}
\fbox{\includegraphics[width=.94\textwidth]{admin-movie}}
\bicaption{管理电影页面}{Movie administration page}\label{fig:admin-movie}
@@ -512,20 +513,21 @@ Neo4j数据库用于存储推荐算法使用的知识图谱,其中的数据结
\noindent (3)管理知识图谱
-管理员能增加、删除、修改以及查找知识图谱中的结点与关系,如图~\ref{fig:admin-knowledge-graph}所示。该界面中的结点及关系可以以动态的方式呈现,同时支持以填写选项的方式以及使用Cypher语句的方式来增加、删除、修改以及查找知识图谱中的结点与关系。当鼠标悬浮于某一节点或关系之上时,将显示有关这一节点或关系的有关信息。
+管理员能增加、删除、修改以及查找知识图谱中的结点与关系,如图\ref{fig:admin-knowledge-graph}所示。该界面中的结点及关系可以以动态的方式呈现,同时支持以填写选项的方式以及使用Cypher语句的方式来增加、删除、修改以及查找知识图谱中的结点与关系。当鼠标悬浮于某一节点或关系之上时,将显示有关这一节点或关系的有关信息。
\begin{figure}
\fbox{\includegraphics[width=.94\textwidth]{admin-knowledge-graph}}
\bicaption{管理知识图谱页面}{Knowledge graph administration page}\label{fig:admin-knowledge-graph}
\end{figure}
\section{电影推荐流程}
-本系统的推荐流程分为离线推荐与实时推荐,如图~\ref{fig:recommendation-procedure}所示。
+本系统的推荐流程分为离线推荐与实时推荐,如图\ref{fig:recommendation-procedure}所示。
\begin{figure}
\includegraphics{recommendation-procedure}
\bicaption{电影推荐流程}{Movie recommendation procedure }\label{fig:recommendation-procedure}
\end{figure}
-其中,离线推荐使用第\ref{ch:offline-recommendation}章中所述的涟漪网络算法,而实时推荐机制作为补充,描述如下:
+其中,离线推荐使用第\ref{ch:offline-recommendation}章所述的涟漪网络算法,此算法是基于文献\parencite{wang2018ripplenet}实现的。不同于文献\parencite{wang2018ripplenet}中仅使用用户评分计算用户偏好,本推荐系统在用户偏好的计算过程中还结合了用户收藏,这在一定程度上缓解了冷启动问题并改进了推荐性能。
+此外,本推荐系统还结合了实时推荐机制作为补充,描述如下:
(1)离线推荐服务器定期运行涟漪网络算法。离线推荐服务器从MongoDB数据库服务器获取用户信息与电影评分、电影是否加入心愿单等数据以及从Neo4j数据库服务器获取知识图谱数据信息。然后执行涟漪网络算法。最后离线推荐服务器将计算得到的各用户推荐列表存入MongoDB数据库中,等待用户访问时将该结果推荐给用户。
@@ -533,7 +535,7 @@ Neo4j数据库用于存储推荐算法使用的知识图谱,其中的数据结
上述步骤中,(1)中的离线推荐准确度高,但算法运算时间长,无法做到即时响应用户请求。(2)中的实时推荐方法准确度低,但算法运算快,可以做到实时响应请求并即时发出响应。两者相互补充组成了本系统的电影推荐算法。
\section{系统安全性}
-本系统对已登录普通用户与管理员在前后端交互过程中使用JSON网络令牌(JSON Web Token, JWT)实现授权与认证(Authorization and Authentication),以此保证系统的安全性,本系统的总体安全性设计如图~\ref{fig:jwt}所示。
+本系统对已登录普通用户与管理员在前后端交互过程中使用JSON网络令牌(JSON Web Token, JWT)实现授权与认证(Authorization and Authentication),以此保证系统的安全性,本系统的总体安全性设计如图\ref{fig:jwt}所示。
\begin{figure}
\includegraphics{jwt}
@@ -555,7 +557,7 @@ Neo4j数据库用于存储推荐算法使用的知识图谱,其中的数据结
(1)使用基于Scrapy框架的爬虫从IMDb和豆瓣网上爬取了3684条电影数据。其中,从IMDb爬取了3494条电影数据,从豆瓣网爬取了190条电影数据(由于豆瓣网限制了每IP访问量故爬取的数据较少)。这些电影数据包括电影封面图片、电影情节介绍、电影预告片图片、电影演员列表、导演以及剧本作家等信息。
-(2)根据文献\parencite{wang2018ripplenet}实现了基于知识图谱的涟漪网络推荐算法,通过使用“MovieLens 1M Dataset”数据集以及从IMDb和豆瓣网上爬取的电影数据,实现了基于用户心愿单和用户评分并以知识图谱为辅助信息的推荐算法。并对实现的推荐算法进行了试验,计算了其AUC和准确度两个关键的性能指标,将该指标与DKN\cite{wang2018dkn}、CKE\cite{zhang2016collaborative}、PER\cite{yu2014personalized}、SHINE\cite{wang2018shine}、LibFM\cite{rendle2012factorization}以及Wide\&Deep\cite{cheng2016wide}算法的进行了对比。并以此发现,涟漪网络算法的性能最优。
+(2)根据文献\parencite{wang2018ripplenet}实现了基于知识图谱的涟漪网络推荐算法,通过使用“MovieLens 1M Dataset”数据集以及从IMDb和豆瓣网上爬取的电影数据,实现了基于用户心愿单和用户评分并以知识图谱为辅助信息的推荐算法。不同于文献\parencite{wang2018ripplenet}中仅使用用户评分计算用户偏好,本文在用户偏好的计算过程中还结合了用户收藏,这在一定程度上缓解了冷启动问题并改进了推荐性能。并对实现的推荐算法进行了实验,计算了其AUC和准确度两个关键的性能指标,将该指标与DKN\cite{wang2018dkn}、CKE\cite{zhang2016collaborative}、PER\cite{yu2014personalized}、SHINE\cite{wang2018shine}、LibFM\cite{rendle2012factorization}以及Wide\&Deep\cite{cheng2016wide}算法的进行了对比。并以此发现,涟漪网络算法的性能最优。
(3)基于涟漪网络算法实现了基于知识图谱的电影推荐系统。该系统为未登录用户提供按分类查看电影、查看电影详情的功能;为普通用户提供电影推荐、按分类查看电影、查看电影详情、电影评分、将电影加入心愿单以及购买电影功能;为管理员提供增加、删除、修改、查找电影及用户的功能。同时使用JSON网络令牌、HTTPS以及哈希化密码等手段保障系统的安全性。
\section{工作展望}
@@ -567,6 +569,6 @@ Neo4j数据库用于存储推荐算法使用的知识图谱,其中的数据结
\noindent (2)涟漪网络算法有待进一步改进
-涟漪网络算法目前仅适用于离线推荐,而无法用于实时推荐,这使它的适用场景受到了限制。未来可考虑改造该算法,使其能满足实时推荐的需求。
+尽管涟漪网络算法相比于传统的推荐算法在准确度上有所提升,但涟漪网络算法目前仅适用于离线推荐,而无法用于实时推荐,这使它的适用场景受到了限制。未来可考虑改造该算法,使其能满足实时推荐的需求。
对于以上提及的问题,未来还需要更深入地学习有关知识图谱、推荐算法、深度学习的有关知识,对系统进行改进,从而使其更完善。