Posts

Showing posts from May, 2018

ランキング学習勉強会第1回 まとめ

Image
ランキング学習勉強会第1回 まとめ 先月、株式会社ロンウイットにて、ランキング学習勉強会が開催された。私は勉強会の後半で当時まで Learning-to-Rank for Lucene (LTR4L) で実装してきたニューラルネットワーク(NN)のアルゴリズムの理論について発表し、LTR4L のデモも行った。イベントの詳細や登壇者が使用したスライドなどはこちらで見られる。

ランキング学習勉強会で紹介したアルゴリズムは以下のとおりである。
 - PRank (Perceptron Ranking)
 - OAP-BPM
 - RankNet
 - FRankNet
 - LambdaRank
 - SortNet
 - ListNet

加うるに、以下の点についても解説した。
 - 損失関数
 - 精度評価指標
 - 最急降下法・確率的勾配降下方
 - バックプロパゲーション(誤差逆伝播法)

それぞれのアルゴリズムについては LTR4L の README.md でまとめてはあるが、勉強会でより詳細に解説したので、以下 NN のアルゴリズムを簡単にまとめていこうと考えている。
疑似コードは LTR4L の README.md 、または元論文を参照。FRankNet と SortNet の解説は省略する。
単純パーセプトロンのアルゴリズム PRank (Perceptron Ranking) 種類:ポイントワイズ
PRank は単純パーセプトロンという、入力層と出力層の2層のニューラルネットワークを用いたアルゴリズムであり、その目的は文書を分類することである。 入力層は特徴量分のノードで構造されており、出力層はノード1個(出力ノード)で構造されている。 各入力ノードは出力ノードに重み付きのリンク(Edge)を張られ、出力ノードに信号を送る。 どういう信号を送るかというと、入力信号(特徴)をそのまま出力し、それを重みでかけ、それを出力ノードに入力する。出力ノードは、入力信号の総和をそのまま出力する。


PRank の目的は文書を分類することなので出力に基づいた分類法方が必要である。分類するために、ランキング順位数と同じ数のしきい値を用意する。 例えば、文書につく可能なランキング順位が 1☆、2☆、3☆ とした場合はしきい値を3つ用意する。出力を初めて超えるしきい値の番…