learning to rank using gradient

合集下载

机器学习中常见的几种优化方法

机器学习中常见的几种优化方法

机器学习中常见的几种优化方法阅读目录1. 梯度下降法(Gradient Descent)2. 牛顿法和拟牛顿法(Newton's method & Quasi-Newton Methods)3. 共轭梯度法(Conjugate Gradient)4. 启发式优化方法5. 解决约束优化问题——拉格朗日乘数法我们每个人都会在我们的生活或者工作中遇到各种各样的最优化问题,比如每个企业和个人都要考虑的一个问题“在一定成本下,如何使利润最大化”等。

最优化方法是一种数学方法,它是研究在给定约束之下如何寻求某些因素(的量),以使某一(或某些)指标达到最优的一些学科的总称。

随着学习的深入,博主越来越发现最优化方法的重要性,学习和工作中遇到的大多问题都可以建模成一种最优化模型进行求解,比如我们现在学习的机器学习算法,大部分的机器学习算法的本质都是建立优化模型,通过最优化方法对目标函数(或损失函数)进行优化,从而训练出最好的模型。

常见的最优化方法有梯度下降法、牛顿法和拟牛顿法、共轭梯度法等等。

回到顶部1. 梯度下降法(Gradient Descent)梯度下降法是最早最简单,也是最为常用的最优化方法。

梯度下降法实现简单,当目标函数是凸函数时,梯度下降法的解是全局解。

一般情况下,其解不保证是全局最优解,梯度下降法的速度也未必是最快的。

梯度下降法的优化思想是用当前位置负梯度方向作为搜索方向,因为该方向为当前位置的最快下降方向,所以也被称为是”最速下降法“。

最速下降法越接近目标值,步长越小,前进越慢。

梯度下降法的搜索迭代示意图如下图所示:牛顿法的缺点:(1)靠近极小值时收敛速度减慢,如下图所示;(2)直线搜索时可能会产生一些问题;(3)可能会“之字形”地下降。

从上图可以看出,梯度下降法在接近最优解的区域收敛速度明显变慢,利用梯度下降法求解需要很多次的迭代。

在机器学习中,基于基本的梯度下降法发展了两种梯度下降方法,分别为随机梯度下降法和批量梯度下降法。

Learning to Rank 简介

Learning to Rank 简介

Learning to Rank 简介去年实习时,因为项目需要,接触了一下Learning to Rank(以下简称L2R),感觉很有意思,也有很大的应用价值。

L2R将机器学习的技术很好的应用到了排序中,并提出了一些新的理论和算法,不仅有效地解决了排序的问题,其中一些算法(比如LambdaRank)的思想非常新颖,可以在其他领域中进行借鉴。

鉴于排序在许多领域中的核心地位,L2R可以被广泛的应用在信息(文档)检索,协同过滤等领域。

本文将对L2R做一个比较深入的介绍,主要参考了刘铁岩、李航等人的几篇相关文献[1,2,3],我们将围绕以下几点来介绍L2R:现有的排序模型,为什么需要使用机器学习的方法来进行排序,L2R特征的选取,L2R训练数据的获取,L2R训练和测试,L2R算法分类和简介,L2R效果评价等。

1.现有的排序模型排序(Ranking)一直是信息检索的核心研究问题,有大量的成熟的方法,主要可以分为以下两类:相关度排序模型和重要性排序模型。

1.1 相关度排序模型(Relevance Ranking Model) 相关度排序模型根据查询和文档之间的相似度来对文档进行排序。

常用的模型包括:布尔模型(Boolean Model),向量空间模型(Vector Space Model),隐语义分析(Latent Semantic Analysis),BM25,LMIR模型等等。

1.2 重要性排序模型(Importance Ranking Model) 重要性排序模型不考虑查询,而仅仅根据网页(亦即文档)之间的图结构来判断文档的权威程度,典型的权威网站包括Google,Yahoo!等。

常用的模型包括PageRank,HITS,HillTop,TrustRank等等。

2. 为什么需要使用机器学习的方法来进行排序对于传统的排序模型,单个模型往往只能考虑某一个方面(相关度或者重要性),所以只是用单个模型达不到要求。

搜索排序算法

搜索排序算法

搜索排序算法排序模型LTR(L2R,learning to rank)Pointwise:对排序列表中的每⼀项,直接学习⼀个值,⽐如可以是预估点击率(Predict CTR,pCTR),然后按照预估值从⼤到⼩排序即可。

常见模型有LR、FFM、GBDT、XGBoost。

GBDT是LTR中应⽤较多的⾮线性模型。

Additive Groves(简称AG)是在随机森林基础上构建的模型,加⼊Bagging算法,使得模型的泛化能⼒更强。

AG由很多Grove 组合(bagging)⽽成,每⼀个Grove由多棵树组成,在训练时每棵树的拟合⽬标是真实值与其它树预测结果之和的残差。

在训练的过程中达到了指定数⽬的树时,重新训练的树会替代掉以前的树。

⾕歌提出的FTRL⽅法能够在线对线性模型进⾏更新。

Pairwise:两两学习两个项的先后关系。

常见模型有GBRank、RankNet、LambdaMart、RankSVM。

LambdaMart是Lambda和MART(Multiple Additive Regression Tree,GBDT的别名)的结合,是GBDT的⼀种针对排序问题的改进。

在计算梯度时LambdaMart重新计算了Lambda,重新赋予了排序梯度的物理意义,它利⽤sigmoid来计算各pair的排序概率,使⽤交叉熵作为损失函数来判断拟合程度,并将排序离线指标(如MAP、NDCG)考虑到梯度中去。

Listwise:将列表的最佳排序当作最终的优化⽬标,通过预测分布和真实排序分布的差距来优化模型,典型的模型如ListNet。

引⼊规范化带折扣的累计收益(Normalized Discounted Cumulative Gain,NDCG)作为衡量列表排序质量的指标,以保证排序效果达到列表级别的最优。

Pairwise模型是指所有⽂档两两组成⼀个pair,⽐如(X1,X2),如果X1的分值⼤于X2则将该pair当作正例+1,否则为负例-1. Pairwise的效果通常好于Pointwise(学术界是如此,⼯业界也越来越多⽤Pairwise了)。

一种基于新型损失函数的Listwise排序学习方法

一种基于新型损失函数的Listwise排序学习方法

一种基于新型损失函数的Listwise排序学习方法龚安;孙辉;乔杰【摘要】排序学习是指运用机器学习方法,自主地构建排序模型,用来对新的数据进行排序.在所有的排序方法中,List-wise方法就是其中一类重要的排序学习方法,它的训练样例由文档列表组成,利用神经网络模型和概率模型来构造损失函数.但是由于Listwise算法存在时间复杂度高、排序位置信息利用度低等缺点,一直得不到广泛的推广.对此,文中在SHF-SDCG框架的基础上提出了一种新的排序学习算法,采用多层神经网络的ListNet算法,引入Pointwise损失函数和位置加权因子,与Listwise损失函数融合构建新的损失函数,并分别使用梯度下降算法和多层神经网络算法训练网络权值,得到新的排序模型;同时使用效率高的Top-k训练方法,降低时间复杂度.最后在数据集LETOR4.0上进行实验,结果表明新算法排序性能明显提高.【期刊名称】《计算机技术与发展》【年(卷),期】2018(028)008【总页数】4页(P96-99)【关键词】排序学习;损失函数融合;Listwise;梯度下降【作者】龚安;孙辉;乔杰【作者单位】中国石油大学(华东) 计算机与通信工程学院,山东青岛 266580;中国石油大学(华东) 计算机与通信工程学院,山东青岛 266580;中国石油大学(华东) 石油工程学院,山东青岛 266580【正文语种】中文【中图分类】TP301.60 引言近年来,排序学习方法以其优异的性能成为信息检索与机器学习交叉领域中的“骄子”[1]。

排序学习方法按照训练样本的不同分为点方式、对方式和列表方式[2-4]。

研究表明,Listwise是排序学习中效果较好的一种算法,为了获得整个序列的排序情况,在实现过程中将整个文档序列看成一个训练样本,不仅结果展示自然,并且实现了对不同查询文档进行区分的功能[5-7]。

在排序过程中,损失函数用来评价预测结果与真实结果之间拟合程度的高低,所以损失函数的构建尤为重要。

机器学习技术中的梯度下降与随机梯度下降算法性能比较与应用案例

机器学习技术中的梯度下降与随机梯度下降算法性能比较与应用案例

机器学习技术中的梯度下降与随机梯度下降算法性能比较与应用案例梯度下降(Gradient Descent)和随机梯度下降(Stochastic Gradient Descent)是在机器学习中常用的优化算法。

它们被广泛应用于各种机器学习任务中,如线性回归、逻辑回归、深度神经网络等。

本文将比较这两种算法的性能,并介绍它们在实际应用中的案例。

首先,我们来了解梯度下降算法。

梯度下降是一种迭代优化算法,旨在找到一个函数的最小值,通过迭代更新参数,使目标函数逐渐收敛。

在每次迭代中,梯度下降算法计算函数在当前点的梯度,并以负梯度方向调整参数值。

这样,算法将逐步朝着最优解的方向迭代,直到收敛于最优解。

相比之下,随机梯度下降算法则是一种更加高效的优化算法。

随机梯度下降在每次迭代时,不再计算全部样本的梯度,而是仅仅选取一个随机样本计算梯度并更新参数。

因此,随机梯度下降的计算开销相对较小,迭代速度更快。

尽管每次迭代的方向可能会有一些波动,但在长时间的迭代过程中,随机梯度下降也能找到接近最优解的解。

梯度下降和随机梯度下降算法的选择取决于数据集的规模和问题的复杂性。

对于小数据集和参数较少的情况,梯度下降算法常常可以很好地工作。

而对于大规模数据集和高维参数的情况,随机梯度下降算法则更具优势。

此外,随机梯度下降也适用于在线学习场景,在每次迭代中,可以及时处理新的样本并更新模型。

在实际应用中,梯度下降和随机梯度下降算法都有广泛的案例。

以线性回归为例,这是一个求解最小二乘问题的经典机器学习任务。

梯度下降算法可以通过最小化损失函数,求得线性回归模型的最优参数。

而随机梯度下降算法也能应用于线性回归任务中,通过在每次迭代中随机选择一个样本计算梯度,并更新参数。

实际上,随机梯度下降算法对于大规模线性回归问题的求解更加高效。

另一个应用案例是深度神经网络的训练。

深度神经网络通常包含大量的参数和复杂的计算图结构。

对于这种复杂模型,梯度下降算法会面临较大的计算负担,而随机梯度下降算法则能够更快地逼近最优解。

Learning to Rank for Information Retrieval Using Genetic Programming

Learning to Rank for Information Retrieval Using Genetic Programming
Learning to Rank for Information Retrieval Using Genetic Programming
Jen-Yuan Yeh1, Jung-Yi Lin1, Hao-Ren Ke2, Wei-Pang Yang3
Dept. of Computer Science, National Chiao Tung University, Hsinchu 30mation Management, National Chiao Tung University, Hsinchu 300, TAIWAN
3
Dept. of Information Management, National Dong Hwa University, Hualien 974, TAIWAN
features used in the field range from classical IR features (e.g., term frequency, inverse document frequency, and BM25 [24]) to recently-developed features (e.g., HostRank [27], Feature Propagation [23], [25], and Topical PageRank [21]). The inputs to the learning algorithm comprise training instances, their feature vectors, and the corresponding relevance judgments. The output is a ranking function, f, where f(qi, dj) is supposed to give the “true” relevance judgment (as mentioned previously) for qi and dj. During the training process, the learning algorithm attempts to learn a ranking function such that a performance measure (e.g., classification accuracy, error rate, Mean Average Precision [1], etc.) with respect to the output relevance judgments can be optimized. In the test phase, the learned ranking function is applied to determine the relevance between each document di in D and a new query q. Clearly, factors, such as the form of the training instances, the form of the desired output, and the performance measure, will lead to different design of learning to rank for IR algorithms. Please refer to Section 2 for a general categorization of methods. This paper discusses work on using machine learning to automatically produce an effective ranking function for IR. A learning method, RankGP, based on genetic programming (GP) is developed to learn a ranking function by combining different types of evidences in IR, including content features, structure features, and query-independent features. RankGP represents a potential solution (i.e., a ranking function) as an individual in a population of GP. The method evolves a population by applying genetic operations, such as crossover and mutation, over a series of generations. In each generation, a fitness function, modeled as an IR measure, MAP (Mean Average Precision) [1], is exploited to evaluate the performance of each individual in the population. The evolution is supposed to eventually generate an individual with the best fitness as the optimal solution. The rest of this paper is organized as follows. It starts with a brief review of related works in Section 2. Section 3 then introduces the proposed GP-based learning method, RankGP, for the task of learning to rank for IR. The experimental results and discussions are provided in Section 4. Finally, Sections 5 and 6 conclude this paper and give directions for further research.

textrank算法的基本原理_概述及解释说明

textrank算法的基本原理_概述及解释说明

textrank算法的基本原理概述及解释说明1. 引言1.1 概述在信息爆炸时代,人们每天都会接触到大量的文本信息,如新闻报道、社交媒体评论、学术论文等。

如何从海量的文本中提取出关键信息变得越来越重要。

关键词提取和文本摘要生成是两个基本的自然语言处理任务,旨在帮助用户快速理解和浏览文本内容。

textrank算法是一种基于图模型的无监督算法,通过分析文本中单词之间的相互关系来计算单词或句子的重要性,并根据其重要性对其进行排序。

该算法最初由Mihalcea等人于2004年提出,在自然语言处理领域具有广泛应用。

1.2 文章结构本文将介绍textrank算法的基本原理,并详细解释其在关键词提取和文本摘要生成两个任务中的应用。

接着,我们将通过三个主要步骤来解释算法实现过程,包括数据预处理、构建词图网络以及计算节点重要性得分。

在第四部分,我们将对textrank算法的优点和缺点进行分析,并讨论可能的改进措施。

最后,在结论与展望部分,我们将总结textrank算法的主要发现和贡献,并展望其在未来研究方向和应用场景中的潜力。

1.3 目的本文的目的是深入探讨textrank算法在自然语言处理中的应用。

通过详细解释算法原理和实现过程,我们希望读者能够全面了解textrank算法,并对其在关键词提取和文本摘要生成等任务中的有效性有更深入的认识。

同时,通过分析算法的优缺点和讨论可能的改进措施,我们希望为该领域的研究者提供进一步研究和改进的思路。

最终,我们希望本文能够启发人们对于自然语言处理技术的思考,并促进相关领域的发展与创新。

2. textrank算法的基本原理:2.1 关键词提取:关键词提取是textrank算法的一个重要应用,它可以自动从文本中抽取出关键词。

textrank算法利用单词或短语在文本中的共现关系来计算关键词的重要性。

首先,将文本进行分词处理,得到一组单词或短语。

然后,通过构建一个无向有权图来表示这些单词或短语之间的共现关系。

Learning to rank From Pairwise Approach to Listwise Approach

Learning to rank From Pairwise Approach to Listwise Approach

@... @. @.
Ming-Feng Tsai* @.... Department of Computer Science and Information Engineering, National Taiwan University, Taipei 106, Taiwan Hang Li Microsoft Research Asia, No.49 Zhichun Road, Haidian District, Beijing 100080, P. R. China @.
Abstract
The paper is concerned with learning to rank, which is to construct a model or a function for ranking objects. Learning to rank is useful for document retrieval, collaborative filtering, and many other applications. Several methods for learning to rank have been proposed, which take object pairs as ‘instances’ in learning. We refer to them as the pairwise approach in this paper. Although the pairwise approach offers advantages, it ignores the fact that ranking is a prediction task on list of objects. The paper postulates that learning to rank should adopt the listwise approach in which lists of objects are used as ‘instances’ in learning. The paper proposes a new probabilistic method for the approach. Specifically it introduces two probability models, respectively referred to as permutation probability and top k probability, to define a listwise loss function for learning. Neural Network and Gradient Descent are then employed as model and algorithm in the learning method. Experimental results on information retrieval show that the proposed listwise approach performs better than the pairwise approach.

ListNet算法简介

ListNet算法简介

ListNet算法简介排序⼀直是信息检索的核⼼问题之⼀,Learning to Rank(简称LTR)⽤机器学习的思想来解决排序问题。

LTR有三种主要的⽅法:PointWise,PairWise,ListWise。

ListNet算法就是ListWise⽅法的⼀种,由刘铁岩,李航等⼈在ICML2007的论⽂Learning to Rank:From Pairwise approach to Listwise Approach中提出。

Pairwise⽅法的实际上是把排序问题转换成分类问题,以最⼩化⽂档对的分类错误为⽬标。

但是评估排序结果的好坏通常采⽤MAP或NDCG等考虑⽂档排序的⽅法,所以Pairwise⽅法的损失函数并不是⾮常合适。

ListNet算法定义了⼀种Listwise的损失函数,该损失函数表⽰由我们的模型计算得来的⽂档排序和真正的⽂档排序之间的差异,ListNet最⼩化该损失函数以达到排序的⽬的。

ListNet⾸先把⽂档的排序列表转换成概率分布,然后选取交叉熵来衡量由模型训练出的⽂档排序和真正的⽂档排序之间的差异,最⼩化这个差异值来完成排序。

下⾯我们从如何把⽂档列表转换成概率,如何计算概率分布之间的差异值,如何优化差异值三个部分来介绍ListNet算法。

1. 组合概率和Top-K概率。

(1) 组合概率.假设我们需要对n篇⽂档进⾏排序,我们⽤π=<π(1),π(2),...,π(n)>表⽰⼀种排列组合,其中π(i)表⽰排列在第i个位置的⽂档。

设Φ(.)是⼀个递增和恒⼤于0的函数,Φ(x)可以是线性函数Φ(x)=αx或者指数函数Φ(x)=exp(x),则排列组合π的概率为:其中Sπ(j)表⽰排列在第j个位置的⽂档的得分。

组合概率的计算复杂度为O(n!),当⽂档的数量较多时,计算量太⼤,所以ListNet选⽤了另外⼀种概率:Top-K概率。

(2) Top-K概率.序列(j1,j2,...,j k)的Top-K概率表⽰这些⽂档排在n个⽂档中前K个的概率。

learning to rank for information retrieval类似的字资料

learning to rank for information retrieval类似的字资料

"Learning to Rank for Information Retrieval" 是一个研究领域,主要关注如何使用机器学习技术来优化信息检索系统的排序性能。

以下是一些与该主题相关的类似资料:1. Books:"Learning to Rank for Information Retrieval and Natural Language Processing" by Hang Li, Synthesis Lectures on Human Language Technologies"Ranking in Intelligent Systems" edited by Hideo Watanabe and Hitoshi Iba"Information Retrieval: Implementing and Evaluating Search Engines" by Bruce Croft, Donald Metzler, and Trevor Strohman2. Research Papers and Articles:"A Survey of Learning to Rank Methods" by Tie-Yan Liu"Ranking Measures and Loss Functions in Learning to Rank" by ChengXiang Zhai and John Lafferty"ListNet: A Listwise Approach to Learning to Rank" by Tao Qin, Tie-Yan Liu, Ming-Feng Tsai, and Hang Li"LambdaMART: A Machine Learning Method for Information Retrieval" by Yuyang Wang, Tie-Yan Liu, Tianqi Chen, and Hang Li "Gradient Boosted Decision Trees for Web Search Ranking" by Chris Burges, Tal Shaked, Erin Renshaw, and Yuri Lazebnik3. Datasets and Benchmarks:LETOR (Learning to Rank) dataset from Microsoft Research: A collection of benchmark datasets for learning to rank algorithms.MSLR-WEB (Microsoft Learning to Rank) dataset: A larger and more diverse set of queries and documents for evaluating ranking models.TREC (Text REtrieval Conference) datasets: Various datasets used in the annual TREC conference for information retrieval evaluation.4. Online Resources and Tutorials:"Learning to Rank" chapter in the "Introduction to Information Retrieval" book online. Tutorial on "Learning to Rank for Information Retrieval" by Tie-Yan Liu. Coursera course "Information Retrieval" by Prof. Christopher Manning .这些资料涵盖了从理论基础、算法实现到实际应用的各个方面,可以帮助你深入理解学习到排名在信息检索中的应用和最新进展。

梯度增强算法python代码实现

梯度增强算法python代码实现

梯度增强算法python代码实现梯度增强(Gradient Boosting)是一种集成学习方法,通过迭代地训练一系列弱学习器(通常是决策树),每次都在前一次训练的基础上进行优化。

在Python 中,你可以使用scikit-learn 库来实现梯度增强算法。

下面是一个简单的梯度增强分类器的示例代码:from sklearn.datasets import load_irisfrom sklearn.model_selection import train_test_splitfrom sklearn.ensemble import GradientBoostingClassifierfrom sklearn.metrics import accuracy_score# 加载数据集data = load_iris()X = data.datay = data.target# 划分训练集和测试集X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 创建梯度增强分类器gb_classifier = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1, random_state=42)# 训练模型gb_classifier.fit(X_train, y_train)# 在测试集上进行预测y_pred = gb_classifier.predict(X_test)# 计算准确率accuracy = accuracy_score(y_test, y_pred)print("Accuracy:", accuracy)在这个示例中,我们首先加载了Iris 数据集,并将其划分为训练集和测试集。

然后,我们使用scikit-learn 中的GradientBoostingClassifier 创建了一个梯度增强分类器。

policy gradient methods

policy gradient methods

policy gradient methods
【最新版】
目录
1.强化学习概述
2.策略梯度方法介绍
3.策略梯度方法的应用
4.策略梯度方法的优缺点
5.结论
正文
一、强化学习概述
强化学习是机器学习的一种方法,主要研究如何让计算机在与环境的交互中获得最大化的长期累积奖励。

与监督学习和无监督学习不同,强化学习主要依赖于试错学习的方式,通过智能体与环境的交互来不断优化策略。

二、策略梯度方法介绍
策略梯度方法是强化学习中一种常用的方法,其主要思想是通过梯度下降法来优化策略。

具体来说,策略梯度方法根据环境中的反馈信号,对智能体的策略进行调整,使得智能体能够在长期运行中获得最大化的奖励。

三、策略梯度方法的应用
策略梯度方法在强化学习中有广泛的应用,包括控制问题、优化问题和序列决策问题等。

在实际应用中,策略梯度方法可以根据具体问题进行调整,以适应不同环境的需求。

四、策略梯度方法的优缺点
策略梯度方法的优点在于其能够通过梯度下降法来不断优化策略,从
而在长期运行中获得最大化的奖励。

然而,策略梯度方法也存在一些缺点,例如在面对复杂环境时可能会出现收敛速度慢、计算量大等问题。

五、结论
总的来说,策略梯度方法是强化学习中一种重要的方法,其在实际应用中具有广泛的应用前景。

然而,策略梯度方法也存在一些问题,需要进一步研究和改进。

排序学习(learningtorank)中的ranknetpytorch简单实现

排序学习(learningtorank)中的ranknetpytorch简单实现

排序学习(learningtorank)中的ranknetpytorch简单实现⼀.理论部分 理论部分⽹上有许多,⾃⼰也简单的整理了⼀份,这⼏天会贴在这⾥,先把代码贴出,后续会优化⼀些写法,这⾥将训练数据写成dataset,dataloader样式。

排序学习所需的训练样本格式如下: 解释:其中第⼆列是query id,第⼀列表⽰此query id与这条样本的相关度(数字越⼤,表⽰越相关),从第三列开始是本条样本的特征向量。

RankNet:RankNet是属于pairwise⽅法,它是将某个query下的所有⽂档两两组成⽂档对,每个⽂档对作为⼀个样本: A. 预测相关性概率: 解释:对于任⼀个doc对(Ui,Uj),模型输出的得分为si和sj,那么根据模型预测Ui⽐Uj与query更相关的概率。

RankNet⼀般采⽤神经⽹络,sigmoid能提供⼀个较好的概率评估。

B. 真实相关性概率: 解释:真实数据对中的Ui和Uj都包含⼀个与query相关度的label,⽐如Ui为3,Uj为1,则Ui⽐Uj与query更相关,这⾥是定义Ui⽐Uj更相关的真实概率。

Sij定义为1:Ui⽐Uj更相关;-1:Uj⽐Ui更相关;0:Ui与Uj相关度相同。

C. 代价函数: 解释:这⾥使⽤交叉熵来拟合真实概率与预测概率,两个分布越接近,交叉熵越⼩。

D. 问题: 问题⼀:没有使⽤排序中的⼀些评估指标直接作为代价函数,原因是这些指标函数不连续,不好求导,不太好⽤梯度下降,交叉熵适合梯度下降。

问题⼆:在正常训练时,对每个样本对{i,j}都会更新⼀次参数,采⽤BP时,更新⼀次需要先前向预测,再误差后反向传播,会很慢。

E.在实际使⽤中,ranknet采⽤神经⽹络⽅法进⾏学习,⼀般采⽤的是带有隐层的神经⽹络。

学习过程⼀般使⽤误差反向传播⽅法来训练。

如何训练呢?这⾥提供了两种思路:1)取⼀个样本对(Xi, Xj),⾸先对Xi带⼊神经⽹络进⾏前向反馈,其次将Xj带⼊神经⽹络进⾏前向反馈,然后计算差分结果并进⾏误差反向传播,接着取下⼀个样本对。

