Сейчас уже сложно придумать такой запрос, по которому находится меньше десятка страниц. А по многим запросам результатов поиска — миллионы. И со временем их становится все больше — интернет очень быстро растет. Поэтому поисковой системе уже недостаточно просто показать все страницы со словами из запроса — чтобы найти подходящий ответ, человеку придется листать десятки страниц с результатами поиска. Поисковая система должна расположить найденные страницы в нужном порядке — так, чтобы сверху оказались наиболее подходящие пользователю (наиболее релевантные). Этот процесс — упорядочивание результатов поиска в соответствии с запросом пользователя — называется ранжированием. Именно ранжирование определяет качество поиска — то есть качество ответа на вопрос, заданный в поисковой строке.
При нынешнем развитии интернета невозможно предугадать все запросы к поиску и найти один вечно лучший ответ. Поэтому поисковик должен уметь самостоятельно определять, какой ответ хороший, а какой — нет.
Каждый день Яндекс отвечает на десятки миллионов запросов. Около четверти из них — неповторяющиеся. Поэтому невозможно написать для поисковой системы такую программу, в которой предусмотрен каждый запрос, и для каждого запроса известен лучший ответ. Поисковая система должна уметь принимать решения самостоятельно, то есть — сама выбирать из миллионов документов тот, который лучше всего отвечает пользователю. Для этого нужно научить ее обучаться.
Задача научить машину обучаться существует не только в поисковых технологиях. Без машинного обучения невозможно, например, распознавать рукописный текст или речь. Термин «машинное обучение» появился еще в 50-х годах. Этот термин обозначает попытку научить компьютер решать задачи, которые легко даются человеку, но формализовать путь их решения сложно. В результате машинного обучения компьютер может демонстрировать поведение, которое в него не было явно заложено.
Поисковая система должна научиться строить правило, которое определяет для каждого запроса, какая страница является хорошим ответом на него, а какая — нет. Для этого поисковая машина анализирует свойства веб-страниц и поисковых запросов. У всех страниц есть какие-то признаки. Некоторые из них — статические — связаны с самой страницей, например, количество ссылок на эту страницу в интернете. Некоторые признаки — динамические — связаны одновременно с запросом и страницей — например, присутствие в тексте страницы слов запроса, их количество и расположение.
У поискового запроса тоже есть свойства, например, геозависимость — это означает, что для хорошего ответа на этот запрос нужно учитывать регион, из которого он был задан. Свойства запроса и страницы, которые важны для ранжирования и которые можно измерить числами, называются факторами ранжирования. Для точного поиска важно учитывать очень много разных факторов.
В формуле ранжирования сочетаются разные факторы
Асессоры
Кроме факторов ранжирования поисковой системе необходимы образцы — запросы и страницы, которые люди считают подходящими ответами на эти запросы. Оценкой того, насколько та или иная страница подходит для ответа на тот или иной запрос, занимаются специалисты — асессоры. Они берут поисковые запросы и документы, которые поиск находит по этим запросам, и оценивают, насколько хорошо найденный документ отвечает на заданный запрос. Из запросов и хороших ответов составляется обучающая выборка. Она должна содержать самые разные запросы, причем в тех же пропорциях, в которых их задают пользователи. На обучающей выборке поисковая система устанавливает зависимость между страницами, которые асессоры посчитали релевантными запросам, и свойствами этих страниц. После этого она может подобрать оптимальную формулу ранжирования — которая показывает релевантные запросу сайты среди первых результатов поиска.
На примере это выглядит так. Допустим, мы хотим научить машину выбирать самые вкусные яблоки. Асессоры в этом случае получают ящик яблок, пробуют их все и раскладывают на две кучи, вкусные — в одну, невкусные — в другую. Из разных яблок составляется обучающая выборка. Машина пробовать яблоки не может, но она может проанализировать их свойства. Например — какого они размера, какого цвета, сколько сахара содержат, твердые или мягкие, с листиком или без. На обучающей выборке машина учится выбирать самые вкусные яблоки — с оптимальным сочетанием размера, цвета, кислоты и твердости. При этом могут возникать какие-то ошибки. Например, поскольку машина ничего не знает про червяков, среди выбранных яблок могут оказаться червивые. Чтобы ошибок было меньше, нужно учитывать больше признаков яблок.
Переобучение
В поисковых технологиях машинное обучение применяется с начала 2000-х годов. Разные поисковые системы используют разные модели. Одна из проблем, которые возникают при машинном обучении — переобучение. Переобучившаяся машина похожа на студента, который перезанимался — например, прочитал очень много книжек перед экзаменом по психологии. Он мало общается с живыми людьми и пытается объяснить простые поступки слишком сложными моделями поведения. И из-за этого поведение друзей для него всегда неожиданно.
Как это выглядит: когда компьютер оперирует большим количеством факторов (в нашем случае это — признаки страниц и запросов), а размер обучающей выборки (оценок асессоров) не очень велик, компьютер начинает искать и находить несуществующие закономерности. Например, среди всех оцененных страниц могут оказаться две с какой-то сложной комбинацией факторов, например, с размером 2 кб, фоном фиолетового цвета и текстом, который начинается на букву «я». И обе эти страницы окажутся релевантными запросу [яблоко]. Компьютер начнет считать эту случайную комбинацию факторов важным признаком релевантности запросу [яблоко]. При этом все важные документы про яблоки, которые такой комбинацией факторов не обладают, покажутся ему менее релевантными.
Для построения формулы ранжирования Яндекс использует собственный метод машинного обучения — Матрикснет. Он устойчив к переобучению.