首页

> 期刊论文知识库

首页 期刊论文知识库 问题

排序算法的研究论文

发布时间:

排序算法的研究论文

在CTR预估中,为了解决稀疏特征的问题,学者们提出了FM模型来建模特征之间的交互关系。但是FM模型只能表达特征之间两两组合之间的关系,无法建模两个特征之间深层次的关系或者说多个特征之间的交互关系,因此学者们通过Deep Network来建模更高阶的特征之间的关系。因此 FM和深度网络DNN的结合也就成为了CTR预估问题中主流的方法。有关FM和DNN的结合有两种主流的方法,并行结构和串行结构。两种结构的理解以及实现如下表所示: 今天介绍的NFM模型(Neural Factorization Machine),便是串行结构中一种较为简单的网络模型。 我们首先来回顾一下FM模型,FM模型用n个隐变量来刻画特征之间的交互关系。这里要强调的一点是,n是特征的总数,是one-hot展开之后的,比如有三组特征,两个连续特征,一个离散特征有5个取值,那么n=7而不是n=3.                      可以看到,不考虑最外层的求和,我们可以得到一个K维的向量。对于NFM模型,目标值的预测公式变为:                      其中,f(x)是用来建模特征之间交互关系的多层前馈神经网络模块,架构图如下所示: mbedding Layer 和我们之间几个网络是一样的,embedding 得到的vector其实就是我们在FM中要学习的隐变量v。 Bi-Interaction Layer 名字挺高大上的,Bi是Bi-linear的缩写,这一层其实是一个pooling层操作,它把很多个向量转换成一个向量,,其实它就是计算FM中的二次项的过程,因此得到的向量维度就是我们的Embedding的维度。最终的结果是:                      Hidden Layers就是我们的DNN部分,将Bi-Interaction Layer得到的结果接入多层的神经网络进行训练,从而捕捉到特征之间复杂的非线性关系。 在进行多层训练之后,将最后一层的输出求和同时加上一次项和偏置项,就得到了我们的预测输出:                      NFM模型将FM与神经网络结合以提升FM捕捉特征间多阶交互信息的能力。根据论文中实验结果,NFM的预测准确度相较FM有明显提升,并且与现有的并行神经网络模型相比,复杂度更低。 NFM本质上还是基于FM,FM会让一个特征固定一个特定的向量,当这个特征与其他特征做交叉时,都是用同样的向量去做计算。这个是很不合理的,因为不同的特征之间的交叉,重要程度是不一样的。因此,学者们提出了AFM模型(Attentional factorization machines),将attention机制加入到我们的模型中。 论文: Neural Factorization Machines for Sparse Predictive Analytics

Abstract: Sorting is an important basis for computer programming, computer technology is an important application, the computer has turned out many of the output are some rules in an orderly manner in accordance with the output. This data structure from the point of view, a simple analysis of the insertion sort, sub-rule sort, quick sort, such as sorting algorithms for some commonly-used algorithm and the realization of the process, the various algorithms to calculate the running time and operating efficiency, and object-oriented language java algorithm is given some simple examples of code and procedures, through the example of the operation procedures and analysis, from the comparison of some aspects of the performance of different sorting algorithm, for our learning algorithm and the actual programming will certainly help.