推荐排序---LearningtoRank:从pointwise和pairwise到lis。。。

推荐排序---LearningtoRank:从pointwise和pairwise到lis。。。

推荐排序---LearningtoRank:从pointwise和pairwise到lis。

Ranking 是信息检索领域的基本问题,也是搜索引擎背后的重要组成模块。

本⽂将对结合机器学习的 ranking 技术——learning2rank——做个系统整理,包括 pointwise、pairwise、listwise 三⼤类型,它们的经典模型,解决了什么问题,仍存在什么缺陷。

Pointwise 类⽅法,其 L2R 框架具有以下特征:输⼊空间中样本是单个 doc(和对应 query)构成的特征向量;输出空间中样本是单个 doc(和对应 query)的相关度;假设空间中样本是打分函数;损失函数评估单个 doc 的预测得分和真实得分之间差异。

Pairwise 类⽅法,其 L2R 框架具有以下特征:输⼊空间中样本是(同⼀ query 对应的)两个 doc(和对应 query)构成的两个特征向量;输出空间中样本是 pairwise preference;假设空间中样本是⼆变量函数;损失函数评估 doc pair 的预测 preference 和真实 preference 之间差异。

Listwise 类⽅法,其 L2R 框架具有以下特征:输⼊空间中样本是(同⼀ query 对应的)所有 doc(与对应的 query)构成的多个特征向量(列表);输出空间中样本是这些 doc(和对应 query)的相关度排序列表或者排列;假设空间中样本是多变量函数,对于 docs 得到其排列,实践中,通常是⼀个打分函数,根据打分函数对所有 docs 的打分进⾏排序得到docs 相关度的排列;损失函数分成两类,⼀类是直接和评价指标相关的,还有⼀类不是直接相关的。

