旅游路线推荐系统论文_旅游路线设计论文大纲

GraphSage是在论文Inductive Representation Learning on Large Graphs

William中提出的一种归纳式的embedding表示训练方法。

在上一篇所讲的GCN是transductive learning(直推式学习),即通过一个固定的图,直接训练每个节点的embedding。但是在很多图场景下,图节点是实时更新的,所以本文提出了inductive learning(归纳式学习)。不是在一个静态图上训练每个节点的embedding,而是通过训练得到一个由neighbood到embedding的映射关系(aggregator),使得结果可以仅通过邻居关系得到新加入的节点的embedding。

针对无监督学习,训练loss用的是pair-wise,认为有联系的2个节点间embedding应该是接近的,而没有联系的2个节点间embedding应该是远离的。(用内积表达的是余弦距离)

在训练数据集中有每个节点的feature information,然后用feature information来训练得到用户的节点,那如果没有feature information怎么办呢?用index来表示吗?

这篇论文做融合的总体框架还是GraphSage:从neighbor中抽取一定数量进行融合。但是与Graph有所区别在于不是随机抽取而是importance pooling. 以下说一下这篇论文的主要创新点:

这篇论文的总体框架其实很经典:

这篇文章是对上述NGCF所做的一个改进。文章发现NGCF中的feature transformation(W1, W2)和nonlinear activation( )操作不但使训练更困难,并且降低了准确度。这个的主要原因在于:GCN is originally proposed for node classification on attributed graph, where each node has rich attributes as input features; whereas in user-item interaction graph for CF, each node (user or item) is only described by a one-hot ID, which has no concrete semantics besides being an identifier. In such a case, given the ID embedding as the input, performing multiple layers of nonlinear feature transformation —which is the key to the success of modern neural networks — will bring no benefits, but negatively increases the difficulty for model training.

优化后的LightGCN的forward propagation layer:

注:在forward propagation中并没有加入self connection是因为layer embedding 的weighted sum操作其实包含了self connection。具体证明过程如下:

So inserting self-connection into A and propagating embeddings on it is essentially equivalent to a weighted sum of the embeddings propagated at each LGC layer.

这篇论文旨在解决2个问题:

So MGNN-SPred jointly considers target behavior and auxiliary behavior sequences and explores global item-to-item relations for accurate prediction.

本文算法框架:

构图算法:

Item Representation Learning:

for each node , one-hot representation ;

Sequence Representation Learning:

It was found that simple mean-pooling could already achieve comparable performance compared with attention mechanism while retaining low complexity.

It is self-evident that the contributions of auxiliary behavior sequence for the next item prediction are different in different situations.So a gated mechanism is designed to calculate the relative importance weight :

where denotes the one-hot representation of the ground truth.

这篇论文是解决sequential recommendation.主要贡献点在于:

首先在一个序列中用sliding window strategy取出子序列 ,然后对每个子序列如下图所示对item添加边

用external memory units去存储随时间变化的用户长期兴趣。用户随时间接触的序列为: .

则首先用multi-dimensional attention model生成query embedding:

其中 是sinusoidal positional encoding function that maps the item positions into position embeddings.

然后对memory unit作操作:

The superscript C denotes the fusion of long- and short-term interests.

表示短期内接触的item与所要求的item的关系远近

论文:

地址:

论文题目:《xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems》

为什么要介绍这篇论文呢,因为面试的时候面试官提到了这篇论文还要我推导公式,但是我自己忘了,太尬了,所以决定来复习下了。。。

在前面的文章里面,我们介绍过DeepFM,在这篇论文中,FM将不同特征进行了自动交叉,如果不用FM的话,就需要工作人员自己进行手工特征交叉任务。对于预测性的系统来说,特征工程起到了至关重要的作用。特征工程中,挖掘交叉特征是至关重要的。交叉特征指的是两个或多个原始特征之间的交叉组合。在广告系统中,CTR是一个重要的评价指标,而在ctr预估任务中,各种特征都是至关重要的,有时候多加一个特征都可以让整个广告的ctr提高一点。

但是在特征有限的系统中,该如何去挖掘那些潜在交叉特征呢?

挖掘交叉特征主要依靠人工提取,这种做法主要有以下三种缺点:

1)重要的特征都是与应用场景息息相关的,针对每一种应用场景,算法工程师们都需要首先花费大量时间和精力深入了解数据的规律之后才能设计、提取出高效的高阶交叉特征,因此人力成本高昂;

2)原始数据中往往包含大量稀疏的特征,例如用户和物品的ID,交叉特征的维度空间是原始特征维度的乘积,因此很容易带来维度灾难的问题;

3)人工提取的交叉特征无法泛化到未曾在训练样本中出现过的模式中。

基于以上的分析,我们就必须要设计一种能自动进行特征交叉任务的网络来替代手工制作的交叉特征,让模型的泛化能力更强。在deepfm,dcn中都有自动特征交叉的模块,值得一提的是,在这些模型中,特种的交叉是发生在bit级别的,也就是bit wise级别的特征交叉。什么是bit wise级别的特征交叉呢?