在计算广告和推荐系统中,CTR预估(click-through rate)是非常重要的一个环节,判断一个商品的是否进行推荐需要根据CTR预估的点击率来进行。在进行CTR预估时,除了单特征外,往往要对特征进行组合。对于特征组合来说,业界常用的方法有人工特征工程 + LR(Logistic Regression)、GBDT(Gradient Boosting Decision Tree) + LR、FM(Factorization Machine)和FFM(Field-aware Factorization Machine)模型。最近几年也出现了很多基于FM改进的方法,如deepFM,FNN,PNN,DCN,xDeepFM等。 FM(Factorization Machine)主要是为了解决数据稀疏的情况下,特征怎样组合的问题。已一个广告分类的问题为例,根据用户与广告位的一些特征,来预测用户是否会点击广告。数据如下:(本例来自美团技术团队分享的paper) clicked是分类值,表明用户有没有点击该广告。1表示点击,0表示未点击。而country,day,ad_type则是对应的特征。对于这种categorical特征,一般都是进行one-hot编码处理。 将上面的数据进行one-hot编码以后,就变成了下面这样 : 因为是categorical特征,所以经过one-hot编码以后,不可避免的样本的数据就变得很稀疏。举个非常简单的例子,假设淘宝或者京东上的item为100万,如果对item这个维度进行one-hot编码,光这一个维度数据的稀疏度就是百万分之一。由此可见, 数据的稀疏性 ,是我们在实际应用场景中面临的一个非常常见的挑战与问题。 one-hot编码带来的另一个问题是 特征空间变大 。同样以上面淘宝上的item为例,将item进行one-hot编码以后,样本空间有一个categorical变为了百万维的数值特征,特征空间一下子暴增一百万。所以大厂动不动上亿维度,就是这么来的。 普通的线性模型,我们都是将各个特征独立考虑的,并没有考虑到特征与特征之间的相互关系。但实际上,大量的特征之间是有关联的。最简单的以电商为例,一般女性用户看化妆品服装之类的广告比较多,而男性更青睐各种球类装备。那很明显,女性这个特征与化妆品类服装类商品有很大的关联性,男性这个特征与球类装备的关联性更为密切。如果我们能将这些有关联的特征找出来,显然是很有意义的。 一般的线性模型为:                       从上面的式子很容易看出,一般的线性模型压根没有考虑特征间的关联。为了表述特征间的相关性,我们采用多项式模型。在多项式模型中,特征 与 的组合用 表示。为了简单起见,我们讨论二阶多项式模型。具体的模型表达式如下: 为了简单起见,我们只考虑二阶交叉的情况,具体的模型如下:                       式中, 表示样本的特征数量, 表示第 个特征,与线性模型相比,FM的模型就多了后面特征组合的部分。 从FM公式可以看出,组合特征的参数一共有 n(n−1)/2个,任意两个参数都是独立的。然而,在数据稀疏性普遍存在的实际应用场景中,二次项参数的训练是很困难的。其原因是,每个参数 的训练需要大量 和 都非零的样本;由于样本数据本来就比较稀疏,满足 和 都非零”的样本将会非常少。训练样本的不足,很容易导致参数  不准确,最终将严重影响模型的性能。 那么,如何解决二次项参数的训练问题呢?矩阵分解提供了一种解决思路。在model-based的协同过滤中,一个rating矩阵可以分解为user矩阵和item矩阵,每个user和item都可以采用一个隐向量表示。比如在下图中的例子中,我们把每个user表示成一个二维向量,同时把每个item表示成一个二维向量,两个向量的点积就是矩阵中user对item的打分。 类似地,所有二次项参数 可以组成一个对称阵 (为了方便说明FM的由来,对角元素可以设置为正实数),那么这个矩阵就可以分解为 , 的第 列便是第 维特征的隐向量。换句话说,每个参数 ,这就是FM模型的核心思想。因此,FM的模型方程为(本文不讨论FM的高阶形式)                      其中, 是第 维特征的隐向量, 代表向量点积。隐向量的长度为 ,二次项的参数数量减少为 个,远少于多项式模型的参数数量。另外,参数因子化使得 的参数和 的参数不再是相互独立的,因此我们可以在样本稀疏的情况下相对合理地估计FM的二次项参数。具体来说, 和 的系数分别为 和 ,它们之间有共同项 。也就是说,所有包含“ 的非零组合特征”(存在某个 ,使得 )的样本都可以用来学习隐向量 vivi,这很大程度上避免了数据稀疏性造成的影响。而在多项式模型中, 和 是相互独立的。 显而易见,FM的模型公式是一个通用的拟合方程,可以采用不同的损失函数用于解决回归、二元分类等问题,比如可以采用MSE(Mean Square Error)损失函数来求解回归问题,也可以采用Hinge/Cross-Entropy损失来求解分类问题。当然,在进行二元分类时,FM的输出需要经过sigmoid变换,这与Logistic回归是一样的。直观上看,FM的复杂度是 。但是,通过下面的等式,FM的二次项可以化简,其复杂度可以优化到  。由此可见,FM可以在线性时间对新样本作出预测。                              我们再来看一下FM的训练复杂度,利用SGD(Stochastic Gradient Descent)训练模型。模型各个参数的梯度如下: 其中, 是隐向量 的第 个元素。由于 只与 有关,而与 无关,在每次迭代过程中,只需计算一次所有 的 ,就能够方便地得到所有 的梯度。显然,计算所有 的 的复杂度是 ;已知 时,计算每个参数梯度的复杂度是 ;得到梯度后,更新每个参数的复杂度是 ;模型参数一共有 个。因此,FM参数训练的复杂度也是 。综上可知,FM可以在线性时间训练和预测,是一种非常高效的模型。 libFM 论文: Factorization Machines 论文: Factorization Machines with Follow-The-Regularized-Leader for CTR prediction in Display Advertising 推荐系统遇上深度学习(一)--FM模型理论和实践 FM(Factorization Machines)的理论与实践 深入FFM原理与实践-美团 推荐好文:  深度学习在CTR预估中的应用

排序算法实验研究论文