具体后⾯介绍。

本⽂主要参考刘铁岩⽼师的《Learning to Rank for Information Retrieval》和李航⽼师的《Learning to rank for information retrieval and natural language processing》。

LearningtoRank算法介绍:RankNet,LambdaRank,LambdaMart

LearningtoRank算法介绍:RankNet,LambdaRank,LambdaMart

LearningtoRank算法介绍:RankNet,LambdaRank,LambdaMart之前的博客:中简单介绍了Learning to Rank的基本原理,也讲到了Learning to Rank的⼏类常⽤的⽅法:pointwise,pairwise,listwise。

前⾯已经介绍了pairwise⽅法中的 RankSVM,IR SVM,和GBRank。

这篇博客主要是介绍另外三种相互之间有联系的pairwise的⽅法:RankNet,LambdaRank,和LambdaMart。

1. RankNetRankNet是2005年微软提出的⼀种pairwise的Learning to Rank算法,它从概率的⾓度来解决排序问题。

RankNet的核⼼是提出了⼀种概率损失函数来学习Ranking Function,并应⽤Ranking Function对⽂档进⾏排序。

这⾥的Ranking Function可以是任意对参数可微的模型,也就是说,该概率损失函数并不依赖于特定的机器学习模型,在论⽂中,RankNet是基于神经⽹络实现的。

