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