tgoop.com/artificial_stupid/213
Last Update:
#recsys
Что такое Learning to Rank (LTR)? Pointwise, pairwise, listwise подходы к задаче обучения ранжированию.
Начнем с постановки задачи. Что мы имеем и что хотим получить?
Итак, мы имеем некоторый набор документов D
и запрос q
. И хотим выучить некоторую функцию f(q, D)
, которая бы каждому из документов D
выдавала некий показатель релевантности таким образом, чтобы наиболее релевантные документы находились выше, то есть имели более высокий score.
В случае pointwise постановки задачи, мы переформулируем нашу задачу в обычный формат регрессии или классификации. То есть мы поступаем максимально прямолинейно - учим модель предсказывать нечто на метках.
Соответственно, нам нужно знать некие оценки релевантности, иначе у нас таргета не будет. Ну и учитывать мы будем только один элемент, а не всю информацию о множестве, что не очень хорошо.
В случае pairwise подхода, мы переформулируем задачу в виде классификации вида: больше ли релевантность одного документа, чем другого? При этом, задачу можно сформулировать в вероятностном виде: Pr(i > j) = 1 / (1 + exp(-(s_i - s_j)))
. Если проще, то в следующем формате: если релевантность одного документа выше другого, то вероятность того, что наша функция f
выдаст для него больший score, должна стремиться к 1.
Увы, даже при таком подходе функция скоринга все еще считает поточечно, так что мы не полностью используем доступную нам информацию.
Ну и в случае listwise подхода, мы пытаемся оптимизировать целевую метрику напрямую. И тут сталкиваемся со сложностью - наши метрики ранжирования не очень-то дифференцируемы (при желании попробуйте дифференцировать DCG).
Получается, нам нужно использовать некую аппроксимацию (ListNet), либо эвристики (например, LambdaRank), позволяющие обойти эту проблему.
Общие принципы мы рассмотрели, в следующих заметках постараюсь раскрыть подходы подробнее.
BY Artificial stupidity
Share with your friend now:
tgoop.com/artificial_stupid/213