除此之外,GDBT等模型也可以应⽤于该框架。

1.1 相关性概率我们先定义两个概率:预测相关性概率、真实相关性概率。

(1)预测相关性概率对于任意⼀个doc对(Ui,Uj),模型输出的score分别为si和sj,那么根据模型的预测,Ui⽐Uj与Query更相关的概率为:由于RankNet使⽤的模型⼀般为神经⽹络,根据经验sigmoid函数能提供⼀个⽐较好的概率评估。

参数σ决定sigmoid函数的形状,对最终结果影响不⼤。

RankNet证明了如果知道⼀个待排序⽂档的排列中相邻两个⽂档之间的排序概率,则通过推导可以算出每两个⽂档之间的排序概率。

因此对于⼀个待排序⽂档序列,只需计算相邻⽂档之间的排序概率,不需要计算所有pair,减少计算量。

(2)真实相关性概率对于训练数据中的Ui和Uj,它们都包含有⼀个与Query相关性的真实label,⽐如Ui与Query的相关性label为good,Uj与Query的相关性label 为bad,那么显然Ui⽐Uj更相关。

gradient_penalty 的作用

gradient_penalty 的作用

gradient_penalty 的作用深度学习是目前人工智能领域的一个热门研究方向,它以神经网络为基础,通过大量的训练数据和反向传播算法实现模型的训练和优化。

