Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Глубокое обучение для поисковых систем

Покупка
Артикул: 739780.01.99
Доступ онлайн
999 ₽
В корзину
В книге рассказывается о том, как использовать глубокие нейронные сети для создания эффективных поисковых систем. Рассматривается несколько компонентов поисковой системы, дается представление о том, как они работают, и приводятся рекомендации по использованию нейронных сетей в разных контекстах поиска. Особое внимание уделено практическому объяснению методов поиска и глубокого машинного обучения на базе примеров, большинство которых включает фрагменты кода. Автор освещает основные проблемы, связанные с поисковыми системами, и указывает пути решения этих проблем. Он раскрывает принципы тестирования эффективности нейронных сетей, а также измерения их затрат и выгод. Издание предназначено для читателей, владеющих программированием на среднем уровне и отлаживающих поисковые системы с целью повышения их эффективности, то есть выдачи наиболее релевантных результатов.
Теофили, Т. Глубокое обучение для поисковых систем : практическое пособие / Т. Теофили ; пер. с анг. Д. А. Беликова. - Москва : ДМК Пресс, 2020. - 318 с. : ил. - ISBN 978-5-97060-776-3. - Текст : электронный. - URL: https://znanium.com/catalog/product/1094920 (дата обращения: 26.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Интернет-магазин: www.dmkpress.com

Оптовая продажа: КТК “Галактика”
books@alians-kniga.ru
www.дмк.рф

Глубокое обучение поисковых систем решает 
самые сложные задачи, в частности позволяет 
получать релевантные результаты при неточных условиях поиска и плохо проиндексированных данных, извлекать изображения 
с минимальными метаданными. С помощью 
таких современных инструментов, как DL4J 
и TensorFlow, вы сможете применять мощные методы глубокого обучения, не обладая 
специальными знаниями в области науки о 
данных или обработки естественного языка. 
Книга покажет вам, как это сделать.
Вы узнаете, как глубокое обучение связано 
с основами поиска, такими как индексация 
и ранжирование, и изучите подробные примеры, позволяющие улучшить поиск, используя 
библиотеки Apache Lucene и Deeplearning4j. 
В ходе чтения вы освоите сложные темы: 
поиск по изображениям, перевод пользовательских запросов, проектирование поисковых систем, совершенствуемых по мере 
обучения.

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

Крис Мэттман, NASA JPL

«Глубокий синтез принципов 
традиционного поиска и последних достижений в области 
глубокого обучения».

Грег Занотти, Marquette Partners

«Пристальное погружение в 
новейшие технологии, которые 
выведут вашу поисковую систему на новый уровень».

Эндрю Уилли, Thynk Health

«Практические упражнения 
научат вас применять глубокое 
обучение для создания поисковых продуктов».

Антонио Маньаги, System1
В книге рассматриваются:
• генерация синонимов;
• точное и релевантное ранжирование; 
• поиск по языкам;
• поиск изображений на базе содержимого;
• поиск с использованием рекомендательных систем.

Издание предназначено для разработчиков, имеющих опыт работы 
с Java или похожим языком программирования и получивших представление об основах поиска. Специальные знания в области глубокого обучения или обработки естественного языка не требуются.

Томмазо Теофили – инженер-программист, работающий с открытым исходным кодом и искусственным интеллектом. Он состоит 
в организации Apache Software Foundation и участвует в проектах 
по поиску информации, обработке естественного языка и распределенным вычислениям.

Глубокое обучение для поисковых систем

9 785970 607763

ISBN 978-5-97060-776-3

Глубокое обучение для поисковых систем

Томмазо Теофили 

Глубокое обучение

для поисковых

систем

Томмазо Теофили

Глубокое обучение  
для поисковых систем

Deep Learning for Search

TOMMASO TEOFILI
Foreword by CHRIS MATTMANN

Глубокое обучение  
для поисковых систем

ТОММАЗО ТЕОФИЛИ
Предисловие КРИСА МЭТТМАННА

Москва, 2020

УДК 004.891
ББК 32.972.13
Т339

Теофили Т.
Т339 Глубокое обучение для поисковых систем / пер. с анг. Д. А. Беликова. – М.: 
ДМК Пресс, 2020. – 318 с.: ил. 

ISBN 978-5-97060-776-3

