Метрики используемые в модели ранжирования

Пытаюсь разобраться в работе модели ranking_ubuntu_v2_bert_sep_inter.json.
Возникла пара вопросов относительно подсчета метрик.

  1. В комментариях к компоненту bert_sep_ranker_predictor написано, что используется косинусная близость для нахождения ответа.
    Те для подходящей пары (контекст, ответ) будет наибольшее значение от 0.0 до 1.0 (поправьте, если не прав).
    Но в подсчете метрики r@k проверяется наличие значения 0.0.
    Я думал, что нужно искать наличие значения равного 1.0 (те сколько документов с высоким значением близости удалось найти).
    Почему идет сравнение с нулем?
    Возможно, я не правильно понимаю, как в модели вычисляется близость между эмбеддингами.

  2. Почему качество модели оценивается по значениям близости, а не по самим текстам?

Здравствуйте!

  1. Все верно, используется косинусная близость: смотрите метод call класса BertSepRankerModel. Метрика r@k получает на вход косинусные близости вопроса со всеми кандидатами на ответ для каждого вопроса, затем эти близости сортируются и проверяется попал ли правильный ответ, который имеет индекс 0, на первые k позиций. Вообще, конфигурационный файл ranking_ubuntu_v2_bert_sep_interact.json и класс BertSepRankerPredictor используются только в режиме interact и там метрики по факту не используются, а вычисляется косинусная близость по базе возможных ответов (см. функцию _retrieve_db_response). Обучение модели и вычисление метрик выполняется с помощью файла ranking_ubuntu_v2_bert_sep.json и класса BertSepRankerModel. Смотрите документацию.
  2. Вопрос не понятен, уточните, что имеется в виду?
2 Likes

Спасибо.

Просто для меня не очевидно, что у правильного ответа будет индекс 0.
Ответы берутся из response_base_loader. Откуда там будет правильный ответ?
Или для вычисления метрик правильный ответ подставляется перед кандидатами?

Из-за этого у меня и возник второй вопрос.
Я думал, что оценивать модель можно только по совпадению текста ответа с кандидатами на ответ (есть ли среди кандидатов правильный ответ). Не знал, что можно по близости считать.

Кажется понял.

В тестовых датасетах для ранжирования несколько кандидатов для ранжирования. Правильный ответ идет первым.

Далее, для каждого из кандидатов считается близость. И для правильного ответа близость должна быть наибольшей.