RankNet: Как работает Bing?

пятница, 24 сентября 2010, Александр Краковецкий

Bing использует для ранжирования разработанную исскуственную нейронную сеть. Вначале давайте посмотрим, как работает нейронная система человека. Человеческий мозг состоит из 50-100 миллиардов нейронов, которые составляют его основу. Нейрон - это структурно-функциональная единица нервной системы. Каждый нейрон связан с другими нейронами, которые в целом формируют нейронную сеть. Электрические и химические импульсы проходят от одного нейрона к другому через аксон. В месте соединения аксона с телом нейрона находится аксонный холмик — именно здесь происходит преобразование постсинаптического потенциала нейрона в нервные импульсы, для чего требуется совместная работа натриевых, кальциевых и как минимум трех типов калиевых каналов.

Ниже показана схема простейшей нейронной сети, которая состоит из трех слоев (вход, "черный ящик" или "магия", выход):


Рассмотрим каждую часть сети более подробно.

Нейрон: 

Нейрон - это элемент сети, который может выполнять некоторые операции - от арифметических до работы с комплексными функциями.

Пусть у нас есть функция f(x):

f(x) = (x*x) + 5x + 4;

Если какой-нибудь нейрон оперируетс f(x), то он просто вычисляет выход для каждого х. Если x = 1, то выход будет 10 (1 + 5 + 4). 18, 28, 54 - для 2, 3 и 5 соответственно. Эта функция называется функцией активации нейрона.

В принципе, нейрон может работать со сложными данными. Но для простоты будем использовать лишь числовые входы и выходы.

Слои:

Каждый нейрон соединен с множеством других нейронов. Для организации работы они объедены в слои. Мы можем сказать, что нейронная сеть состоит из одного входного слоя-ввода, слоя-вывода и несколько промежуточных слоев (или скрытых). Нейрон соединен со всеми нейронами на предыдущих слоях. Количнство этих слоев зависит от сложности решаемой задачи.

Сила соединения:

Связь нейронов характеризуется силой соединения. Передаваемое значение равно произведению выходного значения на силу соединения нейронов. В большинстве случаев, сила соединения находится в диапазоне от 0 до 1, но лишь одно из этих значений может быть передано дальше. В идеале, все нейроны в конкретном слое соеденены с нейронами последующего. Но, значение силы соединения, равное 0, делает это соединение бесполезным.

Если нейрон соединен с несколькими нейронами предыдущего слоя, то входящим значением будет считаться сумма значений входящих нейронов.

Обучение нейронной сети:

Сеть, которая изображена на рисунку выше, состоит из 9 нейронов, которые находятся в трех слоях (в количестве 3, 4, 2 соответственно).

Пусть активационная функция для нейрона - f(x), т.е. линейная зависимость, что значит, что нейрон передает такое же значения, что и получает. Также примем за 1 все значения силы соединения. Таким образом, для входного знания x = 2 на втором слоя будем иметь значение 6 (2*3), на третьем - 24 (6*4). Значение вывода для x = 1, 2, 3 будут 12, 24, 36 соответственно или 12*х.

Теперь я хочу обучить сеть таким образом, чтобы получить 10*х на выходе. Для этого можно просто изменить силу соединения. Если мы установим силу соединения для одного нейрона первого слоя равной 0.5 (другие нейроны трогать не будем), то на выходе мы получим 10, 20, 30 для х = 1, 2, 3 соответственно.

Т.е. изменив лишь одну силу соединения, мы получили изменение выхода всей системы. Данный пример - лишь иллюстрация как работает обучение модели, в реальном мире необходимо использовать различный методы и алгоритмы для изменения значений силы соединений.

Проблемы:

Теперь предстаьте, что вместо функции f(x) мы используем, к примеру, f(x,y,z), причем каждый из трех нейронов может иметь свои внутренние зависимости. Если экстраполировать это все на большое количество нейронов и слоев, то получим очень сложную сеть. Для работы с ней используются многие алгоритмы для коррекции весов, например, алгоритмы Back Propagation и Radial Basis Function (RBF).

В первую очередь необходимо опеределить количество нейронов, которое будет использовано и как они будут размещены по слоям. Это полностью зависит от исторических (учебных) данных. После этого выбирают метод обучения, который устанавливает веса соединений. Методы обучения также отличаются в зависимости от начальных условий, использованного алгоритма и других факторов.

Нейронная сеть Bing была обучена на тысячах наборах данных:

We continue our focus on relevance, with additional spotlights on real time indexing and ranking, comprehensiveness and quality of content in the index.  We added a number of new relevance features to RankNet (our ranking system) to improve search quality. We also have scaled our experimentation infrastructure to run tens of thousands of experiments in order to improve our results and related searches. We produce specialized nets that can be applied to different query types. We rely on a large number of implicit and explicit metrics when evaluating each experiment to gain a holistic understanding on how the new changes will affect the efficiency and satisfaction of our users.

Мы продолжаем работать над релевантностью, полнотой и качеством содержания. Мы добавили большое количество новых параметров в RankNet для повышения качества поиска. Также мы улучшили нашу инфраструктуру для проведения тысяч экспериментов с целью повышения точности поиска. Мы предлагаем различные модели для разных типов поиска. Мы используем большое количество метрик для оценки результатов наших экспериментов и того, как наши изменения влияют на удовлетворенность пользователей.

Satya Nadella, Senior Vice President, Research and Development, Online Services Division

Для тех, кто интересуется математикой, предлагаю раздел из научной статьи, описывающей RankNet [4]:


Ссылки по теме:

  1. User Needs, Features and the Science behind Bing
  2. Rank Net Explained - How Bing works
  3. RankNet:How Bing Works
  4. Learning to Rank using Gradient Descent
  5. Search Engines and Algorithms: Optimizing for MSN’s RankNet Technology


Ищите нас в интернетах!

Комментарии

Свежие вакансии