В книге рассказывается о том, как использовать глубокие нейронные сети для 
создания эффективных поисковых систем. Рассматривается несколько компонентов 
поисковой системы, дается представление о том, как они работают, и приводятся рекомендации по использованию нейронных сетей в разных контекстах поиска. Особое 
внимание уделено практическому объяснению методов поиска и глубокого машинного обучения на базе примеров, большинство которых включает фрагменты кода.
Автор освещает основные проблемы, связанные с поисковыми системами, и указывает пути решения этих проблем. Он раскрывает принципы тестирования эффективности нейронных сетей, а также измерения их затрат и выгод.
Издание предназначено для читателей, владеющих программированием на 
среднем уровне и отлаживающих поисковые системы с целью повышения их эффективности, то есть выдачи наиболее релевантных результатов.

УДК 004.891
ББК 32.972.13

Original English language edition published by Manning Publications USA, USA. Copyright © 2019 
by Manning Publications Co. Russian-language edition copyright © 2020 by DMK Press. All rights 
reserved.

Все права защищены. Любая часть этой книги не может быть воспроизведена в какой 
бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав.

ISBN 978-1-617-29479-2 (анг.) 
 Copyright © 2019 by Manning Publications Co
ISBN 978-5-97060-776-3 (рус.) 
© Оформление, издание, перевод, ДМК Пресс, 2020

Посвящается Маттие, Джакомо и Микеле 

«Счастье реально только тогда, когда есть с кем разделить его».
 – Кристофер МакКэндлесс

Содержание

Предисловие ...........................................................................................................10
От автора ..................................................................................................................11
Благодарности ........................................................................................................13
Об этой книге ..........................................................................................................14
Об авторе .................................................................................................................18
Об иллюстрации на обложке ..............................................................................19

Часть I. Поиск встречается с глубоким обуче нием ........................................20
Глава 1. Поиск на основе нейронных сетей ....................................................21

1.1. Нейронные сети и глубокое обуче ние ...............................................................23
1.2. Что такое машинное обуче ние? .........................................................................25
1.3. Что глубокое обуче ние может сделать для поиска ...........................................27
1.4. Глубокое обуче ние: дорожная карта ..................................................................30
1.5. Получение полезной информации ....................................................................31
1.5.1. Текст, токены, термы и основы поиска .......................................................33
1.5.2. Релевантность прежде всего........................................................................41
1.5.3. Классические модели поиска ......................................................................42
1.5.4. Точность и полнота ......................................................................................43
1.6. Нерешенные проблемы ......................................................................................43
1.7. Открываем черный ящик поисковой системы .................................................45
1.8. Глубокое обуче ние спешит на помощь ..............................................................46
1.9. Индекс, пожалуйста, познакомьтесь с нейроном .............................................50
1.10. Обуче ние нейронной сети ................................................................................51
1.11. Перспективы поиска на базе нейронных сетей ..............................................54
Резюме ........................................................................................................................54

Глава 2. Генерируем синонимы ..........................................................................56

2.1. Расширение синонимов. Введение ....................................................................57
2.1.1. Почему синонимы? ......................................................................................58
2.1.2. Сопоставление синонимов на базе словаря ...............................................60
2.2. Важность контекста ............................................................................................69
2.3. Нейронные сети прямого распространения .....................................................71
2.4. Использование word2vec ....................................................................................75
2.4.1. Настройка word2vec в Deeplearning4j .........................................................83
2.4.2. Расширение синонимов на базе Word2vec .................................................84
2.5. Оценки и сравнения ...........................................................................................87
2.6. Соображения относительно продукционных систем .......................................88
2.6.1. Синонимы против антонимов ....................................................................90

Содержание  7

Резюме ........................................................................................................................91

Часть II. Подключение нейронных сетей для использования  
их в поисковой системе........................................................................................92
Глава 3. От простого поиска к генерации текста ............................................93
3.1. Информационная потребность в сравнении с запросом:  
преодоление разрыва ................................................................................................94
3.1.1. Генерация альтернативных запросов .........................................................95
3.1.2. Подготовка данных ......................................................................................97
3.1.3. Подведем итог ............................................................................................104
3.2. Обуче ние на последовательностях ..................................................................105
3.3. Рекуррентные нейронные сети ........................................................................107
3.1.1. Внутреннее устройство и динамика РНС .................................................110
3.3.2. Долгосрочные зависимости ......................................................................113
3.3.3. LSTM-сети ...................................................................................................114
3.4. LSTM-сети для генерации текста без контроля ..............................................115
3.4.1. Неуправляемое расширение запроса .......................................................122
3.5. От неконтролируемой до контролируемой генерации текста ......................126
3.5.1. Создание моделей sequence-to-sequence .................................................126
3.6. Соображения относительно продукционных систем .....................................129
Резюме ......................................................................................................................130