举个例子,比如特征1 = (a,b,c),特征2 = (d,e,f)

那么他们之间的bit wise的特征交叉就是f(w1*a*d, w2*b*e, w3*c*f)比如在DCN中:

可以看到在Cross Network中,特征向量的交叉是bit wise的交叉方式,就是每个level的x都和x0进行bit wise级别的交叉。

另一种特征交叉的方式有vector wise的交叉方式,这种交叉方式的表述为f(w(a*d, b*e,c*f)),可以看到这两个特征是先进行内积操作后才和权值矩阵进行运算的,所以是vector wise的交叉方式。

论文中还提到了两个定义:

explicitly VS implicitly

显式的特征交互和隐式的特征交互。以两个特征为例xi和xj,在经过一系列变换后,我们可以表示成 wij * (xi * xj)的形式,就可以认为是显式特征交互,否则的话,是隐式的特征交互。

老规矩,先上模型:

先看图c,xdeepfm是通过一个CIN将得到的向量concat后送到DNN中做ctr预估,这篇论文的关键就是整个CIN了,CIN全称是Compressed Interaction Network,下面来详细介绍下CIN是怎么做的。

为了实现自动学习显式的高阶特征交互,同时使得交互发生在向量级上,文中首先提出了一种新的名为压缩交互网络(Compressed Interaction Network,简称CIN)的神经模型。在CIN中,隐向量是一个单元对象,因此我们将输入的原特征和神经网络中的隐层都分别组织成一个矩阵,记为X0和 Xk。其中,每个Xk都是从上一个的Xk-1推导而来的:

ps:面试的时候这个公式没推导清楚,还是好好讲一下这个公式的计算过程吧。。

CIN的计算分为两个步骤,第一个是利用 和 来计算

我们看这个图:

我们要弄明白 的计算过程,就要先知道几个概念。

inner product:(a,b,c) . (1,2,3) = (1*a,2*b,3*c)

outer product: (a,b,c)? 。(1,2,3) =[ [ 1a,2a,3a] , [1b,2b,3b], [1c,2c,3c] ]

弄清楚这两个概念后就可以来看看这个的计算过程了。

首先,我们明确计算方向,我们是沿着D这个方向来计算外积的,所以计算出来的z的深度是D,这个是没有问题的。那么在沿着D上面的截面的计算方式就是我们上面说的outer product的方式来计算了。注意,计算D上每一个维度的切面的时候都是每个维度上单独计算的,举个例子:

?= [a,b,c], [1,2,3], [d,e,f]

?= [x,y,z], [4,5,6]

那么z的计算就为(先忽略w,后面再介绍w的使用)

我们沿着D这个维度,需要计算三个切面。

第一个切面:需要计算(a,1,d) 和(x,4)的外积:

计算的结果为:[[a*x,1*x,d*x] ,[a*4,1*4,d*4]] ,shape = 2*3

第二个切面:需要计算(b,2,e)和(y,5)的外积:

第三个切面同理,就不列出结果了。

三个切面计算玩,我们就得到了shape为3*2*3的 。

这个计算过程还可以用一张图形象的表示出来:

这里的计算跟上面是一样的,也可以计算每个d维向量的内积然后拼接成柱状体。对于每个切面,我们对这个切面进行加权求和得到一个值,权值矩阵W也成为卷积核的shape跟切面的shape大小一样,我们总共有D个切面,所以就有D个值,这样,我们就将一个三维向量转化成了一维向量:

在上面这张图中,我们可以清楚的知道,如果有 个卷积核w,我们就可以得到 个向量,也就是得到了下一个X: ,这个X的维度为 *D。

CIN的宏观框架可以总结为下图:

我们总共需要进行k个CIN过程的计算,得到k个一维向量。可以看出,它的特点是,最终学习出的特征交互的阶数是由网络的层数决定的,每一层隐层都通过一个池化操作连接到输出层,从而保证了输出单元可以见到不同阶数的特征交互模式。同时不难看出,CIN的结构与循环神经网络RNN是很类似的,即每一层的状态是由前一层隐层的值与一个额外的输入数据计算所得。不同的是,CIN中不同层的参数是不一样的,而在RNN中是相同的;RNN中每次额外的输入数据是不一样的,而CIN中额外的输入数据是固定的,始终是X0。

CIN计算交叉特征的方式是vector wise的,

x1,h的计算方式为:

x2,h的计算方式为:

xk,h的计算方式:

所以是vector-wise的计算方式。

这个结构其实跟DeepFM是一样的,左边是交叉特征的计算过程,右边是DNN部分。CTR计算方式为:

损失函数为:

我们今天介绍的xDeepFM模型,这个模型跟我们之前学习的DeepFM还有DCN是一个类型的网络,都是交叉特征+DNN组成,在xDeepFM中主要是CIN的推导是重点,只要掌握了CIN的计算过程就知道了这篇论文的核心:vector-wise方式的特征交叉。