Яндекс запустил новую версию поиска. В её основе лежит поисковый алгоритм «Королёв». Алгоритм с помощью нейронной сети сопоставляет смысл запросов и веб-страниц — это позволяет Яндексу точнее отвечать на сложные запросы. Для обучения новой версии поиска используются поисковая статистика и оценки миллионов людей. Таким образом, вклад в развитие поиска вносят не только разработчики, но и все пользователи Яндекса.
Слова и смыслы
Прежде чем рассказывать про настоящее и будущее поиска, вспомним его прошлое. Первые поисковые системы появились в середине 1990-х годов, когда интернет был совсем небольшим — счёт сайтов шёл на тысячи. Чтобы помочь человеку найти нужное, достаточно было составить список веб-страниц, где есть слова из поискового запроса. О сложном ранжировании — то есть упорядочивании страниц по степени соответствия запросу — речь не шла. Считалось, что чем чаще в документе встречаются слова из запроса, тем лучше он подходит.
Интернет быстро рос, и потребовались дополнительные критерии отбора. Поисковики начали учитывать ссылки на документы, научились определять регион, откуда поступил запрос, стали обращать внимание на поведение пользователей.
В какой-то момент факторов ранжирования — признаков, по которым можно определить, насколько хорошо страница отвечает на запрос, — набралось так много, что стало ясно: прописать их все в виде инструкций невозможно. Лучше научить машину самостоятельно принимать решения: какие признаки использовать и как их комбинировать. В Яндексе для этих целей придумали Матрикснет. Это метод машинного обучения, с помощью которого строится наша формула ранжирования.
Поиск, однако, по-прежнему опирается на слова. Перед тем как пустить в ход сложную формулу ранжирования, поисковые машины составляют список «предварительно подходящих» веб-страниц — таких, в которых есть слова из запроса. Нам, людям, понятно, что один и тот же смысл можно выразить разными словами. Веб-страница может не содержать всех слов из запроса, но тем не менее очень хорошо на него отвечать. Однако объяснить это машине довольно сложно.

Новый алгоритм позволяет поиску Яндекса лучше отвечать на сложные запросы из «длинного хвоста». Такой хвост есть у сказочной Жар-птицы, которая часто появляется на палехской миниатюре. Именно поэтому новый алгоритм был назван «Палех».
Запуская «Палех», Яндекс научил нейронную сеть преобразовывать поисковые запросы и заголовки веб-страниц в группы чисел — семантические векторы. Важное свойство таких векторов состоит в том, что их можно сравнивать друг с другом: чем сильнее будет сходство, тем ближе друг к другу по смыслу запрос и заголовок.
Как работает алгоритм «Королёв»
Поисковый алгоритм «Королёв» сравнивает семантические векторы поисковых запросов и веб-страниц целиком — а не только их заголовков. Это позволяет выйти на новый уровень понимания смысла. Представьте, что вы впервые услышали о романе Льва Толстого «Война и мир». Безусловно, вы сможете извлечь смысл из названия — например предположить, что в книге много батальных сцен. Но чтобы узнать все хитросплетения сюжета и давать исчерпывающие ответы на вопросы о романе, вам потребуется прочитать его полностью.

Как и в случае с «Палехом», тексты веб-страниц в семантические векторы преобразует нейросеть. Эта операция требует много вычислительных ресурсов. Сравните: на то, чтобы прочитать название книги, у вас уйдут считанные секунды, но на то, чтобы прочитать её всю от корки до корки, потребуются часы, дни или даже недели. Поэтому «Королёв» высчитывает векторы страниц не в режиме реального времени, а заранее, на этапе индексирования. Когда человек задаёт запрос, алгоритм сравнивает вектор запроса с уже известными ему векторами страниц.
Такая схема позволяет начать подбор веб-страниц, соответствующих запросу по смыслу, на ранних стадиях ранжирования. В «Палехе» смысловой анализ — один из завершающих этапов: через него проходят всего 150 документов. В «Королёве» он производится для 200 тысяч документов — то есть в тысячу с лишним раз больше. Кроме того, новый алгоритм не только сравнивает текст веб-страницы с поисковым запросом, но и обращает внимание на другие запросы, по которым люди приходят на эту страницу. Так можно установить дополнительные смысловые связи.
Люди учат машины.
Использование машинного обучения, а особенно нейросетей, рано или поздно позволит научить поиск оперировать смыслами на уровне человека. Но без помощи людей тут не обойтись. Чтобы машина поняла, как решать ту или иную задачу, необходимо показать ей огромное количество примеров: положительных и отрицательных. Такие примеры дают пользователи Яндекса.

Источник: Яндекс