автордың кітабын онлайн тегін оқу Глубокое обучение на Python. 2-е межд. издание
Переводчик А. Киселев
Франсуа Шолле
Глубокое обучение на Python. 2-е межд. издание. — СПб.: Питер, 2022.
ISBN 978-5-4461-1909-7
© ООО Издательство "Питер", 2022
Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.
Моему сыну Сильвену: надеюсь, что когда-нибудь ты прочтешь эту книгу!
Предисловие
Если вы взяли в руки эту книгу, то, вероятно, наслышаны о недавнем небывалом успехе методики глубокого обучения в области искусственного интеллекта. Мы прошли путь от малопригодных реализаций компьютерного зрения и обработки естественного языка до высокопроизводительных систем, поставляемых в составе продуктов, которые вы используете каждый день. Последствия этого внезапного прогресса отразились почти на всех отраслях. Технологии глубокого обучения уже применяются для решения многих важных задач в медицине, сельском хозяйстве, автомобильной промышленности, образовании, прогнозировании стихийных бедствий и на производстве.
И все же, по моему мнению, глубокое обучение до сих пор находится в зачаточном состоянии. Реализована лишь малая часть его потенциала. Со временем оно найдет применение в каждой поставленной задаче, но это нескорый процесс, который наверняка займет несколько десятилетий.
Чтобы начать внедрение глубокого обучения во все необходимые задачи, мы должны сделать его доступным как можно большему числу людей, включая неспециалистов (которые не являются инженерами-исследователями или аспирантами). Раскрытие всего потенциала этой технологии требует полной ее демократизации. Сегодня мы находимся на пике исторического перехода, когда глубокое обучение выходит из академических лабораторий и отделов исследований крупных технологических компаний и становится неотъемлемой частью инструментария каждого разработчика — подобно тому как начинали распространяться веб-технологии в конце 1990-х. В 1998 году для создания сайта или приложения потребовалась бы небольшая команда инженеров. А теперь подобные продукты для своего бизнеса или сообщества может разработать любой желающий. В недалеком будущем специалисту хватит лишь базовых навыков программирования, чтобы воплотить свою идею интеллектуального приложения, обучающегося на данных.
Когда в марте 2015 года я выпустил первую версию Keras — фреймворка глубокого обучения, — я не задумывался о демократизации искусственного интеллекта (ИИ). К тому времени я уже несколько лет занимался исследованиями в области машинного обучения и создал Keras как помощь в экспериментах. Однако начиная с 2015 года огромное число людей открыло для себя область глубокого обучения — и многие посчитали мой фреймворк неплохим подспорьем. Наблюдая за самыми неожиданными и довольно действенными способами использования Keras, я пришел к выводу, что мне нужно позаботиться о доступности ИИ. Я осознал: чем шире мы распространим эти технологии, тем ценнее они станут. Доступность была быстро определена как одна из главных целей Keras, и за несколько лет сообществу разработчиков удалось добиться фантастических результатов в этом направлении. Мы в буквальном смысле вручили технологию глубокого обучения сотням тысяч специалистов, а они, в свою очередь, воспользовались ею для решения важных задач, которые до недавнего времени считались нерешаемыми.
Данная книга — еще один шаг на пути популяризации глубокого обучения. Фреймворку Keras всегда требовался сопроводительный курс, который одновременно освещал бы основы глубокого обучения, показывал примеры его использования и демонстрировал лучшие практики в применении глубокого обучения. В 2016–2017 годах я подготовил такой курс — и он нашел воплощение в первом издании этой книги, вышедшем в декабре 2017 года. Книга быстро стала бестселлером по машинному обучению — она разошлась тиражом более 50 000 экземпляров и была переведена на 12 языков, в том числе на русский (2018 год).
С момента выхода первого издания сфера глубокого обучения быстро развивалась: была выпущена версия TensorFlow 2, продолжила набирать популярность архитектура Transformer и т.д. Как результат, в конце 2019 года я решил обновить книгу. Сначала по простоте душевной я думал, что она изменится примерно наполовину и останется плюс-минус такого же объема, как и первое издание. Но после двух лет работы книга выросла на треть и обновилась почти на три четверти. Так что перед вами не просто исправленное и дополненное издание — это совершенно новая книга.
Я писал ее, стараясь максимально доступно объяснить идеи, лежащие в основе глубокого обучения, и их реализации. Это не значит, что я преднамеренно упрощал изложение — всецело уверен, что в теме глубокого обучения нет ничего сложного. Надеюсь, книга принесет вам пользу и поможет начать создавать интеллектуальные приложения для решения важных вам задач.
Благодарности
Хочу поблагодарить сообщество Keras за помощь в создании этой книги. За последние шесть лет проект значительно вырос — в настоящее время он насчитывает несколько сотен разработчиков и более миллиона пользователей. Ваш вклад и отзывы помогли превратить Keras в то, чем он является сейчас.
Большое спасибо моей супруге за безграничную поддержку на протяжении всей работы над Keras и над этой книгой.
Благодарю компанию Google за поддержку Keras. Было очень приятно, когда там решили использовать мой проект в качестве высокоуровневого API для TensorFlow1. Бесшовная интеграция Keras и TensorFlow выгодна пользователям обоих продуктов. Связка TensorFlow и Keras делает технологии глубокого обучения доступными для широкого круга людей.
Хочу поблагодарить сотрудников издательства Manning, сделавших возможным выпуск этой книги: издателя Марджана Бейса и всех сотрудников редакторского и технического отделов, в том числе Майкла Стивенса, Дженнифер Стоут, Александра Драгосавлевича и многих других, чья работа осталась «за кадром».
Большое спасибо техническим рецензентам: Билли О’Каллагану, Кристиану Вайстаннеру, Конраду Тейлору, Даниэле Сапата Риеско, Дэвиду Джейкобсу, Эдмону Беголи, доктору Эдмунду Рональду, Хао Лю, Джареду Дункану, Ки Наму, Кену Фрикласу, Челлу Янссону, Милану Шаренацу, Нгуену Као, Никосу Канакарису, Оливеру Кортену, Раушану Джа, Саяку Полу, Серджио Говони, Шашанку Поласу, Тодду Куку, Витону Витанису — и всем остальным, кто прислал свои замечания к рукописи этой книги.
Особое спасибо Фрэнсису Буонтемпо, выступившему в роли научного редактора, и Карстену Стробеку, выполнившему техническую редактуру книги.
1 Открытая программная библиотека алгоритмов машинного обучения, разработанная компанией Google для решения задач построения и обучения нейронных сетей с целью автоматического поиска и классификации образов, качество которых достигает качества человеческого восприятия. — Примеч. пер.
Благодарю компанию Google за поддержку Keras. Было очень приятно, когда там решили использовать мой проект в качестве высокоуровневого API для TensorFlow1. Бесшовная интеграция Keras и TensorFlow выгодна пользователям обоих продуктов. Связка TensorFlow и Keras делает технологии глубокого обучения доступными для широкого круга людей.
Открытая программная библиотека алгоритмов машинного обучения, разработанная компанией Google для решения задач построения и обучения нейронных сетей с целью автоматического поиска и классификации образов, качество которых достигает качества человеческого восприятия. — Примеч. пер.
О книге
Книга написана для всех, кто хочет начать изучение технологии глубокого обучения с нуля или расширить уже имеющиеся знания. Инженеры, работающие в области машинного обучения, разработчики программного обеспечения и студенты найдут много ценного на страницах этого издания.
Технологии глубокого обучения будут описываться максимально доступно — мы начнем с самого простого, постепенно переходя к последним достижениям. Я старался найти баланс между теорией и практикой и избегать математических формул, предпочитая объяснять основные идеи с помощью фрагментов кода и интуитивно понятных моделей. Вы увидите множество примеров программного кода с подробными комментариями, практическими рекомендациями и простыми обобщенными объяснениями всего, что нужно знать для использования глубокого обучения в решении конкретных задач.
В примерах в качестве внутреннего механизма взяты фреймворк глубокого обучения Keras, написанный на Python, и библиотека TensorFlow 2. Они демонстрируют новейшие по состоянию на 2021 год приемы их использования.
Прочитав эту книгу, вы будете четко понимать, что такое глубокое обучение, когда оно применимо и какие ограничения имеет. Вы познакомитесь со стандартным процессом интерпретации и решения задач машинного обучения и узнаете, как бороться с часто встречающимися проблемами. Вы научитесь использовать Keras для решения практических задач в различных областях, от распознавания образов до обработки естественного языка: классификации образов, сегментирования изображений, временного прогнозирования, классификации текста, машинного перевода с одного языка на другой, генерации текста и многого другого.
Кому адресована эта книга
Книга написана для людей с опытом программирования на Python, желающих познакомиться с машинным обучением в целом и глубоким обучением в частности. Однако она также может быть полезной для других читателей:
• если вы специалист по обработке и анализу данных, знакомый с машинным обучением, это издание позволит вам получить достаточно полное практическое представление о глубоком обучении — наиболее быстро развивающемся разделе машинного обучения;
• если вы эксперт в области глубокого обучения, желающий освоить фреймворк Keras, в книге вы найдете лучший интенсивный его курс;
• если вы аспирант, изучающий технологии глубокого обучения на занятиях, это издание станет практическим дополнением к учебным материалам, поможет лучше понять принцип действия глубоких нейросетей и познакомит с наиболее эффективными приемами.
Даже люди с техническим складом ума, которые не занимаются программированием регулярно, посчитают эту книгу полезной в качестве введения в базовые и продвинутые понятия глубокого обучения.
Для понимания кода примеров необходимо владеть языком Python на среднем уровне. Также не помешает знакомство с библиотекой Numpy, хотя это опционально. Опыт в машинном или глубоком обучении не является обязательным условием: книга раскрывает все необходимые основы. Не нужна какая-то особенная математическая подготовка — вполне достаточно знания математики на уровне средней школы.
О примерах кода
Книга содержит множество примеров исходного кода как в листингах, так и внутри основного текста. В обоих случаях код набран таким моноширинным шрифтом, чтобы можно было выделить его на фоне других материалов.
Во многих случаях исходный код был переформатирован: добавлены разрывы строк и изменены размеры отступов, чтобы уместить код по ширине книжной страницы. Кроме того, комментарии из исходного кода удалялись, если он подробно описывается в тексте. Примечания в листингах дополняют описание в основном тексте, помогая выделить важные понятия.
Все примеры кода из этой книги доступны на сайте издательства Manning: https://www.manning.com/books/deep-learning-with-python-second-edition, а также в блокнотах Jupyter на GitHub: https://github.com/fchollet/deep-learning-with-python-notebooks. Их можно запускать с помощью Google Colaboratory — бесплатной среды для блокнотов Jupyter. Подключение к интернету и браузер — все, что вам нужно, чтобы начать знакомство с глубоким обучением.
Об авторе
Франсуа Шолле является создателем Keras — одного из самых широко используемых фреймворков глубокого обучения. В настоящее время работает в Google, где разрабатывает программное обеспечение и возглавляет команду Keras. Кроме того, он занимается исследованиями в области абстрагирования, формализации рассуждений и обобщения в сфере искусственного интеллекта.
Иллюстрация на обложке
Иллюстрация на обложке подписана как «Одежда персидской женщины в 1568 году». Она взята из книги Collection of the Dresses of Different Nations, Ancient and Modern («Коллекция костюмов разных народов, античных и современных») Томаса Джеффериса, опубликованной в Лондоне между 1757 и 1772 годами. На титульной странице указано, что это выполненная вручную каллиграфическая цветная гравюра, обработанная гуммиарабиком.
Томас Джефферис (1719–1771) носил звание географа короля Георга III. Английский картограф, он был ведущим поставщиком карт того времени. Он выгравировал и напечатал множество карт для нужд правительства, других официальных органов и широкий спектр коммерческих карт и атласов, в частности Северной Америки. Будучи картографом, интересовался местной одеждой народов, населяющих разные земли, и собрал блестящую коллекцию различных платьев, описав ее в четырех томах. Очарование далеких земель и дальних путешествий для удовольствия было относительно новым явлением в конце XVIII века, и коллекции, подобные этой, были весьма популярны, так как позволяли ознакомиться с внешним видом жителей других стран.
Разнообразие рисунков, собранных Джефферисом, свидетельствует о проявлении яркой индивидуальности и уникальности народов мира около 200 лет назад. С тех пор стиль одежды сильно изменился и исчезло разнообразие, характеризующее различные области и страны. Теперь трудно отличить по одежде даже жителей разных континентов. Если взглянуть на это оптимистично, мы пожертвовали культурной и внешней многогранностью в угоду более насыщенной личной жизни или в угоду многоликой и интересной интеллектуальной и технической деятельности.
В наше время, когда трудно отличить одну техническую книгу от другой, издательство Manning проявило инициативу и деловую сметку, украшая обложки книг изображениями, основанными на богатом разнообразии жизненного уклада народов двухвековой давности, придав новую жизнь рисункам Джеффериса.
От издательства
Ваши замечания, предложения, вопросы отправляйте по адресу comp@piter.com (издательство «Питер», компьютерная редакция).
Мы будем рады узнать ваше мнение!
На веб-сайте издательства www.piter.com вы найдете подробную информацию о наших книгах.