PNN,全称为Product-based Neural Network,认为在embedding输入到MLP之后学习的交叉特征表达并不充分,提出了一种product layer的思想,既基于乘法的运算来体现体征交叉的DNN网络结构,如下图: 按照论文的思路,我们也从上往下来看这个网络结构: 输出层 输出层很简单,将上一层的网络输出通过一个全链接层,经过sigmoid函数转换后映射到(0,1)的区间中,得到我们的点击率的预测值:                      l2层 根据l1层的输出,经一个全链接层 ,并使用relu进行激活,得到我们l2的输出结果:                      l1层 l1层的输出由如下的公式计算:                      重点马上就要来了,我们可以看到在得到l1层输出时,我们输入了三部分,分别是lz,lp 和 b1,b1是我们的偏置项,这里可以先不管。lz和lp的计算就是PNN的精华所在了。我们慢慢道来: Product Layer product思想来源于,在ctr预估中,认为特征之间的关系更多是一种and“且”的关系,而非add"加”的关系。例如,性别为男且喜欢游戏的人群,比起性别男和喜欢游戏的人群,前者的组合比后者更能体现特征交叉的意义。 product layer可以分成两个部分,一部分是线性部分lz,一部分是非线性部分lp。二者的形式如下:                                           在这里,我们要使用到论文中所定义的一种运算方式,其实就是矩阵的点乘啦:                      Embedding Layer Embedding Layer跟DeepFM中相同,将每一个field的特征转换成同样长度的向量,这里用f来表示。                      损失函数 使用和逻辑回归同样的损失函数,如下:                      前面提到了,product layer可以分成两个部分,一部分是线性部分lz,一部分是非线性部分lp。看product layer的公式,我们首先需要知道z和p,这都是由我们的embedding层得到的,其中z是线性信号向量,因此我们直接用embedding层得到:                      论文中使用的等号加一个三角形,其实就是相等的意思,你可以认为z就是embedding层的复制。 对于p来说,这里需要一个公式进行映射:                                            不同的g的选择使得我们有了两种PNN的计算方法,一种叫做Inner PNN,简称IPNN,一种叫做Outer PNN,简称OPNN。 接下来,我们分别来具体介绍这两种形式的PNN模型,由于涉及到复杂度的分析,所以我们这里先定义Embedding的大小为M,field的大小为N,而lz和lp的长度为D1。 IPNN的示意图如下: IPNN中p的计算方式如下,即使用内积来代表 :                      所以, 其实是一个数,得到一个 的时间复杂度为M,p的大小为N*N,因此计算得到p的时间复杂度为N*N*M。而再由p得到lp的时间复杂度是N*N*D1。因此 对于IPNN来说,总的时间复杂度为N*N(D1+M)。文章对这一结构进行了优化,可以看到,我们的p是一个对称矩阵,因此我们的权重也可以是一个对称矩阵,对称矩阵就可以进行如下的分解:                      因此:                                           因此:                      从而得到:                      可以看到,我们的权重只需要D1 * N就可以了,时间复杂度也变为了D1*M*N。 OPNN OPNN的示意图如下: OPNN中p的计算方式如下:                      此时 为M*M的矩阵,计算一个 的时间复杂度为M*M,而p是N*N*M*M的矩阵,因此计算p的事件复杂度为N*N*M*M。从而计算lp的时间复杂度变为D1 * N*N*M*M。这个显然代价很高的。为了减少负责度,论文使用了叠加的思想,它重新定义了p矩阵:                      这里计算p的时间复杂度变为了D1*M*(M+N) 论文: Product-based Neural Networks for User Response Prediction 推荐系统中使用ctr排序的f(x)的设计-dnn篇之PNN模型 推荐系统遇上深度学习(六)--PNN模型理论和实践 推荐好文:  深度学习在CTR预估中的应用

免费查阅文献的刊物,你可以看看(计算机科学与应用)等等这些

在CTR预估中,为了解决稀疏特征的问题,学者们提出了FM模型来建模特征之间的交互关系。但是FM模型只能表达特征之间两两组合之间的关系,无法建模两个特征之间深层次的关系或者说多个特征之间的交互关系,因此学者们通过Deep Network来建模更高阶的特征之间的关系。因此 FM和深度网络DNN的结合也就成为了CTR预估问题中主流的方法。有关FM和DNN的结合有两种主流的方法,并行结构和串行结构。两种结构的理解以及实现如下表所示: 今天介绍的NFM模型(Neural Factorization Machine),便是串行结构中一种较为简单的网络模型。 我们首先来回顾一下FM模型,FM模型用n个隐变量来刻画特征之间的交互关系。这里要强调的一点是,n是特征的总数,是one-hot展开之后的,比如有三组特征,两个连续特征,一个离散特征有5个取值,那么n=7而不是n=3.                      可以看到,不考虑最外层的求和,我们可以得到一个K维的向量。对于NFM模型,目标值的预测公式变为:                      其中,f(x)是用来建模特征之间交互关系的多层前馈神经网络模块,架构图如下所示: mbedding Layer 和我们之间几个网络是一样的,embedding 得到的vector其实就是我们在FM中要学习的隐变量v。 Bi-Interaction Layer 名字挺高大上的,Bi是Bi-linear的缩写,这一层其实是一个pooling层操作,它把很多个向量转换成一个向量,,其实它就是计算FM中的二次项的过程,因此得到的向量维度就是我们的Embedding的维度。最终的结果是:                      Hidden Layers就是我们的DNN部分,将Bi-Interaction Layer得到的结果接入多层的神经网络进行训练,从而捕捉到特征之间复杂的非线性关系。 在进行多层训练之后,将最后一层的输出求和同时加上一次项和偏置项,就得到了我们的预测输出:                      NFM模型将FM与神经网络结合以提升FM捕捉特征间多阶交互信息的能力。根据论文中实验结果,NFM的预测准确度相较FM有明显提升,并且与现有的并行神经网络模型相比,复杂度更低。 NFM本质上还是基于FM,FM会让一个特征固定一个特定的向量,当这个特征与其他特征做交叉时,都是用同样的向量去做计算。这个是很不合理的,因为不同的特征之间的交叉,重要程度是不一样的。因此,学者们提出了AFM模型(Attentional factorization machines),将attention机制加入到我们的模型中。 论文: Neural Factorization Machines for Sparse Predictive Analytics