Глава 4. Более чувствительные поисковые подсказки ..............................132
4.1. Генерация поисковых подсказок .....................................................................133
4.1.1. Подсказки при составлении запросов ......................................................133
4.1.2. Подсказчики на базе словаря ....................................................................134
4.2. Lookup API .........................................................................................................135
4.3. Проанализированные подсказчики.................................................................138
4.4. Использование языковых моделей ..................................................................145
4.5. Подсказчики на базе контента .........................................................................149
4.6. Нейронные языковые модели ..........................................................................150
4.7. Нейронная языковая модель на базе символов для создания подсказок .....152
4.8. Настройка языковой модели ............................................................................155
4.9. Вносим разнообразие в подсказки, используя векторные  
представления слов .................................................................................................164
Резюме ......................................................................................................................166

Глава 5. Ранжирование результатов поиска с помощью  
векторных представлений слов .......................................................................167
5.1. Важность ранжирования ..................................................................................168
5.2. Модели поиска ..................................................................................................170
5.2.1. TF-IDF и модель векторного пространства ..............................................172
5.2.2. Ранжирование документов в Lucene ........................................................175
5.2.3. Вероятностные модели ..............................................................................178
5.3. Поиск информации на базе нейронных сетей ................................................180
5.4. От векторов слов к векторам документов .......................................................180

 Содержание

5.5. Оценки и сравнения .........................................................................................186
5.5.1. Класс Similarity, основанный на усредненных векторных  
представлениях слов ...........................................................................................188
Резюме ......................................................................................................................191

Глава 6. Векторные представления документов  
для ранжирования и рекомендаций ..............................................................192
6.1. От векторных представлений слов к векторным представлениям  
документов ..............................................................................................................193
6.2. Использование векторов абзацев в ранжировании .......................................196
6.2.1. ParagraphVectorsSimilarity .........................................................................198
6.3. Векторные представления документов и сопутствующий контент ..............199
6.3.1. Поиск, рекомендации и сопутствующий контент ...................................200
6.3.2. Использование частых термов для поиска похожего контента .............201
6.3.3. Извлечение аналогичного контента с помощью векторов абзаца .........210
6.3.4. Извлечение аналогичного контента с помощью векторов  
из моделей «кодер–декодер» ..............................................................................212
Резюме ......................................................................................................................214

Часть III. Шаг за пределы....................................................................................215
Глава 7. Поиск по языкам ...................................................................................216
7.1. Обслуживание пользователей, говорящих на нескольких языках ................216
7.1.1. Перевод документов в сравнении с переводом запросов .......................218
7.1.2. Поиск по нескольким языкам ....................................................................220
7.1.3. Запросы на нескольких языках поверх Lucene ........................................221
7.2. Статистический машинный перевод ...............................................................223
7.2.1. Выравнивание ............................................................................................225
7.2.2. Перевод на основе фраз .............................................................................226
7.3. Работа с параллельными корпусами ................................................................227
7.4. Нейронный машинный перевод ......................................................................229
7.4.1. Модели кодер–декодер ..............................................................................230
7.4.2. Модель «кодер–декодер» для машинного перевода в DL4J .....................233
7.5. Векторные представления слов и документов для нескольких языков ........240
7.5.1. Монолингвальные векторные представления с использованием  
линейной проекции ............................................................................................241
Резюме ......................................................................................................................246

Глава 8. Поиск изображений на основе контента .......................................247
8.1. Содержимое изображения и поиск ..................................................................248
8.2. Взгляд назад: поиск изображений на базе текста ..........................................251
8.3. Понять изображения .........................................................................................253
8.3.1. Представления изображений ....................................................................255
8.3.2. Извлечение признаков ..............................................................................257
8.4. Глубокое обуче ние для представления изображений ....................................266
8.4.1. Сверточные нейронные сети ....................................................................267
8.4.2. Поиск изображений ...................................................................................275

Содержание  9

8.4.3. Локально-чувствительное хеширование .................................................280
8.5. Работа с непомеченными изображениями .....................................................283
Резюме ......................................................................................................................288

Глава 9. Взглянем на производительность ....................................................289
9.1. Производительность и перспективы глубокого обучения .............................290
9.1.1. От проектирования модели до производства ..........................................291
9.2. Индексы и нейроны работают вместе .............................................................306
9.3. Работа с потоками данных ...............................................................................309
Резюме ......................................................................................................................315
Глядя вперед .............................................................................................................315

Предметный указатель .......................................................................................317

Предисловие

