AllRankは、次の実装を特徴とする神経学習(LTR)モデルをトレーニングするためのPytorchベースのフレームワークです。
AllRankは、さまざまなLTRニューラルネットワークモデルと損失関数を実験するための簡単で柔軟な方法を提供します。カスタム損失を追加し、モデルとトレーニング手順を構成するのは簡単です。 AllRankが、神経LTRの研究とその産業用途の両方を促進することを願っています。
開始するために、LIBSVM形式でダミーランキングデータを生成するrun_example.shスクリプトを提供し、提供されたconfig.json configファイルを使用してデータ上のトランスモデルをトレーニングします。スクリプトを実行すると、ダミーデータはdummy_dataディレクトリとtest_runディレクトリの実験の結果にあります。例を実行するには、Dockerが必要です。
トーチバイナリはGPUおよびCPUバージョンでは異なるため、CPUでは機能しません。適切なDocker画像バージョンを選択して構築する必要があります。
そのためには、 arch_version build-argとしてgpuまたはcpuを渡す
docker build --build-arg arch_version=${ARCH_VERSION}
run_example.shを呼び出すとき、最初のcmd行の引数で適切なバージョンを選択できます。
run_example.sh gpu ...
cpuが指定されていない場合はデフォルトです。
独自のモデルをトレーニングするには、 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>
トレーニング手順のすべてのハイパーパラメーター:IEモデルの定義、データの位置、損失、メトリックを使用する、トレーニングハイパーパラメーターなどは、 config.jsonファイルによって制御されます。サポートされている属性、その意味、および可能な値が説明されているテンプレートファイルconfig_template.jsonを提供します。 MSLR-WEB30Kコンベンションに続いて、トレーニングデータを備えたLIBSVMファイルはtrain.txtという名前であることに注意してください。構成で検証データセット(有効またはテストなど)の名前を指定できます。結果は、パス<job_dir>/results/<run_id>の下に保存されます
Googleクラウドストレージは、データとジョブの結果の場所としてAllRankでサポートされています。
独自のカスタム損失を試すには、2つのテンソル(モデル予測とグラウンドトゥルース)を入力として取得する関数を実装し、それをlossesパッケージに入れて、パッケージレベルで公開することを確認する必要があります。トレーニングで使用するには、構成ファイルの正しい場所に機能の名前(およびargs、args、args、hyperparameters)を単に渡すだけです。
"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 eg train,valid> --config_file_name allrank/config.json --run_id <the_name_of_your_experiment> --job_dir <the_place_to_save_results>
このモデルは、構成で指定されたデータセットからすべてのスレートをランク付けするために使用されます。次に、構成で構成されたクリックモデルが適用され、結果のクリックスルーデータセットは<job_dir>/results/<run_id>の下にLIBSVM形式で記述されます。結果ディレクトリへのパスは、別のAllRankモデルトレーニングの入力として使用できます。
scripts/ci.shを実行して、コードがスタイルのガイドラインと単体テストに合格していることを確認する必要があります。
このフレームワークは、研究プロジェクトのコンテキスト認識学習をサポートするために開発されました。研究でAllRankを使用している場合は、引用してください。
@article{Pobrotyn2020ContextAwareLT,
title={Context-Aware Learning to Rank with Self-Attention},
author={Przemyslaw Pobrotyn and Tomasz Bartczak and Mikolaj Synowiec and Radoslaw Bialobrzeski and Jaroslaw Bojar},
journal={ArXiv},
year={2020},
volume={abs/2005.10084}
}
さらに、NeuralNDCG損失関数を使用する場合は、対応する作業、NeuralNDCGを引用してください。
@article{Pobrotyn2021NeuralNDCG,
title={NeuralNDCG: Direct Optimisation of a Ranking Metric via Differentiable Relaxation of Sorting},
author={Przemyslaw Pobrotyn and Radoslaw Bialobrzeski},
journal={ArXiv},
year={2021},
volume={abs/2102.07831}
}
Apache 2ライセンス