Вопрос или проблема
Рассмотрим задачу обучения ранжированию, где я обучаюсь на N элементах, отображаемых пользователю для каждого запроса. Предположим, что я могу количественно оценить вероятность исследования $P[E_i]$ каждой позиции $i$ при условии, что первая позиция была исследована (т.е. относительно первой позиции). Обратная связь от пользователя бинарная – клик / нет клика.
Теперь предположим, что я использую функцию потерь softmax-кроссэнтропии в построчном режиме (не спрашивайте, почему – предположим, что это ограничение в системе) для каждого запроса. Каков был бы ‘правильный’ способ интегрировать информацию о смещении позиции?
Интуитивно, клик на более низкой позиции информативнее, чем клик на более высокой позиции. Поэтому было бы полезно взвешивать потерю обратно пропорционально $P[E_i]$ для клика на позиции $i$. С другой стороны, отсутствие клика на низкой позиции менее информативно, поэтому имеет смысл взвешивать термины внутри soft-max таким образом, чтобы низкая вероятность исследования приводила к меньшему эффекту. Но какие правильные веса? Это неочевидно.
Один из способов интегрировать информацию о смещении позиции – это дисконтированный накопленный доход (DCG). DCG суммирует полезность или доход результатов, дисконтированных по их позиции в списке результатов. Обычно используется нормализованный DCG (NDCG), который нормализует накопленный доход на каждой позиции для конкретной ранжированной позиции.
NDCG обычно используется как метрика оценки. SoftRank – это версия, которая была адаптирована для использования в качестве функции потерь. Существуют также более современные версии, такие как Weighted Approximate Pairwise Ranking Loss (WARPLoss).
Ответ или решение
В рамках задачи обучения ранжированию, когда у нас имеется N элементов, отображаемых пользователю в ответ на запрос, важным аспектом является учет позиционной предвзятости. Позиционная предвзятость подразумевает вероятность того, что элемент на определенной позиции $i$ будет просмотрен пользователем после первого элемента. Наличие бинарной обратной связи (клик/неклик) создает дополнительные сложности, когда необходимо использовать функцию потерь на основе софтмакса и кросс-энтропии.
Учет позиционной предвзятости
Чтобы корректно интегрировать информацию о позиционной предвзятости в функцию потерь софтмакс-кросс-энтропии, можно рассмотреть два основных аспекта:
-
Влияние клика на элементы: Клики на элементах, расположенных ниже в списке, считаются более информативными, чем клики на верхних позициях. Поэтому следует увеличить вес потерь для кликов на низкопозиционных элементах с учетом их вероятности просмотра.
-
Влияние незакликнутых элементов: Не-клики (или отсутствие клика) на элементах с низкой вероятностью просмотра $P[E_i]$ должны влиять на потери меньше, чем не-клики на более вероятных позициях. Это предполагает, что мы должны уменьшить вес этих значений в расчетах.
Предложение по корректировке функции потерь
Один из путей интеграции позиционной предвзятости — использование нормализованной кумулятивной выгоды (NDCG). NDCG учитывает полезность элементов, которую необходимо уменьшить в зависимости от их позиции в списке. Это может быть реализовано следующим образом:
-
Расчет DCG:
[
DCG = \sum_{i=1}^{N} \frac{rel(i)}{\log_2(i+1)}
]
Здесь $rel(i)$ — это релевантность элемента на позиции $i$, а $\log_2(i+1)$ используется для снижения веса элементов, стоящих на более низких позициях. -
Использование Weighted Approximate Pairwise Ranking Loss (WARPLoss):
WARPLoss может быть адаптирован для учета позиционной предвзятости, добавляя веса, которые обратны вероятности $P[Ei]$. В этом случае потери могут быть пересчитаны следующим образом:
[
L{i} = -P[E_i] \cdot \log(y_i) \cdot w_i
]
где $w_i = \frac{1}{P[E_i]}$ для кликов и менее значительное значение для не-кликов.
Заключение
Включение информации о позиционной предвзятости в функцию потерь софтмакс-кросс-энтропии в системе обучения ранжированию требует осторожного подхода к определению весов на основе вероятностей просмотра. Использование DCG или адаптация WARPLoss позволяют эффективно учесть как клики, так и не-клики, придавая больший вес более информативным сигналам из нижних позиций. Это способствовало бы более точному обучению моделей для оптимизации показателей ранжирования и, следовательно, улучшению пользовательского опыта.