Не просто дать количественную оценку того, насколько обыденными стали такие термины, как нейронные сети и глубокое обуче ние, и, более конкретно, как эти 
технологии влияют на нашу жизнь. От автоматизации рутинных заданий до тиражирования трудных решений, помощи в управлении автомобилем (и людьми) 
до места назначения – мощь нейронных сетей и глубокого обуче ния в качестве 
методов, которые произведут революцию в области вычислений, находится лишь 
в стадии зарождения.
Вот почему эта книга так важна. Нейронные сети, искусственный интеллект 
(ИИ) и глубокое обуче ние не только автоматизируют рутинные задания и решения, облегчая их. Они также облегчают и поиск. Прежде состояние дел в области 
поиска информации использовало сложную линейную алгебру, включая в себя 
матричное умножение для обозначения сопоставления пользовательских запросов с документами. Сегодня вместо использования алгебраических и линейных 
моделей применяются, например, нейронные сети для распознавания сходства 
слов между документами после изучения способов суммирования документов 
в слова с использованием обособленных сетей. И это только одна область в процессе поиска, где используются ИИ и глубокое обуче ние.
В своей книге Томмазо Теофили использует практический подход, чтобы показать вам современное состояние использования нейронных сетей, искусственного 
интеллекта и глубокого обуче ния в разработке поисковых систем. Книга изобилует 
примерами и знакомит читателя с архитектурой современных поисковых систем, 
а также дает вам достаточно информации, чтобы понять, как и где подходит глубокое обуче ние и как это улучшает поиск. Автор показывает вам, где искусственный 
интеллект и глубокое обуче ние могут перегрузить ваш код и возможность поиска, 
начиная от создания вашей первой сети для поиска похожих слов в расширении 
запроса и заканчивая изучением векторного представления слов для поискового 
ранжирования, а также мультиязычного поиска и поиска по изображениям.
Эта книга написана настоящим первопроходцем в области открытого исходного кода. Томмазо – бывший председатель проекта Apache Lucene – механизма 
индексации поиска де-факто, который поддерживает Elasticsearch и Apache Solr. 
Он также внес большой вклад в понимание языков и перевод при разработке библиотеки Apache OpenNLP. Совсем недавно его кандидатура была предложена на 
пост председателя (инкубационного) проекта Apache Joshua для статистического 
машинного перевода.
Я знаю, что вы многому научитесь из этой книги, и я рекомендую ее, чтобы 
вы могли найти золотую середину между здравым смыслом, толкованиями теории сложности и реальным кодом, с которым вы можете экспериментировать, 
используя новейшие технологии глубокого обуче ния и поиска.
Наслаждайтесь. Я знаю, о чем говорю, потому что именно это я и делал!

Крис Мэттманн,
заместитель директора по технологиям и инновациям,  
Лаборатория реактивного движения НАСА

От автора

