抄訳 Learning to Rank using Gradient Descent (2005)
January 7, 2023ランキング学習のニューラルネットワークRankNetを提案する。 RankNetは、ベクトルから実数を出力し、その出力が大きいほどランキングが高いと予測する。 損失関数には、ある2つのベクトルのうち片方が他方よりもランキングが高い確率をあたえる。 確率とみなす値は、両ベクトルのモデルの出力の差をシグモイド関数に入力したときの出力である。 RankNetの学習は、モデルの出力と訓練データの確率分布の交差エントロピーを最小化する。
モデルの入力を\(d\)次元のベクトル\(\boldsymbol{\mathrm{x}}\in \mathcal{R}^d\), モデルを\(f: \mathcal{R}^d\mapsto \mathcal{R}\)とする。 このとき、\(\boldsymbol{\mathrm{x}}_i\)のランキングが\(\boldsymbol{\mathrm{x}}_j\)よりも高い確率の正解を\(\bar{P}_{ij}\)とすると、 \(\boldsymbol{\mathrm{x}}_i\), \(\boldsymbol{\mathrm{x}}_j\)に対応する交差エントロピー\(C_{ij}\)は $$ \begin{align} o_{ij}&\equiv f(\boldsymbol{\mathrm{x}}_i) - f(\boldsymbol{\mathrm{x}}_j)\\ P_{ij}&\equiv \frac{e^{o_{ij}}}{1+e^{{o}_{ij}}}\\ C_{ij}&=-\bar{P}_{ij}\log P_{ij} - (1-\bar{P}_{ij})\log(1-P_{ij}) \end{align} $$ 研究の中心は、ネットワークではなく損失関数にあるので、提案した損失関数を使用できればネットワークのアーキテクチャは何でもよく、実験では2層の順伝搬ネットワークが使われている。
論文のリンク
雑記
あるペアがあたえられていなくても、ほかにあたえられたペアから、ペアの要素のランキングの高いほうを推論できることがある。 ペアの組合せ数は多いので、推論できないペアを損失関数に渡すほうがよさそう。
2つの入力のどちらのランキングが高いかはクエリによって変わる。 そのため、RankNetを実用するときは、ランク付けしたい対象だけでなく、クエリの情報もベクトルに含める必要がありそう。