论文部分内容阅读
随着互联网的快速发展,搜索引擎的重要性与日俱增。如何有效地搜索到有用的信息是非常重要的,好的搜索引擎能够帮助用户节省很多时间。搜索引擎的核心部分就是对查询相关联的网页进行排序,网页排序的好坏也显得越来越关键,关系到一个搜索引擎的好坏。排序学习是当前比较热门的网页排序领域,也是效果比较好的。按排序方法来分可以分为三类:样本点级别、样本对级别和列表级别;而列表级别的排序学习算法在这三类方法中排序效果是最好的。ListNet是列表级别的排序算法中比较经典,并且排序效果又不错的算法。但其不足之处在于:ListNet算法的收敛速度不快,运行时间直接依赖于训练集的大小,不适用于查询量大的数据集的训练学习,对于海量数据集就更加不适用了。随着越来越多的大查询量的数据集,甚至海量数据集的出现,现有的排序学习的算法已经不适用于对其进行训练。因为现有的算法在训练时需要将数据一次性读入内存,而大查询量的数据集,甚至海量数据集是不可能一次性读入内存的。因此,本文的出发点就是设计一个能够适用于大查询量的数据集,甚至海量数据集的训练学习的排序学习算法。本文提出了针对ListNet算法不足之处的改进思路。将原先使用的神经网络模型改为用SVM模型,将原来使用的梯度下降算法改为用改进的随机梯度下降算法。这样将ListNet结合Pegasos框架来弥补其算法的不足,使改进算法的收敛速度变快不少,运行时间也不直接依赖于训练集的大小,并且使改进算法能够适用于查询量大的数据集,甚至海量数据集的训练学习。本文在LETOR(MQ2007,MQ2008,OHSUMED,TD2003,TD2004)数据集上进行实验,先对改进算法与ListNet的运行时间进行了对比,再对比改进算法与ListNet的精度,最后对改进算法与其他列表级别的排序算法的精度进行对比。实验结果表明相对于ListNet,改进算法在训练时间上是有绝对优势的,并且改进算法在查询量大的数据集上精度要高于ListNet和其他列表级别的排序算法。