玖兰卅麻
论文:论文地址: 论文题目:《Session-based Recommendation with Graph Neural Networks》SR-GNN github: 基于会话的推荐一般是将序列会话建模,将整个session进行编码,变成一个隐向量,然后利用这个隐向量进行下一个点击预测。但是这种方法没有考虑到item直接复杂的转换(transitions)关系,也就是item之间在点击的session中除了时间顺序外还有复杂的有向图内的节点指向关系,所以之前的方法不足以很好的对点击序列进行建模。 现有基于会话的推荐,方法主要集中于循环神经网络和马尔可夫链,论文提出了现有方法的两个缺点: 1)当一个session中用户的行为数量十分有限时,这些方法难以获取准确的用户行为表示。如当使用RNN模型时,用户行为的表示即最后一个单元的输出,论文认为只有这样并非十分准确。 2)根据先前的工作发现,物品之间的转移模式在会话推荐中是十分重要的特征,但RNN和马尔可夫过程只对相邻的两个物品的 单向转移关系 进行建模,而忽略了会话中其他的物品。 为了克服上述缺陷,本文提出了用图神经网络对方法对用户对session进行建模:下面具体介绍怎么进行图序列推荐 V = {v1,v2...vm}为全部的item,S = { }为一个session里面按时间顺序的点击物品,论文的目标是预测用户下一个要点击的物品vs,n+1,模型的任务是输出所有item的预测概率,并选择top-k进行推荐。 我们为每一个Session构建一个子图,并获得它对应的出度和入度矩阵。 假设一个点击序列是v1->v2->v4->v3,那么它得到的子图如下图中红色部分所示:另一个例子,一个点击序列是v1->v2->v3->v2->v4,那么它得到的子图如下:同时,我们会为每一个子图构建一个出度和入度矩阵,并对出度和入度矩阵的每一行进行归一化,如我们序列v1->v2->v3->v2->v4对应的矩阵如下:这个矩阵里面的值是怎么计算的呢?下面讲一下: 看左边的出度矩阵,第一行为 0 1 0 0 ,代表着v1->v2,因为v1,只有一个指向的item,所以为1;看第二行,0 0 1/2 1/2,因为v2有指向v3和v4的边,所以进行归一化后每一个值都变成了1/2。入度矩阵的计算方法也是一样的,就不再说了。 本文采用的是GRU单元进行序列建模,将图信息嵌入到神经网络中,让GRU充分学习到item之间的关系,传统的GRU只能学到相邻的两个物品之间的关系,加入图信息后就能学到整个session子图的信息。 计算公式如下:为了刚好的理解这个计算过程,我们还是使用之前那个例子:v1->v2->v3->v2->v4来一步步分析输入到输出的过程。 (1) 是t时刻,会话s中第i个点击对应的输入, 是n✖️2n的矩阵,也就是会话子图的完整矩阵,而 是其中一行,即物品vi所对应的那行,大小为1✖️2n,n代表序列中不同物品的数量。 如果按照例子来看,如果i取2,那么 为 [0 0 1/2 1/2 1/2 0 1/2 0] 进一步的,可以把 :拆解为[ , ] (2) 可以理解为序列中第i个物品,在训练过程中对应的嵌入向量,这个向量随着模型的训练不断变化,可以理解为隐藏层的状态,是一个d维向量。 (3) H是d*2d的权重向量,也可以看作是一个分块的矩阵,可以理解为H=[Hin|Hout],每一块都是d*d的向量。 那么我们来看看计算过程: 1)[ ..., ] ,结果是d * n的矩阵,转置之后是n*d的矩阵,计作 2) : H相当于[ ],即拆开之后相乘再拼接,因此结果是一个1 * 2d的向量。 上面就是完整的第i个点击的输入的计算过程,可以看到,在进入GRU计算之前,通过跟As,i矩阵相乘,把图信息嵌入到了神经网络中取,加深了神经网络学习到的item之间的交互信息。 此外,就是GRU的计算过程了,跟原始的GRU不一样的地方在于输入从xt变成了嵌入了图信息的as,i。 通样也有更新门和重置门,计算方法跟原始GRU一模一样。 这里的 其实就是相当于原始gru中的 ,只不过在SR-GNN里面,进行一轮运算的时候i是没有变化,相当于每个物品单独进去GRU进行计算,得到自己的向量,也就是说在GRU的计算过程中, 是不断变化的,看一下源码更易于理解: hidden就是公式里面的 ,在gru的每一个step计算中都会进行更新,这里我有个疑问,如果所有item的hidden都更新的话,那么应该是整个序列中所有的item并行进入GRU中进行计算,每一个step都得到自己的vector,当每个item的vector更新后,下一个step就重新根据新的 计算 ,接着计算下一个step。 计算过程大概就是下面这样:这里有四个GRU并行计算,没次更新自己的hidden状态,输入则考虑所有的hidden和图信息。 从上面的图看来,每一个item都要进行T个step得到自己的item-vec,所以经过T个step后,我们就得到了序列中所有item的向量,即:图中用蓝色框框画出来的向量,有了这些向量后,我们怎么得到预测结果呢?这就引入了下一个问题。 观察上面的模型结构,我们看到attention,没错,我们认为一个session中的这些item-vec并不都对预测结果产生影响,有些item对结果影响很大,有些影响很小,所以我们进行了加权求和。同时,论文认为session对最后一个item-vec,s1=vn是重要的,所以单独拿出来:公式(6)就是简单的attention操作,其实从公式上来看就是计算每个vi跟最后一个向量vn的权值,然后进行加权求和。 在最后的输出层,使用sh和每个物品的embedding进行内积计算,这里vi应该是item的embedding层出来的向量,而不是后面一直更新的hidden:最后通过一个softmax得到最终每个物品的点击概率: 损失函数为交叉熵损失函数:从数据上来看,SR-GNN超过了经典的GRU4REC,这也说明了图信息的嵌入能带来更好的推荐效果。 本论文很巧妙的将图信息嵌入的神经网络中,更高地让GRU学习到每个item之间的关系,不再局限于相邻的物品之间进行学习。近年来,图神经网络的思想和方法屡屡被用在推荐系统中,学好图神经网络应该是推荐系统的下一个热潮。
糯米团子05
一个程序的核心在于算法。比如说打开一个软件和运行一个软件的速度在计算机硬件性能相同情况下,软件的算法起到了几近决定性作用,所有的计算机软件和硬件的编程都是需要算法的,就算一个hello world程序虽然我们编时候没有用到算法但是在编译他和运行再屏幕显示的时候就是算法了。算法是计算机乃至自然界的核心,如果知道人脑的算法,就可以制造出人工智能的软件。算法太多,也就不全部列举出来了,具体的还有用法,你自己看下书或去网上找下,都应该可以找到的:比如:贪心算法,蚁群算法,遗传算法,进化算法,基于文化的遗传算法,禁忌算法,蒙特卡洛算法,混沌随机算法,序贯数论算法,粒子群算法,模拟退火算法等等。
下面的都是毕业论文范文,有用的话,请给我红旗LMX2350/LMX2352芯片简介及电路设计基于LMX2306/16/26 芯片简介及应用电路设计 基于LT55
1.确定自己的主题 2.根据自己的主题,搜集大量的有用的材料 3.了解论文的格式 附:论文格式 广义来说,凡属论述科学技术内容的作品,都称作科学著述,如原始论著
德语毕业论文不难的,主要是题目要定好,不要千篇一律。之前也是弄了好久没过,还是上届学长给的莫文网,相当靠谱的说中国德语学习者篇章写作中的词汇错误分析中国德语专业
好的,,模糊神经网络算法论文我给你做.
深度神经网络对于问题的抽象建立在我们可以通过合适的神经网络架构构造一个通用的函数逼近,使得我们可以从输入样本空间映射到目标样本空间。这一听起来简单的任务在实际构