allRank是一个训练学习库神经模型的框架
allrank-mod的Python项目详细描述
https://github.com/allegro/allRank的修改版本
学习在Pythorch中排名
关于
allRank是一个基于Pythorch的框架,用于训练神经学习排名(LTR)模型,其特点是实现:
- 公共点态、成对和列表损失函数
- 全连接和变压器式评分功能
- 常用的评价指标如标准化折现累积增益(NDCG)和平均倒数排名(MRR)
- 点击模型在模拟点击数据上的实验研究
动机
allRank提供了一种简单灵活的方法来实验各种LTR神经网络模型和损失函数。 添加自定义损耗、配置模型和训练过程非常简单。 我们希望allRank能促进神经LTR的研究及其工业应用。在
特点
实现的损失函数:
- ListNet(用于二进制和分级相关性)
- 利斯特姆莱
- 兰克内特
- 顺序损失
- 兰姆达兰克
- 兰达罗斯
- 近似NDCG
- RMSE公司
入门指南
为了帮助您开始,我们提供了一个run_example.sh
脚本,该脚本生成libsvm格式的虚拟排名数据并进行训练
使用提供的示例config.json
配置文件对数据进行转换。运行脚本后,可以在dummy_data
目录中找到虚拟数据
实验结果在test_run
目录中。要运行该示例,需要Docker。在
配置您的模型和培训
要训练您自己的模型,请在config.json
文件中配置您的实验并运行
python allrank/main.py --config_file_name allrank/config.json --run_id <the_name_of_your_experiment> --job_dir <the_place_to_save_results>
训练过程中的所有超参数:即模型定义、数据定位、丢失和使用的度量、训练超参数等都是受控的
通过config.json
文件。我们提供了一个模板文件config_template.json
,其中解释了支持的属性、它们的含义和可能的值。
注意,遵循MSLR-WEB30K约定,包含训练数据的libsvm文件应该命名为train.txt
。您可以指定验证数据集的名称
(例如有效或测试)在配置中。结果将保存在路径<job_dir>/results/<run_id>
在allRank中,Google云存储作为数据和工作结果的存放地得到了支持。在
实现自定义损失函数
为了测试您自己的自定义损失,您需要实现一个函数,该函数以两个张量(模型预测和基本真实值)作为输入
并将其放入losses
包中,确保它在包级别上公开。
要在培训中使用它,只需在配置文件的正确位置传递函数的名称(和参数,如果loss方法有一些超参数):
"loss": {
"name": "yourLoss",
"args": {
"arg1": val1,
"arg2: val2
}
}
应用点击模型
要应用点击模型,你需要首先训练一个allRank模型。 下一步,运行:
python allrank/rank_and_click.py --input-model-path <path_to_the_model_weights_file> --roles <comma_separated_list_of_ds_roles_to_process e.g. train,valid> --config_file_name allrank/config.json --run_id <the_name_of_your_experiment> --job_dir <the_place_to_save_results>
该模型将用于从config中指定的数据集中对所有slate进行排序。下一步-将应用在config中配置的点击模型,结果的点击数据集将以libSVM格式写入<job_dir>/results/<run_id>
下。
结果目录的路径可以作为另一个allRank模型训练的输入。在
持续集成
您应该运行scripts/ci.sh
来验证代码是否通过了样式准则和单元测试。在
研究
这个框架是为支持研究项目Context-Aware Learning to Rank with Self-Attention而开发的。如果您在研究中使用allRank,请引用:
^{pr2}$许可证
Apache 2许可证
- 项目
标签: