TensorFlow Ranking
TensorFlow Ranking是一个用于TensorFlow平台上的排序学习(LTR)技术的库。它包含以下组件:
- 常用的损失函数,包括点损失、对损失和列表损失。
- 常用的排序指标,如平均互惠排名(MRR)和标准化折扣累积增益(NDCG)。
- 多项(也称为组内)评分函数。
- 为直接排序指标优化而实现的LambdaLoss。
- 基于有偏反馈数据的无偏排序学习。
我们希望这个库能提供一个方便的开放平台,用于托管和推进基于深度学习技术的最先进排序模型,从而促进学术研究和工业应用。
教程幻灯片
TF-Ranking在信息检索的顶级会议SIGIR 2019和ICTIR 2019上进行了展示!幻灯片可以在这里查看。
演示
我们提供了一个无需安装的演示,以帮助您开始使用TF-Ranking。此演示运行在一个互动的Python环境——colaboratory notebook上。使用TF-Ranking中的稀疏特征和嵌入: 。 此演示展示了如何:
- 使用稀疏/嵌入特征
- 处理TFRecord格式的数据
- 在colab笔记本中,使用Estimator API进行Tensorboard集成
另请参见运行脚本获取可执行脚本。
Linux安装
稳定版本
要从PyPI安装最新版本,请运行以下命令:
# 使用`--upgrade`标志确保您获取最新版本。
pip install --user --upgrade tensorflow_ranking
要强制安装Python 3特定版本,请在上述命令中将pip
替换为pip3
。有关额外的安装帮助、安装前提条件的指南和(可选的)设置虚拟环境,请参见TensorFlow安装指南。
注意:由于TensorFlow现已包含在TensorFlow Ranking包(在setup.py
中)作为依赖。如果您希望使用不同版本的TensorFlow(例如,tensorflow-gpu
),可能需要卸载现有版本并安装所需版本:
$ pip uninstall tensorflow
$ pip install tensorflow-gpu
从源代码安装
-
本地构建TensorFlow Ranking,您需要安装:
-
Bazel,一个开源构建工具。
$ sudo apt-get update && sudo apt-get install bazel
-
Pip,一个Python包管理器。
$ sudo apt-get install python-pip
-
VirtualEnv,一个创建独立Python环境的工具。
$ pip install --user virtualenv
-
-
克隆TensorFlow Ranking仓库。
$ git clone https://github.com/tensorflow/ranking.git
-
构建TensorFlow Ranking wheel文件并存储在
/tmp/ranking_pip
文件夹中。$ cd ranking # 克隆的文件夹在步骤2中。 $ bazel build //tensorflow_ranking/tools/pip_package:build_pip_package $ bazel-bin/tensorflow_ranking/tools/pip_package/build_pip_package /tmp/ranking_pip
-
使用pip安装wheel包。在virtualenv中测试,以避免与任何系统依赖冲突。
$ ~/.local/bin/virtualenv -p python3 /tmp/tfr $ source /tmp/tfr/bin/activate (tfr) $ pip install /tmp/ranking_pip/tensorflow_ranking*.whl
在某些情况下,您可能希望安装特定版本的tensorflow,例如,
tensorflow-gpu
或tensorflow==2.0.0
。为此,您可以(tfr) $ pip uninstall tensorflow (tfr) $ pip install tensorflow==2.0.0
或者
(tfr) $ pip uninstall tensorflow (tfr) $ pip install tensorflow-gpu
-
运行所有TensorFlow Ranking测试。
(tfr) $ bazel test //tensorflow_ranking/...
-
在python中调用TensorFlow Ranking包(在virtualenv中)。
(tfr) $ python -c "import tensorflow_ranking"
运行脚本
为了方便实验,我们还提供了a TFRecord示例和a LIBSVM示例作为可执行脚本,这对于高超参数调整特别有用,其中超参数作为脚本的标志提供。
TFRecord示例
-
设置数据和目录。
MODEL_DIR=/tmp/tf_record_model && \ TRAIN=tensorflow_ranking/examples/data/train_elwc.tfrecord && \ EVAL=tensorflow_ranking/examples/data/eval_elwc.tfrecord && \ VOCAB=tensorflow_ranking/examples/data/vocab.txt
-
构建并运行。
rm -rf $MODEL_DIR && \ bazel build -c opt \ tensorflow_ranking/examples/tf_ranking_tfrecord_py_binary && \ ./bazel-bin/tensorflow_ranking/examples/tf_ranking_tfrecord_py_binary \ --train_path=$TRAIN \ --eval_path=$EVAL \ --vocab_path=$VOCAB \ --model_dir=$MODEL_DIR \ --data_format=example_list_with_context
LIBSVM示例
-
设置数据和目录。
OUTPUT_DIR=/tmp/libsvm && \ TRAIN=tensorflow_ranking/examples/data/train.txt && \ VALI=tensorflow_ranking/examples/data/vali.txt && \ TEST=tensorflow_ranking/examples/data/test.txt
-
构建并运行。
rm -rf $OUTPUT_DIR && \ bazel build -c opt \ tensorflow_ranking/examples/tf_ranking_libsvm_py_binary && \ ./bazel-bin/tensorflow_ranking/examples/tf_ranking_libsvm_py_binary \ --train_path=$TRAIN \ --vali_path=$VALI \ --test_path=$TEST \ --output_dir=$OUTPUT_DIR \ --num_features=136 \ --num_train_steps=100
TensorBoard
训练结果如损失和指标可以使用Tensorboard可视化。
-
(可选)如果您在远程服务器上工作,请使用此命令设置端口转发。
$ ssh <remote-server> -L 8888:127.0.0.1:8888
-
安装Tensorboard并使用以下命令调用。
(tfr) $ pip install tensorboard (tfr) $ tensorboard --logdir $OUTPUT_DIR
Jupyter Notebook
在tensorflow_ranking/examples/handling_sparse_features.ipynb
中提供了一个示例jupyter notebook。
-
要运行此notebook,首先按照安装步骤设置
virtualenv
环境并安装tensorflow_ranking包。 -
在virtualenv中安装jupyter。
(tfr) $ pip install jupyter
-
在远程服务器上启动jupyter notebook实例。
(tfr) $ jupyter notebook tensorflow_ranking/examples/handling_sparse_features.ipynb \ --NotebookApp.allow_origin='https://colab.research.google.com' \ --port=8888
-
(可选)如果您在远程服务器上工作,请使用此命令设置端口转发。
$ ssh <remote-server> -L 8888:127.0.0.1:8888
-
运行notebook。
-
在您的本地机器上启动jupyter notebook,地址为http://localhost:8888/并浏览到ipython notebook。
-
另一种选择是通过colab.research.google.com使用colaboratory notebook,并在浏览器中打开notebook。选择本地运行时并链接到端口8888。
-
参考
-
Rama Kumar Pasumarthi, Sebastian Bruch, Xuanhui Wang, Cheng Li, Michael Bendersky, Marc Najork, Jan Pfeifer, Nadav Golbandi, Rohan Anil, Stephan Wolf. TF-Ranking: Scalable TensorFlow Library for Learning-to-Rank. KDD 2019.
-
Qingyao Ai, Xuanhui Wang, Sebastian Bruch, Nadav Golbandi, Michael Bendersky, Marc Najork. Learning Groupwise Scoring Functions Using Deep Neural Networks. ICTIR 2019
-
Xuanhui Wang, Michael Bendersky, Donald Metzler, and Marc Najork. Learning to Rank with Selection Bias in Personal Search. SIGIR 2016.
-
Xuanhui Wang, Cheng Li, Nadav Golbandi, Mike Bendersky, Marc Najork. The LambdaLoss Framework for Ranking Metric Optimization. CIKM 2018.
引用
如果您在研究中使用TensorFlow Ranking并希望引用它,我们建议您使用以下引用:
@inproceedings{TensorflowRankingKDD2019,
author = {Rama Kumar Pasumarthi and Sebastian Bruch and Xuanhui Wang and Cheng Li and Michael Bendersky and Marc Najork and Jan Pfeifer and Nadav Golbandi and Rohan Anil and Stephan Wolf},
title = {TF-Ranking: Scalable TensorFlow Library for Learning-to-Rank},
booktitle = {Proceedings of the 25th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining},
year = {2019},
pages = {2970--2978},
location = {Anchorage, AK}
}