关于推荐系统中的reranking问题。作者信息: 文章比较简单,思想也不错,并且据称实践中也给力。简单翻一下。 摘要:排序是推荐系统的一个核心问题,目的是给用户一个“排好序的”item list。通常这个ranking function是从labeled dataset里学到的,通过优化全局表现。这个function对每个item给一个得分。但是这个function可能是次优的,因为它是对每个item“独立”应用的,而且没有显式地考虑item之间的关系,也没有考虑用户偏好的不同。于是这篇文章就提出了PRM。这个reranking模型可以接在任何排序模型后面。它直接优化整个的推荐列表,通过“使用transformer结构来encode列表中的item信息”。其中,这个transformer用了self-attention机制,它直接对任意pair的item间的联系建了模。通过加入一个预训练好的学习用户偏好的embedding,效果还会进一步提升。实验结果有离线也有在线,都是显示出PRM的牛逼。 1  introduction 通常推荐系统的流程是:若干召回->粗排->排序->重排。若干召回的目的是从超级大的item集合中挑出一部分;粗排是从召回的这些中再挑出一部分(一般千级别);排序是从粗排的这些中再挑出一部分;重排是对排序出来的这些(一般最多也就几十的量级)重新排个序展示给用户。其实排序和重排序没有本质的区别,只是量级问题而已。我感觉。所以没必要太区分排序和重排序,反正都能用。 “排好序”的item list对用户的满意度有很大影响,对推荐系统的收益也有很大影响。现在已经有很多排序算法了。典型的排序一般只考虑了user-item pair features, 但是没考虑其他item的影响。虽然pairwise和listwise 的learning to rank方法尝试解决这个问题,通过把item-pair或者item-list当做输入,但是他们只专注于对label数据(点击)的优化,没有显示考虑特征空间中item之间的关系。 一些工作就尝试考虑item之间的关系,然后改善一些排序模型给出的“序”,这就是reranking。核心思想就是encode intra-item patterns到特征空间,然后打分。目前最好的encode方法是RNN-based的,比如GlobalRerank, DLCM。他们按次序输入初始list,然后按时间步输出encoded vector。然鹅,rnn-based方法在对“list中的item之间的交互”的建模上能力有限。The feature information of the previous encoded item degrades along with the encoding distance. 受到机器翻译中的transformer结构启发,文章提出用transformer来学item之间的交互影响。transformer结构用了self-attention机制,这就使得任意两个item之间都是直接产生关系,不用随着编码距离变远而降低。同时,比rnn好的一点在于可以并行化,效率高。 不仅是item之间的交互,个性化的encoding也要考虑进来。推荐系统的reranking是user-specific的,决定于用户的偏好。比如说,对于价格敏感的用户,你就应该加大价格的权重。经典的全局的encoding也许不是最优,就是因为忽略了用户之间的不同。例子,用户想比价的时候,就应该集中展示不同价格的相似物品;用户没有明显购买欲望的时候,推荐就应该更多样化。于是提出的PRM就既考虑了item之间的相互关系,也考虑了个性化。 论文贡献:(这里可以不用看,不影响。其实主要就是model和data。。problem和evaluation不是应该的吗。。) 2  相关工作 rerank是在ranking模型后的提升,在这些ranking模型中,learning to rank是最广泛使用的方法之一。learning to rank(LTR)可以概括成三类:pointwise\pairwise\listwise。这些都是学的global scoring function,对于某个特征的权重是全局学来的(也就是不个性化)。这样不行啊。 后面简单介绍了下其他人在reranking方面的工作。有的用单向GRU来encode整个list到每个item。有的用LSTM啊什么什么的。他们的能力受到encoding distance的限制。transformer不受这个影响,因为任意item之间距离是O(1)的。而且,用decoder来序列产出list的话,不适用于线上,受不了这个延迟啊。也有提出了groupwise方法的,也可以冰箱,但是计算开销太大了。 3  reranking model formulation LTR在信息检索和推荐系统里用的很多。它的loss function: 其中R是所有用户的请求集合;I_r 是对于请求r的候选集;x_i是item i的特征表示; y_i是item i的label,也就是是否点击。P是预测的点击概率,theta是前置排序模型的参数; 光有x还不够,还需要(a)item-pair之间的相互影响(b)用户物品之间的交互。所谓(a)其实可以直接从LTM模型给出的 对于请求r的初始list S_r 中学到,有一些工作已经探索过了。但是还没有探索(b)的。不同用户的item-pair相互作用应该是不同的。本文会引入一个个性化矩阵PV来学习user-specific encoding function。loss是: 其中 S_r 是前置排序模型给出的初始排序, theta尖 是reranking模型的参数,X是特征矩阵。比较两个损失函数,其实很像,只是多了个PV而已。 4  personalized re-ranking model 模型结构 三部分:输入层、编码层、输出层 input layer 输入层的目标就是学习初始list中所有item的综合表达。前置排序模型给出初始list,记为 S = [i_1, i_2, ..., i_n] ;item的原始的特征矩阵 X \in \Re^{n*d_{feature}} (跟ranking模型一样的). X的每一行是item i的特征向量x_i 。 Personalized Vector (PV). 其实初始的list可以部分反映用户的偏好了(毕竟是排序出来的东西),但还不够。Figure 1(b)里,把 X 和 PV 拼起来,得到中间embedding矩阵 E^{'} \in \Re ^{n*(d_{feature}+d_{pv})} : PV是由一个预训练的模型产出的(后面介绍)。 Position Embedding (PE)。 为了利用list的序列信息,我们又加了一个位置embedding PE \in \Re ^{n*(d_{feature}+d_{pv})},可以看到这个维数跟E' 一样。PE是可学习的,这样效果会略好。 最后用一个简单的feed-forward网络把E'' 映射到 E \in \Re ^{n*d} , d是encoding层的输入维数(显然):下面公式等号右边的E应该带两撇 encoding layer encoding层的目标是集成一下“item-pair之间的相互关系”和其他信息(包括用户偏好、初始list里的顺序)。这里就引进了transformer。因为transformer在NLP任务里太屌了呀,尤其是在机器翻译中的编解码能力超过rnn系列。而且自注意力机制很适合reranking,因为任意两个item都产生了关系(反复在说这一点)。图1(a)是一个基本结构示意。图1(b)里可以看到,encoding模型包括N_x 个transformer块,每个块包含一个注意力层和一个前向网络层。 Attention Layer: 这里其实就是基本的attention,可以参考 刘岩:详解Transformer (Attention Is All You Need) The Illustrated Transformer ,感觉讲的很好。 然后为了表示更复杂的关系,用多头attention: Feed-Forward Network: 文章里说前向网络主要是增强模型的非线性和对不同维度输入向量的交互。注意这里的前向其实是residual connection(不觉得跟resnet很像吗),虽然这里没有提,但是实验结果里分析了。 Stacking the Encoding Layer: 一个attention加一个ffn当成一个块,多个块stacking就可以得到更复杂的高维的交互信息。 Output Layer 输出层就是对每个item给个分数。这里只用了一个线性层,加softmax(全连接嘛)。 在训练阶段,用点击数据作为label,并最小化损失函数: Personalized Module 在这部分,说一下怎么得到PV。图1(c)就是本文用的结构。H是用户历史。loss是 D是展示给用户的物品集合,theta' 是模型参数,y_i 是label。最后用 sigmoid 之前的隐藏层作为 pv_i 表示。 图1(c)只是其中一种结构,其他的模型也可以用在这里,比如FM, FFM, DeepFM, DCN, FNN, PNN等。 5  实验结果 其实论文的实验结果大都没什么好看的。反正都是说提出的东西最屌。这篇文章里的实验部分有一个优点,就是做了ablation study,让大家知道哪部分最重要。 数据 一个是雅虎的数据,一个是电商数据(虽然没说,想也知道是淘宝)。 雅虎数据其实不适合直接用,所以做了一些转换。(不重要。。其实我没仔细研究=.=) baseline 考虑了实际情况,比如说rnn的(GlobalRerank)不用,并行太困难了;再比如开销大的(Seq2Slate\GlobalRerank)不用,线上撑不住。主要是四个: evaluation metrics 这两个显然都是越大越好,它们是用来离线评价的。线上的话用更有说服力的指标: PV::物品总展示 IPV:物品总点击 CTR:点击率,IPV/PV GMV:用户在推荐的物品上花的总钱数 experimental settings 对于baseline和PRM,关键的超参数是一致的。具体就不写了,不重要。 离线实验 雅虎数据集上的实验 探索两个问题:0. PRM是不是真的最好?为什么? 1. 不同的LTR提供初始list,表现是不是不同? 看文章之前我就可以回答这两个问题了,PRM当然最好,接不同的LTR表现当然不同。。 结果: 雅虎数据集不包含用户相关信息,所以没有personalized module,所以叫模型叫PRM-base。即使这样,它也最厉害。PRM-BASE比DLCM表现好,主要是因为transformer牛逼。 然后做了ablation study看看这些部件哪个贡献大。 其中,PE是位置embedding,RC是残差连接。 去掉PE效果严重下降,这就是说初始list里的顺序很重要(人家排序模型辛辛苦苦排出来的,能不重要么)。残差连接和dropout影响不大,可以说明模型不太有梯度消失和过拟合问题。block是先增后减,因为太多会过拟合。注意力的头数影响不大,跟NLP不太一样。考虑到开销问题,推荐用1个就够了。 电商数据的离线实验 探索问题:加上personalized module的话,PRM表现怎么样? 这里偷懒了,直接用线上的DNN-based LTR作为前置排序模型,而且直接就不比其他baseline了,只比DLCM。(感觉不太严谨。。。不过影响不大) 结果可以看到,PRM-BASE还是好过DLCM,而加了Personalized-pretrain就更好了。PV很关键。PRM-Personalized-Pretrain两个优势: 预训练模型可以完全利用用户的更长的log,来提供更通用、更好的用户偏好表示。 PV学好了,PRM可以从中学到更好的encoding,更个性化了。 online experiments 当然也做了线上ab实验。结论一致。 注意力权重可视化 探索问题:自注意力机制真的能学到有意义的信息吗? 画了几个热力图,可以看到相关的确实相关,挺合理的。 6  结论和未来 PRM好啊,用transformer既学了item之间的依赖关系也学了用户和item之间的交互关系。 作者认为优化一下label空间也会有用。 下一步要研究reranking实现多样性。

几种排序算法毕业论文

Abstract: Sorting is the computer programming important basis, is also a computer technology important application, many output results which the computer produces finally defers to some kind of regular order output. Here we from construction of data's angle embarking, have analyzed the insertion sort, partitioning sorting, fast sorting simply and so on several kind of commonly used sort algorithm algorithm principle and realize the process, has calculated each algorithm running time and the operating efficiency, and has given the partial algorithm code and the simple demonstration procedure with object-oriented language java, through the demonstration procedure's movement and the analysis, has compared the different sort algorithm performance from some aspects, has certain help to our learning algorithm and the actual programming.

基于词频统计——词位置加权的搜索引擎 利用关键词在文档中出现的频率和位置排序是搜索引擎最早期排序的主要思想,其技术发展也最为成熟,是第一阶段搜索引擎的主要排序技术,应用非常广泛,至今仍是许多搜索引擎的核心排序技术。其基本原理是:关键词在文档中词频越高,出现的位置越重要,则被认为和检索词的相关性越好。 1)词频统计 文档的词频是指查询关键词在文档中出现的频率。查询关键词词频在文档中出现的频率越高,其相关度越大。但当关键词为常用词时,使其对相关性判断的意义非常小。TF/IDF很好的解决了这个问题。TF/IDF算法被认为是信息检索中最重要的发明。TF(Term Frequency):单文本词汇频率,用关键词的次数除以网页的总字数,其商称为“关键词的频率”。IDF(Inverse Document Frequency):逆文本频率指数,其原理是,一个关键词在N个网页中出现过,那么N越大,此关键词的权重越小,反之亦然。当关键词为常用词时,其权重极小,从而解决词频统计的缺陷。 2)词位置加权 在搜索引擎中,主要针对网页进行词位置加权。所以,页面版式信息的分析至关重要。通过对检索关键词在Web页面中不同位置和版式,给予不同的权值,从而根据权值来确定所搜索结果与检索关键词相关程度。可以考虑的版式信息有:是否是标题,是否为关键词,是否是正文,字体大小,是否加粗等等。同时,锚文本的信息也是非常重要的,它一般能精确的描述所指向的页面的内容。 基于链接分析排序的第二代搜索引擎 链接分析排序的思想起源于文献引文索引机制,即论文被引用的次数越多或被越权威的论文引用,其论文就越有价值。链接分析排序的思路与其相似,网页被别的网页引用的次数越多或被越权威的网页引用,其价值就越大。被别的网页引用的次数越多,说明该网页越受欢迎,被越权威的网页引用,说明该网页质量越高。链接分析排序算法大体可以分为以下几类:基于随机漫游模型的,比如PageRank和Repution算法;基于概率模型的,如SALSA、PHITS;基于Hub和Authority相互加强模型的,如HITS及其变种;基于贝叶斯模型的,如贝叶斯算法及其简化版本。所有的算法在实际应用中都结合传统的内容分析技术进行了优化。本文主要介绍以下几种经典排序算法: 1)PageRank算法 PageRank算法由斯坦福大学博士研究生Sergey Brin和Lwraence Page等提出的。PageRank算法是Google搜索引擎的核心排序算法,是Google成为全球最成功的搜索引擎的重要因素之一,同时开启了链接分析研究的热潮。 PageRank算法的基本思想是:页面的重要程度用PageRank值来衡量,PageRank值主要体现在两个方面:引用该页面的页面个数和引用该页面的页面重要程度。一个页面P(A)被另一个页面P(B)引用,可看成P(B)推荐P(A),P(B)将其重要程度(PageRank值)平均的分配P(B)所引用的所有页面,所以越多页面引用P(A),则越多的页面分配PageRank值给P(A),PageRank值也就越高,P(A)越重要。另外,P(B)越重要,它所引用的页面能分配到的PageRank值就越多,P(A)的PageRank值也就越高,也就越重要。 其计算公式为: PR(A):页面A的PageRank值; d:阻尼系数,由于某些页面没有入链接或者出链接,无法计算PageRank值,为避免这个问题(即LinkSink问题),而提出的。阻尼系数常指定为。 R(Pi):页面Pi的PageRank值; C(Pi):页面链出的链接数量; PageRank值的计算初始值相同,为了不忽视被重要网页链接的网页也是重要的这一重要因素,需要反复迭代运算,据张映海撰文的计算结果,需要进行10次以上的迭代后链接评价值趋于稳定,如此经过多次迭代,系统的PR值达到收敛。 PageRank是一个与查询无关的静态算法,因此所有网页的PageRank值均可以通过离线计算获得。这样,减少了用户检索时需要的排序时间,极大地降低了查询响应时间。但是PageRank存在两个缺陷:首先PageRank算法严重歧视新加入的网页,因为新的网页的出链接和入链接通常都很少,PageRank值非常低。另外PageRank算法仅仅依靠外部链接数量和重要度来进行排名,而忽略了页面的主题相关性,以至于一些主题不相关的网页(如广告页面)获得较大的PageRank值,从而影响了搜索结果的准确性。为此,各种主题相关算法纷纷涌现,其中以以下几种算法最为典型。 2)Topic-Sensitive PageRank算法 由于最初PageRank算法中是没有考虑主题相关因素的,斯坦福大学计算机科学系Taher Haveli-wala提出了一种主题敏感(Topic-Sensitive)的PageRank算法解决了“主题漂流”问题。该算法考虑到有些页面在某些领域被认为是重要的,但并不表示它在其它领域也是重要的。 网页A链接网页B,可以看作网页A对网页B的评分,如果网页A与网页B属于相同主题,则可认为A对B的评分更可靠。因为A与B可形象的看作是同行,同行对同行的了解往往比不是同行的要多,所以同行的评分往往比不是同行的评分可靠。遗憾的是TSPR并没有利用主题的相关性来提高链接得分的准确性。 3)HillTop算法 HillTop是Google的一个工程师Bharat在2001年获得的专利。HillTop是一种查询相关性链接分析算法,克服了的PageRank的查询无关性的缺点。HillTop算法认为具有相同主题的相关文档链接对于搜索者会有更大的价值。在Hilltop中仅考虑那些用于引导人们浏览资源的专家页面(Export Sources)。Hilltop在收到一个查询请求时,首先根据查询的主题计算出一列相关性最强的专家页面,然后根据指向目标页面的非从属专家页面的数量和相关性来对目标页面进行排序。 HillTop算法确定网页与搜索关键词的匹配程度的基本排序过程取代了过分依靠PageRank的值去寻找那些权威页面的方法,避免了许多想通过增加许多无效链接来提高网页PageRank值的作弊方法。HillTop算法通过不同等级的评分确保了评价结果对关键词的相关性,通过不同位置的评分确保了主题(行业)的相关性,通过可区分短语数防止了关键词的堆砌。 但是,专家页面的搜索和确定对算法起关键作用,专家页面的质量对算法的准确性起着决定性作用,也就忽略了大多数非专家页面的影响。专家页面在互联网中占的比例非常低(),无法代表互联网全部网页,所以HillTop存在一定的局限性。同时,不同于PageRank算法,HillTop算法的运算是在线运行的,对系统的响应时间产生极大的压力。 4)HITS HITS(Hyperlink Induced Topic Search)算法是Kleinberg在1998年提出的,是基于超链接分析排序算法中另一个最著名的算法之一。该算法按照超链接的方向,将网页分成两种类型的页面:Authority页面和Hub页面。Authority页面又称权威页面,是指与某个查询关键词和组合最相近的页面,Hub页面又称目录页,该页面的内容主要是大量指向Authority页面的链接,它的主要功能就是把这些Authority页面联合在一起。对于Authority页面P,当指向P的Hub页面越多,质量越高,P的Authority值就越大;而对于Hub页面H,当H指向的Authority的页面越多,Authority页面质量越高,H的Hub值就越大。对整个Web集合而言,Authority和Hub是相互依赖、相互促进,相互加强的关系。Authority和Hub之间相互优化的关系,即为HITS算法的基础。 HITS基本思想是:算法根据一个网页的入度(指向此网页的超链接)和出度(从此网页指向别的网页)来衡量网页的重要性。在限定范围之后根据网页的出度和入度建立一个矩阵,通过矩阵的迭代运算和定义收敛的阈值不断对两个向量Authority和Hub值进行更新直至收敛。 实验数据表明,HITS的排名准确性要比PageRank高,HITS算法的设计符合网络用户评价网络资源质量的普遍标准,因此能够为用户更好的利用网络信息检索工具访问互联网资源带来便利。 但却存在以下缺陷:首先,HITS算法只计算主特征向量,处理不好主题漂移问题;其次,进行窄主题查询时,可能产生主题泛化问题;第三,HITS算法可以说一种实验性质的尝试。它必须在网络信息检索系统进行面向内容的检索操作之后,基于内容检索的结果页面及其直接相连的页面之间的链接关系进行计算。尽管有人尝试通过算法改进和专门设立链接结构计算服务器(Connectivity Server)等操作,可以实现一定程度的在线实时计算,但其计算代价仍然是不可接受的。 基于智能化排序的第三代搜索引擎 排序算法在搜索引擎中具有特别重要的地位,目前许多搜索引擎都在进一步研究新的排序方法,来提升用户的满意度。但目前第二代搜索引擎有着两个不足之处,在此背景下,基于智能化排序的第三代搜索引擎也就应运而生。 1)相关性问题 相关性是指检索词和页面的相关程度。由于语言复杂,仅仅通过链接分析及网页的表面特征来判断检索词与页面的相关性是片面的。例如:检索“稻瘟病”,有网页是介绍水稻病虫害信息的,但文中没有“稻瘟病”这个词,搜索引擎根本无法检索到。正是以上原因,造成大量的搜索引擎作弊现象无法解决。解决相关性的的方法应该是增加语意理解,分析检索关键词与网页的相关程度,相关性分析越精准,用户的搜索效果就会越好。同时,相关性低的网页可以剔除,有效地防止搜索引擎作弊现象。检索关键词和网页的相关性是在线运行的,会给系统相应时间很大的压力,可以采用分布式体系结构可以提高系统规模和性能。 2)搜索结果的单一化问题 在搜索引擎上,任何人搜索同一个词的结果都是一样。这并不能满足用户的需求。不同的用户对检索的结果要求是不一样的。例如:普通的农民检索“稻瘟病”,只是想得到稻瘟病的相关信息以及防治方法,但农业专家或科技工作者可能会想得到稻瘟病相关的论文。 解决搜索结果单一的方法是提供个性化服务,实现智能搜索。通过Web数据挖掘,建立用户模型(如用户背景、兴趣、行为、风格),提供个性化服务。

