Мой ранкер правильно обучен?
Я задал вопрос 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