然而,神经网络模型往往会遇到梯度消失或者梯度爆炸的问题,这导致训练过程变得困难并且使模型性能难以提升。

为了解决这一问题,研究者们提出了一系列的优化算法和技术,其中之一就是gradient_penalty。

gradient_penalty 是一种用于提高模型训练稳定性和收敛性的技术。

它是在生成对抗网络 (GAN) 中提出的,目的是解决原始 GAN 训练中出现的梯度问题。

GAN 是一种通过两个相互竞争的网络(生成器和判别器)来进行训练的模型,它被广泛应用于图像生成、图像修复等任务。

在传统 GAN 的训练中,生成器的目标是生成能够欺骗判别器的样本,而判别器的目标是准确地判断输入是真实样本还是生成样本。

为了实现这个目标,判别器必须能够识别生成样本和真实样本之间的微小差异。

然而,在训练初期,生成器可能会生成与真实样本相差较大的“错误”样本,这导致判别器的梯度变得非常大。

如果梯度快速增长超过控制范围,判别器的学习可能会变得不稳定,甚至无法继续训练。

为了解决梯度爆炸的问题,研究者提出了 gradient_penalty 技术。

它通过限制判别器的梯度变化范围,使得判别器在学习过程中不会出现过大的变化。

具体而言,gradient_penalty 在损失函数中引入了一个正则项,该项基于真实样本和生成样本之间的差异计算梯度范数,从而控制梯度的大小。

