Мой ранкер правильно обучен?

Я задал вопрос What is the ...? с помощью /fcselect обработчик без идентификатора ранкера и получил следующие документы:

"docs": [
  {"id": "100"},  // ranked first
  {"id": "101"},  // ranked second
  ...
  {"id": "198"},  // ranked second from last (99th)
  {"id": "199"}   // ranked last (100th)
]

Затем я создал ранкер, используя следующую основную истину:

What is the ...?,199,5,198,4
...

Затем я задал тот же вопрос, используя /fcselect обработчик с ранкером и получил следующие документы:

"docs": [
  {"id": "100"},  // ranked first
  {"id": "101"},  // ranked second
  ...
  {"id": "199"},  // ranked 30th
  ...
  {"id": "198"}   // ranked 35th
  ...
]

но я ожидаю, как в следующем порядке:

"docs": [
  {"id": "199"},  // ranked first
  {"id": "198"},  // ranked second
  {"id": "100"},  // ranked third
  {"id": "101"}   // ranked 4th
  ...
]

Ранкер правильно обучен?

1 ответ

Смотрите здесь для ответа на аналогичный вопрос: https://developer.ibm.com/answers/questions/317822/4-stars-answers.html.

При подходе обучения к рангу, безусловно, нет никаких гарантий, что ранкер переместит ответы, помеченные как "правильные" в основной правде, в верхнюю часть результатов поиска. Это связано с тем, что средство ранжирования не запоминает правильные ответы, а скорее надеется захватить обобщения в распределениях значений свойств, фиксируя перекрытие между запросами и результатами поиска. Чтобы проверить, что обучение ранкеров ведет себя так, как ожидалось, вы можете измерить точность результатов топ 1 по большому набору запросов (отличающихся от запросов, использованных во время обучения) и проверить улучшение в среднем.

Тем не менее, это, конечно, странно, что первые два ранжированных результатов поиска не меняются вообще в ответ на обучение ранкеров. Некоторые вещи, которые следует учесть в экспериментах для улучшения производительности:

  • Достаточно ли велико количество строк, передаваемых ранкеру (в вашем примере этот параметр должен быть не менее 100, поскольку по умолчанию установлено значение 10).
  • Является ли количество строк, включенных во время обучения ранкера (при подготовке файла наземной истины), таким же, как количество строк, включенных во время выполнения (они должны соответствовать для оптимальной производительности - и это настройка, с которой вы можете играть для настройки производительности)?
  • Существует ли лексический пробел между запросом и документами правильного ответа, который может сбить с толку ранкера? Можно ли включить синонимы / удаление стоп-слов / нижний регистр / основание и т. Д. В ваши индексы / анализаторы запросов, чтобы улучшить совпадение между запросом и правильным ответом?
  • Есть ли дополнительные функции, которые вы могли бы добавить и передать ранкеру во время обучения и выполнения, которые могли бы лучше уловить совпадение между вопросами и ответами кандидатов из результатов поиска? Смотрите здесь для получения дополнительной информации: https://medium.com/machine-learning-with-ibm-watson/developing-with-ibm-watson-retrieve-and-rank-part-3-custom-features-826fe88a5c63?cm_mc_uid=06908383978514879641730&cm_mc_sid_50200000=1488383112
Другие вопросы по тегам