排序的方法有很多种,你说的是什么排序啊,有排列组合的,有光排序,没有前后顺序之分的。

一. 冒泡排序冒泡排序是是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把它们交换过来。遍历数列的工作是重复的进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端1.冒泡排序算法的运作如下:(1)比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个(2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素还是最大的数(3)针对所有的元素重复以上的步骤,除了最后一个二. 选择排序 选择排序是一种简单直观的排序算法。他的工作原理如下: 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置(末尾位置),然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕 选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,他们当中至少有一个将被移到最终位置上,因此对n个元素的表进行排序总共进行至多n-1次交换。在所有的完全依靠交换去移动 元素的排序方法中,选择排序属于非常好的一种三. 插入排序 插入排序是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在从后向前扫描的过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间四. 快速排序 快速排序,又称划分交换排序。通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都要小,然后再按此方法对两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列五 希尔排序过程希尔排序是插入排序的一种,也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。六. 归并排序归并排序是采用分治法(把复杂问题分解为相对简单的子问题,分别求解,最后通过组合起子问题的解的方式得到原问题的解)的一个非常典型的应用。归并排序的思想就是先递归分解数组,再合并数组将数组分解最小之后,然后合并两个有序数组,基本思路是比较两个数组的最前面的数,水小九先取谁,取了后相应的指针就往后移一位。然后比较,直至一个数组为空,最后把另一个数组的剩余部分复制过来即可

算法研究的毕业论文框架安排

论文框架由以下几部分组成:

1、介绍

简要地总结论文主题,说明为什么这个主题有价值,也许还可以概述一下你的主要结果。

2、背景信息(可选)

简短地介绍背景信息是必要的,特别是当你的论文涉及两个或多个传统领域时。

3、新技术回顾

这部分回顾了与论文相关的研究现状。

4、研究问题或问题陈述

工程论文倾向于提到一个需要解决的“问题”,而其他学科则是用一个需要回答的“问题”来表述。在这两种情况下,有三个主要部分:

5、描述你如何解决问题或回答问题

论文的这一部分形式更加自由,可以有一个或几个部分和子部分。

6、结论

结论部分通常涵盖三件事,并且每一件事都应该有一个单独的小节:

7、参考文献

参考文献的列表与第3部分中给出的技术现状综述紧密相关。所有的参考文献都必须在论文正文中提及。参考书目可能包括论文中没有直接引用的作品。

8、附录

一般来说,太过具体的材料不适合在论文主体中出现,但可供考官仔细阅读,以充分说服他们。

1、论文的起始页是原创性声明和版权使用说明书,这个有固定的格式,可以根据学校要求书写。

2、引言部分有具体的字体和格式要求。摘要包括中英文摘要,中文摘要在前半部分,摘要包括内容和关键词。

3、论文的目录部分,不同级别的目录也有相应的具体要求,目录也有相应的内容要求。

4、最后一部分就是论文的结论,结论是对研究内容进行一个总结,研究成果的汇总。

扩展资料:

毕业论文的基本教学要求是:

1、培养学生综合运用,巩固与扩展所学的基础理论和专业知识,培养学生独立分析,解决实际问题能力、培养学生处理数据和信息的能力。

2、培养学生正确的理论联系实际的工作作风,严肃认真的科学态度。

3、培养学生进行社会调查研究,文献资料收集,阅读和整理和使用,提出论点,综合论证,总结写作等基本技能。

参考资料来源:百度百科-论文

参考资料来源:百度百科-论文格式

参考资料来源:百度百科-论文提纲

你可以以文章内容为例先说明几点,大概内容就是每一部分之间的联系,A段为B段铺垫,C段辅助说明问题,D段提出解决方案什么的。既可以说明逻辑关系,又能表示出你对自己论文的熟悉程度。最后再来个总结,类似如下:总之,各部分相互间有逻辑联系,相互配合,成为整体的有机组成部分,为展开论题服务。使得论文的结构更统一而完整,为更好的表达论文的内容服务。反正我是这么写的,不知道能不能帮到你。

研究生论文参考文献排序方法

录入需要排序的姓名在行首,注意要每个姓名占一行,也就是输入完一个姓名后要按一下“回车”键换行。

很多论文的参考文献是需要按作者名字的拼音和字母顺序排序的,很多人都是直接手动一个一个排序,这样子很麻烦,当文献量很多时,任务量就会很大,用户可以直接用Excel就可以做,我们只需要找到数据项中的排序,在排序对话框中找到“选项”按钮,选择“按字母排序”,在选号要排列的列和升降序,确定之后,就可以排序了。

论文参考文献注意事项

文献引用不能随意,是需要精心选择的。引用,要引用与自己的研究内容密切相关的。另外,我个人的观点是还要引用高质量的文献,引用文献也需要品位。

文献卡片上记录文献的信息(作者、年代、题目、期刊名称、卷期、页码等),在笔记本上摘录摘要的内容。写论文引用参考文献的时候,觉得一篇文献对于自己的结果论证很重要,但又苦于查不到原文,就只能是间接引用,采用“转引自”的方式引用。

论文参考文献主要有以下两种排序方式:

百度经验:参考文献列表如何快速自动排序

参考文献排序是按照自己的参考文献在文章中的出现顺序进行排序的,一般主要就集中在文献综述部分,按照在文献综述中出现的顺序进行排序。

参考文献排序是一种文后参考文献的标注体系。即引文采用序号标注,参考文献表按引文的序号排序。在论文中的引用处以右上标(小四宋体)加方括号的方式表示,不得标注在各级标题之上。参考文献以文献在整个论文中出现的次序用的形式统一排序、依次列出。

参考文献排序的方法

首先打开我们需要排序的参考文献论文word,然后逐条归放好,乱序没关系。将中文参考文献复制粘贴到excle表格中,调整好表格格式,可以把表格行列拉大,使一整行的文献都清晰可见。

接着在表格中选中所有的参考文献,点击表格上方菜单栏中的【排序】功能键,选择【升序排列】,之后所有的论文参考文献都是按照中文首字母排列了。

最后检查排序有无问题并且调整好。这里需要注意的是:excel无法区分多音字的,就需要我们自己手动更改以下顺序了。例如:“单”再被用作姓时,是读“shan”的,而excel可能会将其识别为“dan”。将排列好顺序的参考文献,直接复制粘贴到论文word文档中即可。

相关百科

热门百科

首页
发表服务