Комментарии 65
Даже в тех случаях, когда у нас остались нейросети, которые используют только заголовок, мы не ранжируем выдачу непосредственно по их предсказанию. Выход нейросети затем подается в модель CatBoost, которая уже обладает гораздо более полной информацией и может скорректировать предсказание в случаях, когда нейросеть ошибается.
1. Запрос к поиску.
2. Сразу, не глядя даже на результат — клик на вторую страницу выдачи.
3. Практически без участия сознания, просто на рефлексах Ctrl-Click на несколько ссылок подряд.
4. Последовательный просмотр открывшихся табов, 80% из которых захлопываются через 3-5 сек после начала просмотра.
5. Остаются 1-2, которые читаются внимательно и до упора.
По-моему, Ваш алгоритм будет получать категорически неверное подкрепление со стороны пользователя.
Однако, если ранжировать по вероятности клика, получится очень плохо. Поэтому мы дообучаем свои модели на экспертных оценках. Тут одна из главных причин, почему трансформер так полезен — он очень хорошо выучивает именно экспертный сигнал на сравнительно небольшом количестве примеров. Это позволяет убрать смещения, которые могли появиться в модели после долгого обучения на клики в pre-train.
Вектор мешка слов затем пропускается через несколько плотных слоёв нейронов, на выходе которых образуется семантический вектор (иначе эмбеддинг, от англ. embedding, вложение; имеется в виду, что исходный объект-текст вкладывается в n-мерное пространство семантических векторов).
Очень круто. Но все-таки есть некое ощущение, что помимо такого нейронного "брутфорса" есть и аналитическое решение, более эффективное.
При этом обучение моделей на самом деле требует своих подходов и эвристик — на какую задачу учить, как представить входные данные, какие примеры и в каком порядке показывать и т.д. В статье проиллюстрирован только самый простой случай. Так что это не чисто вычислительная, но и содержательно инженерная задача )
Если система по запросу распознала, что речь идёт про фильм, то логично, что она предлагает больше информации, связанной с этим фильмом. А в русскоязычном сегменте интернета Кинопоиск — самый информативный ресурс о кино.
Если ввести в поиск например «капибара» или «дезоксирибонуклеиновая кислота», то картина будет совсем другая.
на всех местах ссылки на свои сервисы + википедию?А википедия-то вам чем не угодила?
«Стримы тоже содержат полезную информацию, но с ними нам ещё надо поработать, чтобы понять, как её эффективно донести до поиска.»
На данный момент стримы не используются в этой модели?
Сложнее всего оказалось выделить хорошие фрагменты текста документа.
Используется ли для выделения фрагментов компьютерное зрение? Ведь текст может быть скрыт, либо добавлен при помощи JS.
Компьютерное зрение для анализа документа в ранжировании веб-страниц не используется. JS вообще говоря тут не помеха, у нас есть возможность заранее «отрендерить» страницу, так как это произошло бы в браузере, и извлечь все текстовые данные из итогового HTML описания после исполнения скриптов.
Работает ) есть нюансы связанные с тем, что не для каждой js страницы мы принимаем решение ее отрендерить.
По второй части вопроса можете еще раз пояснить, или привести пример? Речь про то что на странице есть визуальный контент (e.g. нарисованный текст), который наша модели не сможет «прочитать»? Или про то, что смысл обычного текста может быть сильно обусловлен его визуальным расположением на странице?
Или про то, что смысл обычного текста может быть сильно обусловлен его визуальным расположением на странице?
Да, про это. Но, не смысл, а скорее значимость. В тексте же речь шла именно о присвоении значимости для разных фрагментов. Можно ли считать значимым текстовый фрагмент, который визуально недоступен для пользователей?
И еще — в каких сегментах получен максимальный прирост в качестве ранжирующей модели? Ну, т.е. вроде как понятно, что для информационных запросов (пример с отдыхом) он должен быть выше, чем для «купить кофеварку», но мало ли…
Такое мы умеем сейчас учитывать через алгоритм автоматической сегментации, который разбивает текстовое содержимое страницы на «зоны» разной значимости. Я его кратко упоминаю в статье. Например, мы поймем, что фрагмент текста находится в футере страницы и там скорее всего нет «смыслового» содержания. Но тут конечно есть что улучшить. Визуальная доступность явно не моделируется.
> в каких сегментах получен максимальный прирост
Это очень хороший вопрос ) Мы видим, что есть очень значимое общее улучшение качества поиска. При более детальном рассмотрении можно увидеть характерные примеры, где YATI лучше «понимает» пользователя. Например, в тех случаях когда в запросе есть неочевидная (редкая) опечатка, или есть омонимичные сущности (e.g. это название компании или обычное существительное?), в сложных запросах, где важно понимать порядок и связь слов (e.g. к какому существительному относится прилагательное), и в целом там, где в запросе есть много взаимосвязанных понятий. Но это наверняка не все.
Вы говорите про сегментацию и её возросшую значимость, хотелось бы узнать какими рамками определяется сегмент, имеет ли место вложенная (древовидная) сегментация?
Насколько важны теги заголовков для каждого отдельного сегмента, имеет ли значение семантическая верстка html5 (e.g. section,article,header,footer) или любая DOM-структура помогает сегментировать текстовый контент?
Другими словами, как вебмастер может расставить акценты, чтобы помочь машине правильно сегментировать текстовый контент?
Подчеркну, что сегментация используется только для выделения фрагментов, которые мы покажем модели, но не для оценки их относительной значимости. Это «решает» уже модель. Например, в конкретном случае модель вполне может решить что текст размеченный как заголовок на самом деле не информативен, и тогда он не повлияет на предсказание.
Спасибо за ответ, а что если я наблюдаю ситуацию, когда субъективно (i.e. на мой взгляд) важные текстовые элементы (например, содержащие интент) сложно структурированной страницы игнорируются органическим поиском, т.е. я не могу найти в выдаче свой сайт по уникальным кускам текста по точному вхождению, используя различные операторы.
Теория следующая: текст не был представлен модели или модель сочла его неважным.
Вопрос: какой сигнал ускорит показ модели текста с отдельно взятой страницы для оценки повторно? Например, достаточно ли для этого отправить страницу на переобход? Или важно существенное изменения текста, а если изменилась структура страницы без изменения текста? Как часто (в каких приблизительных временных диапазонах) это происходит в естественном ритме, происходит ли отправка текстовых сегментов модели при каждом новом сканировании проиндексированной страницы?
Подчеркну, спасибо за ответ и за Вашу статью)
Тут нет простого практического ответа. Расчет модели действительно происходит при каждом переобходе страницы, частота которого зависит от разных факторов. Если страница популярная, и контент на ней меняется часто (e.g. новостной ресурс), мы можем ее переобходить несколько раз в час. Но вполне могут быть и дни-недели, так как физически невозможно быстро переобходить все важные для нас страницы из Интернета.
Если содержимое страницы не поменялось, то переобход для модели YATI ничего не изменит — произойдет повторное применение к тем же фрагментам текста, что и раньше.
Наверняка есть способы повысить «привлекательность» веб-страницы конкретно для текущей модели, но это мне не кажется правильной постановкой задачи. Хотя бы потому что модель вполне может сильно измениться при следующем релизе. У веб-мастера должна быть цель написать текст, который 1) хорошо читается и понимается пользователями, 2) логично поделен на секции, так чтобы у нашей модели или у сегментатора было больше очевидных «структурных признаков», которые можно использовать при анализе. А у нас должна быть цель эту информацию учиться лучше использовать.
Понимаю, что это не очень помогает решить конкретную проблему на конкретной странице. В совсем явных случаях, когда очевидно что наш поиск «не видит» содержимого, можно это присылать к нам в виде жалоб. Мы стремимся к тому, чтобы регулярно их разбирать ) Починить каждую конечно не можем, но про крупные проблемы точно хотим знать.
Вы подтвердили мои личные наблюдения и теории) Манипулировать алгоритмом цели не стоит, но определенный паттерн у вебмастеров (и seo-специалистов) в конкурентной среде модель неизбежно создаст. Надеюсь, что развитие Вашей модели идет в сторону динамики, а не инерции) Спасибо за ответ. В поддержку Яндекса пишем-с, но чаще всего получаем стандартный ответ, попробую другие формулировки)
Может быть я уже наглею, но может ли большое количество "неинтересных" для поиска страниц на сайте "замылить" действительно важные страницы и тексты на них?
В крайних случаях думаю может. Например, модель вполне может выучивать свойства хоста как целого и использовать это как первое приближение к ответу. Тогда ей потребуется больше «сигнала», чтобы преодолеть такое выученное смещение. Но это скорее общая теория, на практике таких примеров не встречал.
С Гуглом тоже интересно. Он для Абдо даёт 396 тыс. хитов, и для «Абдо» — 437 тыс. (больше чем в 1-м запросе, уже странно). Но если начать листать, то страниц с результатами окажется всего 16, а самих результатов по факту — всего 152.
Например, оказывается, что почти бесполезно брать в качестве отрицательных документы, для которых был показ, но не было «клика» по запросу
Правильно ли я понял, что в качестве отрицательных примеров берутся пары запрос-выдача (документы), по которым были переформулировки запроса без клика на документы?
Я соглашусь, что это интересная идея для фичи ) Частично такие сценарии закрываются, например, уже существующим саджестом, который предлагает частотные варианты уточнений. Но он все таки решает в бОльшей степени задачу ускорения ввода для частотных версий запроса, чем удобства на менее частотных.
Есть только одно существенное Но — у Яндекса из-за рекламы поиск сложно разглядеть.
Планируете выкладывать языковые модели в опен-сорс, как Сбер с ruGPT-3?
У меня вопрос по первой части. Вы пишете, что из документов делаете стримы. А нет ли у вас среди генерируемых стримов текстов вопросов, которые мог бы задать пользователь к этой статье? Кажется, задача генерации вопросов к тексту должна очень хорошо решаться сетями — и тогда вы получаете супер-релевантный мэтч.
Можете рассказать для каких задач Вы хотели бы использовать такую модель?
Кажется в одной из ваших лекций я видел что в Яндексе было разделение сайтов на коммерческие/некоммерческие, но вроде это было сделано эвристиками.
По ней все-все запросы ранжируются или какая-то часть. Есть часть, то какова ее доля (в процентах, примерно) и что это за запросы, быть может, наиболее популярные?
Более того, в поиске рассчитываются тысячи факторов, но если выключить их все и оставить только новую модель, то качество ранжирования по основной офлайн-метрике упадёт лишь на 4-5%!
Насколько я понимаю, катбуст выстраивает сплиты в дереве по значимости фактора для ранжирования. Более значимые — выше.
Вопросы:
1) Раз новый метод показывает такую высокую эффективность, то он должен быть высоко в решающем дереве. То есть, можно ли говорить о том, что новый метод используется для практически всего объема запросов к яндексу?
Скажем, в гугле про берт говорили про около 10% запросов.
2) Сократился ли размер решающего дерева (кол-во сплитов) после внедрения нового метода?
3) Как бы вы оценили влияние нового метода в ранжировании коммерческих запросов? Там же нет больших текстов, а те, что есть, достаточно насыщены ключами.
И немного не понял про определение куска текста, наиболее важного для ранжирования.
Сначала, вы пишите, что у Палеха и Королева есть проблемы с релевантностью на сложных документах, потому что не умеет выделять зоны.
А потом:
Сложнее всего оказалось выделить хорошие фрагменты текста документа.
уже про берт.
Хотя, как я понял, берт должен это уметь сам.
1 и 2 — Решающие деревья в GBDT работают немного по-другому. Глубина дерева фиксирована, мы ее в наших моделях CatBoost не меняем. Если есть сильный признак, то сплит по нему будет просто встречаться чаще (и возможно выше) в дереве той же глубины, и соответственно будет сильнее влиять на итоговое предсказание. Размер влияния можно увидеть например по метрике FSTR, которая численно оценивает вклад конкретного признака в предсказание. В случае с YATI — вклад новой модели заметно больше 50% от суммарного вклада всех признаков. В этом смысле трансформер решает «больше половины» задачи ранжирования.
3 — коммерческие запросы тоже бывают разные; текст документа с товаром там действительно сравнительно простой, но даже там есть нюансы — например, есть ли в тексте подробное описание, технические характеристики и т.д.; релевантным по коммерческому запросу может быть не только страница товара, но и страница с обзором, обсуждением или отзывом, где уже есть сложное текстовое содержание; наконец, сам запрос может быть сформулирован сложно, тут трансформер тоже помогает
У Палеха и Королева есть проблемы с качеством по разным причинам. Во первых потому, что сами сети сильно проще и модель текста тоже упрощенная (тот самый «мешок слов»). Поэтому с длинным связным текстом они справляются плохо. Трансформер это умеет делать лучше, но все равно показать ему весь текст страницы — сложно, хотя бы из соображений производительности. Поэтому мы выделяем из всей страницы фрагменты текста и подаем их YATI на вход. Это заметно лучше раньше, но это все еще не полное содержимое документа.
тяжёлые нейросети для поиска по смыслуАга, только вот «смысл» этот заточен чаще всего под банальное «продать».
Конкретный пример: ввожу в поиске слово «кроссовки».
Результат: из 20 ссылок на первой странице лишь одна ведет на обзорную статью, и та рекламного характера, к тому же на Яндекс.Дзене. Остальные ссылки ведут в магазины за покупкой.
Разве я спрашивал «купить кроссовки»? Нет! Перед приобретением я хочу узнать, какие кроссовки бывают, из каких материалов делаются, где и кем производятся, и так далее.
Поэтому убедительная просьба к Яндексу: выделяйте место на первой странице под некоммерческую информацию, хотя бы на 50%. Только тогда это будет реально соответствовать заявленным Принципам Яндекса:
Мы создаём сервисы, которые приносят пользу людям и дают им новые возможности. Мы делаем сервисы, которыми хотели бы пользоваться сами, делиться с друзьями и близкими. Мы не создаём сервисы только ради зарабатывания денег.
Пользователь — наш главный заказчик, то есть тот, для кого мы работаем и делаем сервисы. Это касается не только людей, которые обращаются к Яндексу за решением повседневных задач, но и наших партнёров: магазинов, ресторанов, курьеров, водителей, создателей контента и всех остальных. Все они наши пользователи.
Мы осознаём свою ответственность за сервисы, которыми пользуются миллионы людей, и стараемся развивать их таким образом, чтобы максимизировать пользу и минимизировать вред.
Некоторые сервисы мы развиваем несмотря на то, что они никогда не станут прибыльными. Мы делаем так потому, что верим в их ценность и пользу для людей.
Яндекс открыт к диалогу с обществом и государством. Умение слушать общество и реагировать на общественные запросы, оставаясь при этом в правовом поле, — необходимое условие развития компании.
Ранжирование результатов поиска происходит на основе критерия полезности — того, насколько конкретный элемент на соответствующем месте решает задачу пользователя наряду с другими элементами по запросу. Сервисы Яндекса также ранжируются по этому принципу.
Перед приобретением я хочу узнать, какие кроссовки бывают, из каких материалов делаются, где и кем производятся, и так далее.
Само по себе это слово такого смысла не содержит. А без смысла, просто по упоминанию на странице — разнообразные магазины и будут большей частью страниц в интернете.
Как я уже писал выше, уж если ищется 'по смыслу' — то поисковик должен показать пользователю те варианты смысла, которые он нашел/видел/понимает, и предложить пользователю выбрать нужный.
1. Видел в комментах, что система особенно хорошо справляется со сложными опечатками. А нельзя по такому случаю вообще выкинуть опечаточник, кормить трансформерам сразу сырой запрос и сэкономить на этом ещё сколько-то драгоценных миллисекунд?
2. Много лет назад я немножко носился с идеей учитывать в ранжировании предсказанную по сниппету открываемость документа, таким образом оптимизируя не успех пользователя, тупо кликающего сверху вниз, а успех того, который сниппет читает. Вы не думали какой-то новый заход сюда сделать с трансформерами? Возможно, персонализируясь с учётом разных паттеров чтения выдачи.
2 — верно ли я понял вашу мысль, что клик пользователя, прочитавшего сниппет, более информативен (или как минимум содержит дополнительную полезную информацию) по сравнению с обычным кликом? И, соответственно, если от модели спрятать урл и заголовок, и оставить только сниппет, то она ровно такой клик и научится предсказывать? Моделями на сниппетах мы раньше занимались, и там было сложно найти полезный сигнал, поэтому в то, что наивный подход даст что то новое не очень верю. Трансформеры на сниппетах пока подробно не смотрели. При этом сама тема «качества» клика нас конечно очень интересует.
2 — это интересная мысль, но не моя :)
Моя мысль другая. Целевая функция может быть не релевантность документа запросу, а релевантность документа запросу при условии клика на сниппет. И если под эту функцию ранжировать, то dcg-подобные метрики, предполагающие клики строго сверху вниз, конечно, просядут. Но счастье пользователя, читающего сниппеты, может вырасти. Интересно, думает ли сейчас кто-то в эту сторону, и если да — что получается.
Выше в комментах про апишку сегментатора писали, она называлась RCA. Но для внутреннего использования там ничего интересного не было, сегментатор + структурированные данные от новостей, всё это в ранжировании давно учитывается.
А откуда в поиске брались непонятные страницы с абракадаброй из фраз, набранных с разных сайтов? И почему они имели неплохие позиции?
Меня искренне волнует, почему нейросети Яндекса не справляются с запросом "гол задницей", "гол задницей видео", а гугл отрабатывает наура
Трансформеры в Поиске: как Яндекс применил тяжёлые нейросети для поиска по смыслу