Обработка естественного языка околдовала меня, как только я узнал о ней, почти 
10 лет назад, когда учился в магистратуре. Обещание, что компьютеры могут помочь нам понять (уже даже тогда) огромное количество существующих текстовых 
документов, было похоже на волшебство. Я до сих пор помню, как было здорово 
видеть, как мои первые программы для ОЕЯ извлекают пусть даже смутно правильную и полезную информацию из нескольких текстовых документов.
Примерно в то же время на работе меня попросили проконсультировать клиента по поводу новой архитектуры поиска с открытым исходным кодом. Мой коллега, который был экспертом в этой области, был занят другим проектом, поэтому 
мне дали копию книги Lucene в действии1, которую я изучал на протяжении пары 
недель. Затем меня отправили на работу консультантом. Спустя пару лет после 
того, как я проработал над проектом на базе Lucene/Solr, заработала новая поисковая система (и, насколько я знаю, она используется до сих пор). Не могу сказать, 
сколько раз нужно было настраивать алгоритмы поисковой системы из-за того 
или иного запроса или того или иного фрагмента проиндексированного текста, 
но мы заставили ее работать. Я мог видеть запросы пользователей и мог видеть 
данные, которые должны были быть извлечены, но минимальная разница в написании или пропуске определенного слова могла привести к тому, что очень релевантная информация не была бы отображена в результатах поиска. Поэтому, хотя 
я очень гордился своей работой, я продолжал задаваться вопросом, как сделать 
все возможное, чтобы избежать множества ручных вмешательств, которые менеджеры по программному продукту просили меня выполнить, чтобы обеспечить 
наилучший опыт взаимодействия.
Сразу же после этого я совершенно случайно оказался вовлеченным в машинное обуче ние благодаря первому онлайн-занятию по машинному обуче нию от 
Эндрю Ына (которое было основано на серии Coursera MOOC). Я был настолько 
очарован концепциями нейронных сетей, показанными на уроке, что решил самостоятельно попробовать реализовать небольшую библиотеку для нейронных 
сетей на Java, просто ради удовольствия (http://svn.apache.org/repos/asf/labs/yay/). 
Я начал искать другие онлайн-курсы, такие как курс Андрея Карпати по сверточным нейронным сетям для визуального распознавания и курс Ричарда Сохера по 
глубоким нейронным сетям для обработки естественного языка. С тех пор я продолжаю работать над поисковыми системами, обработкой естественного языка 
и глубоким обуче нием, в основном в открытом исходном коде.
Пару лет назад (!) издательство Manning обратилось ко мне с рецензией на книгу 
об ОЕЯ, и я был достаточно наивен, чтобы написать в нижней части своего обзора, 
что мне было бы интересно написать книгу о поисковых системах и нейронных 
сетях. Когда издательство снова обратилось ко мне, проявив интерес, я был немного удивлен и спросил себя, действительно ли я хочу написать книгу об этом? 
Я понял, что да, мне это было интересно.

1 http://www.manning.com/books/lucene-in-action-second-edition.

 От автора

Несмотря на то что глубокое обуче ние произвело революцию в компьютерном 
зрении и обработке естественного языка, многое еще предстоит обнаружить, когда речь идет о приложениях, использующихся в поиске. Я уверен, что мы не можем (пока еще?) полагаться на глубокое обуче ние, чтобы автоматически настраивать поисковые системы от своего имени, но это может помочь сделать работу 
пользователя поисковой системы более гладкой. Благодаря глубокому обуче нию 
мы можем делать в поисковых системах то, чего пока не можем делать с помощью 
других существующих методов, и можем использовать глубокое обуче ние, чтобы улучшить техники, которые мы уже используем в поисковых системах. Путь 
к тому, чтобы сделать поисковые машины более эффективными с помощью глубоких нейронных сетей, только начался. Надеюсь, вам понравится.

Благодарности

Прежде всего я хотел бы поблагодарить свою любимую жену Микелу за помощь 
и поддержку на протяжении всего этого долгого путешествия: спасибо за любовь, 
энергию и преданность делу в течение долгих дней, ночей и выходных, в ходе которых я писал эту книгу!
Спасибо Джакомо и Маттиа за то, что они помогли мне выбрать самую классную иллюстрацию для обложки, а также за те игры и смех, которые сопровождали 
меня, пока я пытался писать.
Я хотел бы поблагодарить своего отца за то, что он гордится мной, и его веру 
в меня.
Большое спасибо моему другу Федерико за его неустанные усилия по просмотру всех материалов (книга, код, изображения и т. д.) и за приятные обсуждения 
и обмен идеями. Огромное спасибо моим друзьям и коллегам Антонио, Франческо и Симоне за их поддержку, смех и советы. Также адресую благодарность своим 
товарищам по проекту Apache OpenNLP (http://opennlp.apache.org), Сунилу, Йорну 
и Кодзи, за то, что предоставили отзывы, советы и идеи, которые помогли  придать  очертания этой книге.
Я благодарю Криса Мэтманна за написание такого вдохновляющего пролога.
Я также благодарю Фрэнсис Лефковиц, моего редактора по разработке, за ее 
терпение и руководство на протяжении всего процесса написания книги, включая 
наши дискуссии о Стефе, К.Д. и Воинах. И я благодарю других людей из издательства Manning, благодаря которым стало возможным появление этой книги, включая 
издателя Марьян Бэйс и лиц из редакционной и производственной команд, которые работали за кадром. Кроме того, я благодарю технических рецензентов во 
главе с Иваном Мартиновичем – Абхинава Упадхая, Эля Кринкера, Альберто Симоеса, Альваро Фалькину, Эндрю Уилли, Антонио Магнаги, Криса Моргана, Джулиано Бертоти, Грега Занотти, Йеруна Бенкхуйзена, Крифа Дэвида, Люка Мартина 
Бира, Майкла Уолла, Михала Пашкевича, Мирко Кемпфа, Паули Сутелайнен, Симона Русо, Срдана Дукича и Урсина Стаусса – и участников форума. Что касается 
технической стороны, выражаю благодарность Михилу Тримпе, который был техническим редактором книги, и Карстену Стрёбеку, который работал техническим 
корректором книги.
Наконец, я хотел бы поблагодарить сообщества Apache Lucene и Deeplearning4j 
за то, что предоставили такие превосходные инструменты, и за дружескую поддержку пользователей.

Доступ онлайн
999 ₽
В корзину