system: [SYSTEM]

user: 3. 研究思路与框架 3.1. 连续兴趣点推荐问题描述 为了更好地描述本文所提出的连续兴趣点推荐算法，本节定义了相关概念和关键数据结构，正式给出连续兴趣点推荐问题的规范定义。 令 U = { u 1 ， u 2 ， u 3 ， ⋯ ， u M } 为用户的集合，M代表用户的数量。 P = { y 1 ， y 2 ， y 3 ， ⋯ ， y N } 为兴趣点的集合，N代表兴趣点的数量，其中每个兴趣点主要有两个属性：兴趣点ID和兴趣点的经纬度坐标。 定义1 签到记录：用户在LBSN中的签到记录r由一个三元组 ( u ， y ， t ) 表示，表示用户u在t时刻访问了兴趣点y。 定义2 用户u的历史签到序列：每个用户所有签到记录的集合 R u = { r 1 ， r 2 ， r 3 ， ⋯ ， r T } ，其中 r T 表示用户u在T时刻的签到记录。 定义3 签到时间：本文主要考虑两种时间信息，一种是将一天划分为24小时，另一种是将一周划分为工作日和非工作日，0代表工作日，1代表非工作日，用符号 t ¯ 表示。 定义4 社交关系矩阵：为了将隐性社交信息和显性社交信息同时考虑在内，本文定义了一个社交关系矩阵 F ∈ ℕ M × M ，M表示用户的数量。具体表示如3.1节式(1)所示。 本文的关键符号及其含义如表1所示： Table 1 Key symbols and definition 变量 定义 u ， y ， U ， P 用户，兴趣点，用户集合，兴趣点集合 M ， N 用户数量，兴趣点数量 t ， t ¯ 签到时间，签到时间的形式化表示 r = ( u ， y ， t ) 签到记录 R u = { r 1 ， r 2 ， r 3 ， ⋯ ， r T } 用户u的历史签到序列 Δ t ， Δ g 时间差，距离差 F 社交关系矩阵 E f 社交关系特征的基矩阵 H f 社交关系特征的系数矩阵 e f 社交关系特征的隐向量 d f 社交关系特征的隐向量维数 η 社交关系显性因子 表1. 关键符号及定义 3.2. 基于非负矩阵分解的社交信息模型 对于位置社交网络的用户社交信息，如图1所示，一方面，受朋友之间显性社交关系的影响，人们经常会访问他们朋友推荐的兴趣点，用户朋友签到的兴趣点会影响用户的签到行为。另一方面，位置信息作为一个新的维度嵌入到社交网络中形成新的社交网络，社会联系将会扩大。例如，两个互不认识的用户访问了同一个地方，说明他们处于同一地理位置，而且二者签到相同的兴趣点数越多，二者行为偏好越相似，那么他们很可能被联系起来，这种社交关系被称为隐性社交关系。因此通过引入显性社交关系，可以提高那些签到数很少，但有丰富社交关系用户的推荐质量，同时缓解了推荐中的冷启动问题；通过引入隐性社交关系，可以提高那些签到数较少，同时社交关系匮乏用户的推荐质量。基于此，本文利用非负矩阵分解技术，将包含用户隐性和显性的社交关系图转化为低维稠密向量，以用于连续兴趣点推荐模型中。 图1. 社交网络图 1) 构建融合隐性和显性社交信息的特征矩阵 为构造社交信息特征矩阵，本文首先初始化一个社交矩阵 F ∈ ℕ M × M ，M为数据集中用户的数量，并将矩阵的初始值设置为0。矩阵元素 f i j 计算方法如式(1)所示，其中矩阵的对角元素为 N i ，表示用户i访问的兴趣点个数；矩阵其余元素 f i j 分两种情况进行统计，当用户i与用户j为陌生人，即不存在显性社交关系时， f i j = N i j ， N i j 表示用户i与j访问的相同兴趣点的个数；当用户i与用户j存在显性社交关系时， f i j = N i j + η ，其中 η 为正整数，表示显性关系影响因子。到此，构造出了同时包含隐性和显性社交信息的矩阵。 f i j = { N i ， i = j N i j ， i ≠ j 且 i 与 j 不 存 在 显 性 社 交 关 系 N i j + η ， i ≠ j 且 i 与 j 存 在 显 性 社 交 关 系 (1) 2) 非负矩阵分解 在上一小节中，本文将用户的社交网络图转化为特征矩阵的形式，由于数据集中用户数量多，构造的特征矩阵极为稀疏，所以这样的特征矩阵还不能直接用在连续兴趣点推荐模型中，需要对数据进行降维。观察到社交特征矩阵为非负矩阵，本文采用非负矩阵分解技术 [ 20 ]，来学习社交特征矩阵的特征表示。 本文采用非负矩阵分解的思路是将社交信息的特征矩阵 F ∈ ℕ M × M 分解成一个基矩阵 E f ∈ ℝ M × d f 和一个系数矩阵 H f ∈ ℝ d f × M ，如式(2)所示，其中 d f ≪ M 。其实质是将社交信息特征矩阵映射到一个低秩的特征向量空间，学习用户特征信息在该特征空间下的向量表达。分解后得到的低秩矩阵 E f 称为原始特征矩阵的基矩阵，基矩阵中的每一行都对应一个用户的社交信息，称为用户在该特征空间下的隐向量。由于 d f ≪ M ，就可以实现对原始矩阵的降维处理。 F ≈ E f H f (2) 非负矩阵分解只能去求原始特征的近似解，本文使用基于欧式距离的弗罗贝尼乌斯范数代价函数，如式(3)所示，去度量近似矩阵 E f H f 和原始矩阵F之间的相似度。 arg min ︸ W f ， H f 1 2 ‖ F − E f H f ‖ F 2 + ∂ f ρ f ‖ E f ‖ 1 + ∂ f ρ f ‖ H f ‖ 1 + ∂ f ( 1 − ρ f ) 2 ‖ E f ‖ F 2 + ∂ f ( 1 − ρ f ) 2 ‖ H f ‖ F 2 (3) 其中， E f ∈ ℝ M × d f 是对社交信息特征矩阵分解后得到的基矩阵， H f ∈ ℝ d f × M 是系数矩阵， d f 是 E f 中隐向量的维度， ‖   ⋅   ‖ F 表示矩阵的罗贝尼乌斯范数， ‖   ⋅   ‖ 1 是 L 1 范数， ∂ f 为正则化参数， ρ f 为 L 1 正则化占总正则化项的比例。基矩阵 E f 和系数矩阵 H f ，通过随机梯度下降进行求解。 该非负矩阵分解可以看作对社交信息中的特征进行聚类，从而挖掘所有用户在隐性和显性社交信息中的特征，并学习在该特征空间下的最佳向量表示。给定指定的用户u，完成分解后，该用户u在基矩阵 E f 中对应的行向量即为其隐向量，符号表示为 e f u 。 3.3. 基于LSTM的连续兴趣点推荐模型 近年来，循环神经网络(Recurrent Neural Network， RNN)在时序分析问题上取得了很大的成功 [ 21 ]。本文研究的连续兴趣点推荐问题，基于的位置社交网络数据是人类的移动行为轨迹，即用户在某个时刻访问了某个兴趣点，具有很强的时间序列性和空间序列性，因此本文考虑用循环神经网络进行连续兴趣点推荐，其网络结构对兴趣点签到序列进行建模可以有效提取到序列特征。但是用户的签到序列会很长，传统的RNN结构会出现梯度消失，无法处理长期依赖问题。长短时记忆单元(Long Short-Term Memory， LSTM) [ 22 ] 是为解决RNN梯度消失问题提出的。本文通过拓展一般的LSTM模型结构，将社交信息融入到LSTM的门控结构中，提出了一种融合隐性和显性社交信息的连续兴趣点推荐模型(Long Short-Term Memory with Social Information， SLSTM)。 1) 改进的LSTM模型 融合隐性和显性社交信息的连续兴趣点推荐模型SLSTM的基本架构如图2所示。在SLSTM模型中，其遗忘门、更新门和输出门的值不仅仅根据当前时刻的兴趣点和上一时刻的隐藏状态决定，还由加入当前时刻的上下文信息，主要包括社交信息、地理信息和时间信息来同时决定。本文用 X t 表示第t个时间步的上下文信息。具体地， X t = [ e f ， t ¯ ， Δ t ， Δ g ] ，其中 e f 是本文第3.2节基于非负矩阵分解得到的社交关系特征的隐向量。 t ¯ 是用户在t时刻签到时间的形式化表示，主要是签到时间的小时数以及工作日和非工作日的表示。 Δ t ， Δ g 表示本次签到与上一次签到的时间差和距离差，其中，签到序列的第一个时间步，时间差和距离差均用0表示。该模型将这4个特征进行向量拼接，输入到LSTM中，利用神经网络去学习这些输入特征的高阶和非线性的交互，这样就实现了社交信息、时空序列信息等异质信息的有效融合。 图2. SLSTM的基本框架 图3. 改进的LSTM结构 SLSTM模型的遗忘门 τ f ，更新门 τ u 和输出门 τ o 计算过程如式(4)-(6)所示： τ f = sigmoid ( W f h t − 1 + U f X t + V f y t + b f ) (4) τ u = sigmoid ( W u h t − 1 + U u X t + V u y t + b u ) (5) τ o = sigmoid ( W o h t − 1 + U o X t + V o y t + b o ) (6) 其中， h t − 1 表示上一时刻的隐藏状态， X t 表示当前时刻的上下文向量， y t 表示当前时刻兴趣点的向量表示。如图3所示，遗忘门、更新门和输出门的值不再仅仅根据当前时刻的输入 y t 和上一时刻的隐藏状态 h t − 1 决定，还加入当前时刻的上下文信息 X t 。遗忘门 τ f 输出向量的取值范围为 ( 0 ， 1 ) ，决定让网络忘记之前多少用户签到的信息；更新门 τ u 决定在细胞状态中，存放多少新的用户信息；输出门 τ o 决定记忆细胞 C t 输出的内容。 W f ， U f ， V f ， W u ， U u ， V u ， W o ， U o ， V o 是遗忘门、更新门和输出门的权重矩阵， b f ， b u ， b o 是对应的偏倚项。激活函数是sigmoid函数，取值范围为 ( 0 ， 1 ) ，计算公式如式(7)所示： sigmoid ( x ) = 1 1 + e − x (7) SLSTM计算t时刻的候选记忆细胞 C ˜ t 和记忆细胞 C t ，计算过程如式(8)和(9)所示： C ˜ t = tanh ( W c h t − 1 + U c X t + V c y t + b c ) (8) C t = τ u ∗ C ˜ t + τ f ∗ C t − 1 (9) 其中， C ˜ t 表示第t个时间步候选记忆细胞，是由当前时刻的输入 y t ，上一时刻的隐藏状态 h t − 1 和当前时刻的上下文信息 X t 共同决定。 C t 表示第t个时间步记忆细胞，用以保存网络的长期记忆，它是LSTM的关键部分，它由两部分构成，前半部分是由遗忘门 τ f 和第 t − 1 个时间步的记忆单元 C t − 1 组成，后半部分是由更新门 τ u 和候选记忆单元 C ˜ t 构成。 C ˜ t 的激活函数为tanh函数，取值范围为 ( − 1 ， 1 ) ，计算公式如式(10)所示： tanh ( x ) = e x − e − x e x + e − x (10) SLSTM使用第t个时间步记忆细胞 C t 和输出门 τ o 组合，得到当前时刻的隐藏状态 h t ，计算过程如式(11)所示： h t = τ o ∗ tanh ( C t ) (11) 其中， h t 是隐藏单元，由输出门 τ o 和记忆细胞 C t 共同决定，用以保存网络的短期记忆。 ∗ 表示矩阵逐元素对应相乘。 经过 T − 1 个时间步LSTM单元的前向传播后，模型输出第 T − 1 个时间步的隐藏单元 h T − 1 ，如图1所示，将 h T − 1 放入全连接层进行训练，输出与第T个时间步访问的兴趣点相关的向量 y ^ T 。为了得到用户在第T个时间步对每个兴趣点访问的概率，本文将连续兴趣点推荐看作一个多分类问题，在模型最后引入Softmax层，计算公式如式(12)和(13)所示，用以获取每个兴趣点的访问概率。 t e p = e y ^ T (12) y T h a t = e y ^ T ∑ j = 1 Q t e p j (13) 为了减少运行内存和计算时间，同时考虑到地理的邻近性，本文令 Q = 100 ，而不是令Q为所有兴趣点的数量，即选取与第 T − 1 个时间步在空间上邻近的前100个兴趣点作为候选兴趣点，进行兴趣点推荐。 y T h a t 表示用户在第T个时间步中，选取的100个兴趣点，每个兴趣点访问的概率向量。本文选取前k个概率最大的兴趣点，作为用户topk的推荐列表。 总的来说，SLSTM模型融合了兴趣点签到序列中的隐性和显性社交信息、时间信息，打破了序列推荐中较短序列带有的信息量有限的局限，从而能够在LSTM结构基础上更好地对兴趣点签到序列中隐含的用户偏好进行挖掘。 2) SLSTM模型训练 SLSTM模型的参数为 Ω = { W * ， U * ， V * ， b * } ， * ∈ { f ， u ， o ， c } ，其中 W * ， U * ， V * 是遗忘门 τ f ，更新门 τ u ，输出门 τ o 和候选记忆细胞 C ˜ t 的权重矩阵， b * 表示对应的偏倚项，模型训练的目标是优化以上所有参数，使得所有兴趣点签到序列里的每一次兴趣点的签到都能被预测到，这个目标体现在本文采用的Softmax损失函数中，如式(14)所示： arg min ︸ W * ， U * ， V * ， b * L ( y T h a t ， y T ) = ∑ i = 1 P ( − ∑ j = 1 Q y T i log y T i h a t ) i (14) 其中 y T 为one-hot编码，表示用户在第T个时间步真实访问的兴趣点，P表示训练样本的数量。为了达到上述目标，本文在模型训练阶段使用深度学习中经典的Adam优化算法 [ 23 ] 对模型参数进行更新。SLSTM模型具体的训练过程如算法1所示：