通过限制梯度的范围,gradient_penalty 保证了判别器在训练过程中的稳定性,从而提高了模型的性能和训练效果。

除了解决梯度爆炸的问题,gradient_penalty 还具有一些其他的优点。

首先,它可以降低模型训练中的模式崩溃问题。

模式崩溃是指生成器在生成样本时过于依赖训练数据中的某些特定模式,这导致生成样本缺乏多样性。

任务驱动的多轮对话的设计参考

任务驱动的多轮对话的设计参考

多轮对话之所以称之为多轮对话,而不是多轮问答,是因为除了问答内容外,还有闲聊模式下的情感交流,以及多数情况以陈述句形式表达的情景模式,因此多轮问答实际是多轮对话的子集;由于事件的复杂性直接导致了多轮对话的复杂性,即上文所述的正常的知识问答和命令问答外,还有情感和场景表述,造成每一句与上下文语义高度相关或不相关交错出现,就导致了规则的高度复杂性;如果用有限状态机来处理多轮对话,就必须对话语权方即谁说出的话,必须被对方回答,则这方为对话话语权方的每一个token语句进行意图识别,引入意图队列,对队列进行基于规则的推理机处理或基于深度学习的预测,例如:寒暄>查订单>确认退款>正常情况==再见结束本轮对话;当然也可以用seq2seq的方法,将整个对话过程,抽象成一个session;输入若干个相关句子,解码成一个句子,即答案;多轮交互的一个重点问题是:如何根据上下文理解当前的意图,而不仅仅是针对单轮进行一个分析,从而能够使得对话在一个连续的语境下,是具备session粒度理解能力的;以下方案,均假设有一个已经做得比较好的单轮理解以后的情况:尝试方案1:最简单粗暴地,把多轮query,融合成一个单轮的query,进行一次性的解析.直接将多轮交互的意图理解问题,转换成一个单轮的意图理解问题,从而复用原有的单轮理解效果;例如:我想看电影--周星驰演的--喜剧片,三个query合并以后,解析到实际用户的需求,是周星驰主演的喜剧电影;优点:简单,粗暴,易于实现,几乎服用了单轮解析能力缺点:简单,粗暴,易于出错,几乎没有任何实质性的多轮解析能力,纯粹靠运气优化方向:可以加入一些query拼接的限制,提高拼接的准确率,从而在运用到单轮解析能力的同时,不至于在准召上偏离得太离谱如:只拼接两轮的、三轮及以上拼接,考虑拼接后的意图变化情况等尝试方案2:不是简单拼接,而是结果和query的识别过程拼接:单轮已经解析出了一个意图和某些槽位,将此意图及槽位存储起来;遇到query的时候,判定该意图下,这个query能否纳入同样的意图中,抽取出对应的槽位;如果可以,则更新意图的槽位内容;如果不可以,则抛弃当前意图,以query作为单轮解析,得到新的意图;例如:我想看电影--要免费的,第一轮意图为电影,第二轮在电影这个意图下,发现“免费”这个槽位,是符合电影意图描述的,所以,为该意图的槽位新增一个“免费”例如:我想看爱情电影--能给我讲个笑话吗,第一轮意图为电影,而第二轮在电影这个意图下,发现query并没有任何跟电影相关的槽位信息,所以,抛弃第一轮的电影意图,直接将第二轮query当成单轮的,直接解析得到新的意图--笑话;优点:基于意图来进行判定,比拼接更准确,也更广泛地识别当前query是否仍在同一个意图中,递归地实现多轮意图解析,避免了拼接过长,拼接过于粗暴带来的误召回和欠召回缺点:存储下来的是意图和槽位,然后再基于此进行新的query解析,判定是否槽位能够纳入原有意图范围内,这种递归一旦有某一步除了问题,后面的每一步,基本上都挂掉了,解析错误的传播深度和广度,都会很大优化方向:前面几步,可以辅助以方案一的拼接,来提高意图的正确性,保证后续的方向,都是正确的尝试方案3:以对话管理过程中增加一些冗余性来对方案2进行扩充,提高召回率;多轮交互一旦进入了某个意图,即开始该意图的满足,而当其第一次多轮解析未能命中该意图,也无法命中任何其他意图纯属闲聊的时候,可以跳过该轮的意图解析,而继续进入下一轮,检测该意图是否涵盖了当前query中的槽位,是则可以继续该意图的满足,不至于轻易断开多轮对话流此处的冗余轮数可以根据实际情况自行调整,一轮、两轮均可;例如:给我推荐个餐厅--有川菜口味的吗--咦,还蛮多嘛冗余跳过--找个最便宜的吧优点:可以一定程度上缓解方案二递归性带来的意外跳出意图的问题,提高每个意图的服务整体性,保证多轮的延续性;缺点:因为原理上跟方案二是一致的,所以还是会存在方案二的缺点,并且冗余跳过有可能是未能识别到具体的意图,从而令本该跳出对话的多轮,多停留了一两轮在了当前意图,才能跳出去,会降低交互的智能性;优化方向:尽可能提升多个意图的覆盖面,从而减少切换意图的误判为聊天,提升冗余的准确性上述三个方案,都是可以直接通过比较简单的框架设计来实现的,而读者可以发现,可能最关键的还是这些方案的前提:假设有一个已经做得比较好的单轮理解;可以看到,单轮理解是所有意图识别的基础,只有做好单轮的理解,才可能做好多轮,当然,做好了单轮,不一定就能做好多轮;对话系统的分类及方法:按照对话答案的生成方式大致可以分为以下几种:1.规则依存系统Rule-basedsystem:对话经过预定义的规则关键词、if-else、机器学习方法等处理,然后执行相应的操作,产生回复;ELIZA系统,如果输入语句中没有发现预定义规则,则生成generic的响应;缺点是规则的定义,系统越复杂规则也越多,而且其无法理解人类语言,也无法生成有意义的自然语言对话;处在比较浅层的阶段;2.检索依存系统IR-basedSystems:信息检索或者最近邻方法,要求生成的响应与对话存在语义相关性VSM、TF-IDF、page-Rank、推荐等排序方法;有点是比生成模型简单,直接从训练集中选择答案,且可以添加自定义规则干预排序函数较为灵活;缺点是无法应对自然语言的多变性、语境解构、连贯性等,对语义的细微差别也无法识别;3.自生成依存系统Generation-basedSystems:将对话视为input-outputmapping问题,提出了MT-based方法SMT统计机器翻译、IBM-model、phrase-basedMT等,这种方法复杂且无法很好的解决输入输出的对应关系尤其是当句子较复杂的时候,只适合单词级别;但是NN、seq-to-seq等方法很好地解决了这些问题,可以生成更加丰富、有意义、特别的对话响应;但是还存在许多问题,比如沉闷的回应、agent没有一个固定的风格、多轮对话槽填充等等;4.框架依存系统Frame-basedDialogueSystems:定义一个对话的框架,及其中所涉及的重要元素;优点是目标明确框架对对话指导意义明显,适用于飞机票、餐馆等预定领域;缺点是框架设计需要人工成本,且无法迁移到别的领域,并未涉及到人类语言的理解层面;按照对话的应答方式大致可以分为以下几种:1.有限状态机系统Finite-StateMachineSystems:用户使用预定义的模板提问,系统之响应能力范围之内的问题,这种方法的缺点是完全依赖于对框架slot的填充,而无法决定对话的进程和状态用户接受建议、拒绝等2.纯粹的多轮对话依存系统State-basedSystems:主要包含系统状态上下文信息、用户意图、对话进程等和系统行动两基于state采取action个部分;MDP、POMDP等模型;3.纯粹的单轮对话Question-Answering-QA系统BasedDialogueSystems:factoidQA-based,个人助手,需要回答各种各样的问题并且进行交互式对话;目前的研究点主要包括,bot如何通过对话进行自学习、对于out-of-vocab的词汇应该学会问,即学会与人交流、如何通过在线反馈学习犯错时调整、正确时加强----待处理部分----1.2本文解决问题本文主要关注于chit-chat和QA-baseddialogsystem;1.2.1开放域对话生成chit-chat首先探讨如何构建一个能够与人类进行有趣,有意义,连贯,一致和长期对话的引人入胜的闲聊式对话系统;要求其拥有以下特性:避免dull沉闷的回应,产生语义更加丰富的响应解决一致性问题,避免前后相应不一致可以进行长期多轮对话使用对抗学习生成人类无法区分的对话响应为了实现上述的功能和特点,主要会引入下面几种技术和算法来解决相应的问题;互信息-避免无聊的相应目前神经网络倾向于产生类似于“Idon'tknow”这种无聊的响应dullresponse/genericresponse,不利于对话进行;因为对于模型来讲,“Idon'tknow”这种答案往往都是正确的,但是我们可以反过来思考这个问题,也就是将"Idon'tknow"作为输入进行训练;因此可以使用MaximumMutualInformationMMI取代MLE作为训练的优化指标,事实证明这种方法可以大幅度提升模型响应的丰富度,减少dullresponse产生的频率;这部分方法将会在第三章进行详细的介绍;解决Bot前后一致性问题目前对话机器人无法产生前后一致性的对话,简单说就是没有一个固定的风格;所以要给bot一个连续的“角色”,这种角色可以当做是身份元素事实背景、用户简介、语言行为、交互方式等的组合;作者基于Seq-to-Seq模型提出了两种角色模型,一个是单bot 的SpearkerModel,另一个是双bot的Spearker-AddresseeModel;这部分内容可以参考第四章以及他在2016年发表在ACL的论文“Apersona-basedneuralconversationmodel”;使用强化学习RL实现长期多轮对话当前的Seq-to-Seq模型大都使用MLE作为目标函数并根据一轮对话来产生响应,很难产生更长久的多轮对话,一般在两轮之后就陷入重复;所以作者提出使用强化学习来最大化长期奖励的期望来增加对话轮次;并建设性地提出了三种Reward公式,forward-looking、informative、coherent,最后使用policygradient的方法进行训练,取得了很好的效果;这部分内容会在第五章进行详细介绍,或者参考其在2016年发表在EMNLP的文章“DeepReinforcementLearningforDialogueGeneration”使用对抗生成学习GAN产生对话目前模型生成的对话大都来自于训练数据集,这就一定程度上限制了产生相应的多样性、丰富程度等;所以引入GAN来生成更接近于人类语言的响应;这里使用一个Seq-to-Seq作为生成器,在用一个鉴别器来标记生成的响应是人类语言还是机器生成语言,这样Seq-to-Seq最终生成的响应会越来越接近人类语言;这部分内容会在第六章进行介绍,或者参考其在2017年发表在EMNLP上的文章“Adversariallearningforneuraldialoguegeneration”;1.2.2交互式QA对话机器人其次探讨bot如何通过online学习完善自己,使得交互性更强;要求其可以:学会向人类提问,何时何处问什么从online学习,根据错误改进自己通过提问进行交互学习因为目前问答系统当遇到自己回答不了的问题时没见过的表达形式,自己不知道的东西等情况,往往会做出很差的回应或者重定向到其他资源展示搜索网页的结果;但我们更希望机器人在遇到这种问题时可以通过向对方提问的方式来进行交互式问答进而解决该问题;可以通过离线学习或者在线强化学习的方式进行训练;这部分内容将会在第七章进行介绍,也可以参考其在2017年发表在ICLR上的论文“Learningthroughdialogueinteractionsbyaskingquestions”;Human-in-the-Loop的对话学习目前的对话机器人大都使用固定的数据集提前训练好之后就开始使用,但很多情况下我们需要机器人上线之后不断地根据具体环境改善自己,也就是要进行在线学习,根据对方的反馈来不断地调整自己;所以作者使用一个teacher-student的对话数据集并结合强化学习进行训练;这部分工作将在第八章进行介绍,也可以参考其2017年发表在ICLR 上的文章“Dialoguelearningwithhuman-in-the-loop”;第二章背景知识这一部分主要介绍了论文中使用到的Seq-to-Seq模型、MemoryNetwork模型、增强学习中的policygradient方法这三块内容;如果不熟悉的同学可以抽时间看一看,这里因为之前已经对Seq-to-Seq和MemNN两部分有所掌握,所以主要看了一下policynetwork方面的知识,当做是背景知识补充;强化学习中两个主流的方法就是Q_learning和PolicyNetwork,相比Q_learning,policynetwork不需要显示的求解估值函数,而且对于连续动作和状态空间的问题,也可以很好的解决,所以经常在NLP相关领域中得到广泛应用;我们的样本是一个个action-reward对,即每采取一个action都会有相应的reward;再给定一个state 时,神经网络会输出一个action的概率分布,我们的目标是最终奖励的期望最大;如下图所示,即取动作at的概率其相应的奖励r,然后再求和:为了实现期望最大,就要使用policygradient的方法来求解和更新网络参数Q;我们使用最大似然比likelihoodratio来估算J对Q的梯度,故有下式:引入b的目的是为了减少方差,原则上来讲b可以是一个任意的标量,但一般会选择所有观测reward的均值或者另外一个神经网络的输出值作为b的取值;如果想要深入了解这部分内容可以参考下面几个资源:1,AndrejKarpathy的博客:2,莫烦教程:3,知乎智能单元专栏的文章:第三章之后本文从第三章开始就是分别介绍上面提到的几个方向,也就是作者读博三年发表的文章,进行分别的介绍,之后应该会分别进行阅读,就不在这里进行介绍了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Learning to Rank using Gradient Descent
Chris Burges Tal Shaked∗ Erin Renshaw Microsoft Research, One Microsoft Way, Redmond, WA 98052-6399 Ari Lazier Matt Deeds Nicole Hamilton Greg Hullender Microsoft, One Microsoft Way, Redmond, WA 98052-6399

Current affiliation: Google, Inc.
Learning to Rank using Gradient Descent
Notation: we denote the number of relevance levels (or ranks) by N , the training sample size by m, and the dimension of the data by d.
Appearing in Proceedings of the 22 nd International Conference on Machine Learning, Bonn, Germany, 2005. Copyright 2005 by the author(s)/owner(s).
pairs would be prohibitively slow for many applications). However (Herbrich et al., 2000) cast the ranking problem as an ordinal regression problem; rank boundaries play a critical role during training, as they do for several other algorithms (Crammer & Singer, 2002; Harrington, 2003). For our application, given that item A appears higher than item B in the output list, the user concludes that the system ranks A higher than, or equal to, B; no mapping to particular rank values, and no rank boundaries, are needed; to cast this as an ordinal regression problem is to solve an unnecessarily hard problem, and our approach avoids this extra step. We also propose a natural probabilistic cost function on pairs of examples. Such an approach is not specific to the underlying learning algorithm; we chose to explore these ideas using neural networks, since they are flexible (e.g. two layer neural nets can approximate any bounded continuous function (Mitchell, 1997)), and since they are often faster in test phase than competing kernel methods (and test speed is critical for this application); however our cost function could equally well be applied to a variety of machine learning algorithms. For the neural net case, we show that backpropagation (LeCun et al., 1998) is easily extended to handle ordered pairs; we call the resulting algorithm, together with the probabilistic cost function we describe below, RankNet. We present results on toy data and on data gathered from a commercial internet search engine. For the latter, the data takes the form of 17,004 queries, and for each query, up to 1000 returned documents, namely the top documents returned by another, simple ranker. Thus each query generates up to 1000 feature vectors.
els. Therefore in this paper we will compare RankNet with PRank, kernel PRank, large margin PRank, and RankProp. (Dekel et al., 2004) provide a very general framework for ranking using directed graphs, where an arc from A to B means that A is to be ranked higher than B (which here and below we write as A B ). This approach can represent arbitrary ranking functions, in particular, ones that are inconsistent - for example A B , B C , C A. We adopt this more general view, and note that for ranking algorithms that train on pairs, all such sets of relations can be captured by specifying a set of training pairs, which amounts to specifying the arcs in the graph. In addition, we introduce a probabilistic model, so that each training pair {A, B } has associated posterior P (A B ). This is an important feature of our approach, since ranking algorithms often model preferences, and the ascription of preferences is a much more subjective process than the ascription of, say, classes. (Target probabilities could be measured, for example, by measuring multiple human preferences for each pair.) Finally, we use cost functions that are functions of the difference of the system’s outputs for each member of a pair of examples, which encapsulates the observation that for any given pair, an arbitrary offset can be added to the outputs without changing the final ranking; again, the goal is to avoid unnecessary learning. RankBoost (Freund et al., 2003) is another ranking algorithm that is trained on pairs, and which is closer in spirit to our work since it attempts to solve the preference learning problem directly, rather than solving an ordinal regression problem. In (Freund et al., 2003), results are given using decision stumps as the weak learners. The cost is a function of the margin over reweighted examples. Since boosting can be viewed as gradient descent (Mason et al., 2000), the question naturally arises as to how combining RankBoost with our pair-wise differentiable cost function would compare. Due to space constraints we will describe this work elsewhere.
相关文档
最新文档