Discover millions of ebooks, audiobooks, and so much more with a free trial

Only $11.99/month after trial. Cancel anytime.

Глубокое обучение на Python
Глубокое обучение на Python
Глубокое обучение на Python
Ebook752 pages9 hours

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

Rating: 0 out of 5 stars

()

Read preview

About this ebook

Глубокое обучение — Deep learning — это набор алгоритмов машинного обучения, которые моделируют высокоуровневые абстракции в данных, используя архитектуры, состоящие из множества нелинейных преобразований.
Согласитесь, эта фраза звучит угрожающе. Но всё не так страшно, если о глубоком обучении рассказывает Франсуа Шолле, который создал Keras — самую мощную библиотеку для работы с нейронными сетями.

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

"Обучение — это путешествие длинной в жизнь, особенно в области искусственного интеллекта, где неизвестностей гораздо больше, чем определенности."
Франсуа Шолле
LanguageРусский
PublisherПитер
Release dateApr 18, 2022
ISBN9785446107704
Глубокое обучение на Python

Read more from Франсуа Шолле

Related to Глубокое обучение на Python

Related ebooks

Intelligence (AI) & Semantics For You

View More

Related articles

Reviews for Глубокое обучение на Python

Rating: 0 out of 5 stars
0 ratings

0 ratings0 reviews

What did you think?

Tap to rate

Review must be at least 10 words

    Book preview

    Глубокое обучение на Python - Франсуа Шолле

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

    Я хочу поблагодарить сообщество Keras за помощь в создании этой книги. В настоящее время в проекте Keras насчитывается несколько сотен добровольных разработчиков и более 200 000 пользователей. Ваш вклад и отзывы помогли превратить Keras в то, чем он является сейчас.

    Также я хочу поблагодарить компанию Google за поддержку проекта Keras. Было очень приятно, когда в Google решили использовать Keras в качестве высокоуровневого API для TensorFlow¹. Бесшовная интеграция Keras и TensorFlow выгодна пользователям обоих продуктов. Связка TensorFlow и Keras делает технологии глубокого обучения доступными для широкого круга.

    Я хочу поблагодарить сотрудников издательства Manning, кто сделал возможным выпуск этой книги: издателя Марджана Бейса (Marjan Bace) и всех сотрудников редакторского и технического отделов, в том числе Кристину Тейлор (Christina Taylor), Жанет Вейл (Janet Vail), Тиффани Тейлор (Tiffany Taylor), Кэти Теннант (Katie Tennant), Дотти Марсико (Dottie Marsico) и многих других, чья работа осталась «за кадром».

    Большое спасибо техническим рецензентам во главе с Александром Драгосавлевичем (Aleksandar Dragosavljevic): Диего Акунье Розасу (Diego Acuna Rozas), Джеффу Барто (Geoff Barto), Дэвиду Блюменталь-Барби (David Blumenthal-Barby), Абелю Брауну (Abel Brown), Кларку Дорману (Clark Dorman), Кларку Гейлорду (Clark Gaylord), Томасу Хайману (Thomas Heiman), Уилсону Мару (Wilson Mar), Сумиту Палу (Sumit Pal), Владимиру Пасману (Vladimir Pasman), Густаво Патино (Gustavo Patino), Питеру Рабиновичу (Peter Rabinovitch), Элвину Раджу (Alvin Raj), Клаудио Родригесу (Claudio Rodriguez), Срджану Сантичу (Srdjan Santic), Ричарду Тобиасу (Richard Tobias), Мартину Верзилли (Martin Verzilli), Уильяму Уилеру (William E. Wheeler) и Дэниэлу Уильямсу (Daniel Williams) — и всем участникам форума. Они без устали выискивали технические ошибки, ошибки в терминологии и опечатки, а также вносили предложения по темам. Каждый цикл технического рецензирования и каждый отзыв, оставленный на форуме, был учтен и повлиял на рукопись.

    Особое спасибо Джерри Гейнсу (Jerry Gaines), выступившему в роли технического редактора; Алексу Отту (Alex Ott) и Ричарду Тобиасу (Richard Tobias), выполнившим техническую редактуру книги. Они — лучшие технические редакторы.

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

    1 Открытая программная библиотека алгоритмов машинного обучения, разработанная компанией Google для решения задач построения и тренировки нейронной сети с целью автоматического поиска и классификации образов с качеством человеческого восприятия. — Примеч. пер.

    Об этой книге

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

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

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

    В примерах используются фреймворк глубокого обучения Keras, написанный на Python, и библиотека TensorFlow в качестве внутреннего механизма. Keras — один из популярнейших и быстро развивающихся фреймворков глубокого обучения. Он часто рекомендуется как наиболее удачный инструмент для начинающих изучать глубокое обучение.

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

    Кому адресована эта книга

    Эта книга написана для людей с опытом программирования на Python, желающих начать знакомство с темой машинного обучения с технологии глубокого обучения. Однако она также может быть полезной для других читателей:

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

    • Если вы эксперт в области глубокого обучения, желающий освоить фреймворк Keras, вы найдете в этой книге лучший интенсивный курс по Keras.

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

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

    Для использования Keras вам необходимо владеть языком Python на среднем уровне. Также будет полезно знакомство с библиотекой Numpy, хотя это и не требуется. Опыт в машинном или глубоком обучении не является обязательным условием: эта книга охватывает все необходимые основы с нуля. Не требуется иметь какой-то особенной математической подготовки — вполне достаточно знания математики на уровне средней школы.

    Содержание книги

    Эта книга состоит из двух частей. Если у вас нет опыта в области машинного обу­чения, я настоятельно рекомендую прочитать первую часть, прежде чем переходить ко второй. Мы начнем с простых примеров и постепенно будем приближаться к современным технологиям.

    Первая часть — это обобщенное введение в глубокое обучение. Здесь формируется контекст: даются определения и объясняются все понятия, которые необходимо знать, чтобы приступить к изучению машинного обучения и нейросетей.

    • Глава 1 формирует контекст и знакомит с основными понятиями ИИ, машинного и глубокого обучения.

    • Глава 2 знакомит с базовыми идеями, необходимыми для освоения глубокого обучения: тензоры, операции с тензорами, градиентный спуск и обратное распространение ошибки обучения. В этой главе приводится также первый пример действующей нейронной сети.

    • Глава 3 включает в себя все необходимое, чтобы начать работу с нейронными сетями: введение в Keras — фреймворк глубокого обучения; руководство по настройке рабочей станции; а также три основополагающих примера с подробными пояснениями. К концу этой главы вы научитесь обучать простые нейронные сети для решения задач классификации и регрессии и получите полное представление о том, что происходит за кулисами во время обучения.

    • Глава 4 изучает канонический процесс машинного обучения. Здесь вы узнаете о типичных ловушках и о том, как их избежать.

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

    • Глава 5 рассматривает ряд практических примеров распознавания образов с особым вниманием к классификации изображений.

    • Глава 6 знакомит с практическими методами обработки последовательностей данных, таких как текст и временные последовательности.

    • Глава 7 включает в себя продвинутые приемы создания современных моделей глубокого обучения.

    • Глава 8 объясняет генеративные, или порождающие, модели: модели глубокого обучения, способные создавать изображения и текст, причем иногда результат получается на удивление художественным.

    • Глава 9 посвящена закреплению всего, о чем рассказывалось в предыдущих главах, а также описанию перспектив глубокого обучения и исследованию его вероятного будущего.

    Требования к программному/аппаратному обеспечению

    Во всех примерах в этой книге используется Keras (https://keras.io) — фреймворк глубокого обучения с открытым исходным кодом и доступный для загрузки бесплатно. Вам понадобится доступ к компьютеру с операционной системой (ОС) UNIX; фреймворк можно также использовать в Windows, но я не рекомендую это делать. Полное описание процесса настройки приводится в приложении A.

    Желательно, чтобы компьютер был оснащен современной видеокартой NVIDIA, такой как TITAN X. Это необязательно, но поможет улучшить впечатления за счет ускорения примеров в несколько раз. Подробнее о настройке рабочей станции рассказывается в разделе 3.3.

    Если у вас нет доступа к рабочей станции с современной видеокартой NVIDIA, можете воспользоваться облачным окружением. Например, можно использовать экземпляры Google Cloud (такие, как n1-standard-8, оснащенные графическими ускорителями NVIDIA Tesla K80) или экземпляры Amazon Web Services (AWS) с GPU (такие, как p2.xlarge). В приложении B представлен один из возможных вариантов использования экземпляра в облаке AWS посредством Jupyter Notebook из браузера.

    Исходный код

    Код всех примеров в книге доступен для загрузки в виде блокнотов Jupyter Notebooks на сайте книги www.manning.com/books/deep-learning-with-python, а также в репозитории GitHub https://github.com/fchollet/deep-learning-with-python-notebooks.

    Форум книги

    Покупка книги «Глубокое обучение с Python» включает бесплатный доступ к частному веб-форуму, организованному издательством Manning Publications, где можно оставлять комментарии о книге, задавать технические вопросы, а также получать помощь от автора и других пользователей. Чтобы получить доступ к форуму и зарегистрироваться на нем, откройте в веб-браузере страницу https://forums.manning.com/forums/deep-learning-with-python. Узнать больше о других форумах на сайте издательства Manning и познакомиться с правилами вы сможете на странице https://forums.manning.com/forums/about.

    Издательство Manning обязуется предоставить своим читателям место встречи, где может состояться содержательный диалог между отдельными читателями и между читателями и автором. Однако со стороны автора отсутствуют какие-либо обязательства уделять форуму какое-то определенное внимание — его присутствие на форуме остается добровольным (и неоплачиваемым). Мы предлагаем задавать автору стимулирующие вопросы, чтобы его интерес не угасал!

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

    От издательства

    Ваши замечания, предложения, вопросы отправляйте по адресу comp@piter.com (издательство «Питер», компьютерная редакция).

    Мы будем рады узнать ваше мнение!

    На веб-сайте издательства www.piter.com вы найдете подробную информацию  о наших книгах.

    Об авторе

    Chollet%20photo.tif

    Франсуа Шолле (Francois Chollet) занимается проблематикой глубокого обучения в Google, в городе Маунтин-Вью, штат Калифорния. Является создателем Keras — библиотеки глубокого обучения, а также участником проекта по разработке фреймворка машинного обучения TensorFlow. Также занимается исследованиями в области машинного обучения, основное внимание уделяя распознаванию образов и применению машинного обучения к формальным рассуждениям. Выступал с докладами на крупных конференциях в этой области, включая «Conference on Computer Vision and Pattern Recognition» (CVPR), «Conference and Workshop on Neural Information Processing Systems» (NIPS), «International Conference on Learning Representations» (ICLR) и др.

    Об иллюстрации на обложке

    Иллюстрация на обложке «Глубокое обучение с Python» подписана как «Одежда персидской женщины в 1568 году». Она взята из книги «Collection of the Dresses of Different Nations, Ancient and Modern» (Коллекция костюмов разных народов, античных и современных) Томаса Джеффериса (Thomas Jefferys), опубликованной в Лондоне между 1757 и 1772 годами. На титульной странице указано, что это выполненная вручную каллиграфическая цветная гравюра, обработанная гуммиарабиком.

    Томас Джефферис (1719–1771) носил звание «Географ короля Георга III». Английский картограф, он был ведущим поставщиком карт того времени. Он выгравировал и напечатал множество карт для нужд правительства, других официальных органов и широкий спектр коммерческих карт и атласов, в частности карт Северной Америки. Будучи картографом, интересовался местной одеждой народов, населяющих разные земли, и собрал блестящую коллекцию различных платьев, описав ее в четырех томах.

    Очарование далеких земель и дальних путешествий для удовольствия было относительно новым явлением в конце XVIII века, и коллекции, подобные этой, были весьма популярны, так как позволяли ознакомиться с внешним видом жителей других стран. Разнообразие рисунков, собранных Джефферисом, свидетель­ствует о проявлении 200 лет назад яркой индивидуальности и уникальности народов мира. С тех пор стиль одежды сильно изменился и исчезло разнообразие, характеризующее различные области и страны. Теперь трудно различить по одежде даже жителей разных континентов. Если взглянуть на это с оптимистичной точки зрения, мы пожертвовали культурным и внешним разнообразием в угоду более насыщенной личной жизни или в угоду более разнообразной и интересной интеллектуальной и технической деятельности.

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

    Часть I. Основы глубокого обучения

    Главы 1–4 этой книги дадут вам базовое представление о том, что такое глубокое обу­чение, где оно применяется и как работает. Также вы познакомитесь с каноническим процессом решения задач анализа данных методами глубокого обучения. Если вы еще не очень хорошо ориентируетесь в глубоком обучении, обязательно прочитайте первую часть книги от начала до конца, прежде чем переходить к описанию приемов практического применения, о которых рассказывается во второй части.

    1. Что такое глубокое обучение?

    Эта глава охватывает следующие темы:

    • обобщенные определения основных понятий;

    • история развития машинного обучения;

    • ключевые факторы роста популярности глубокого обучения и потенциал этой дисциплины в будущем.

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

    Эта глава закладывает фундамент для дальнейшего обсуждения ИИ, машинного и глубокого обучения.

    1.1. Искусственный интеллект, машинное и глубокое обучение

    Прежде всего определим, что подразумевается под искусственным интеллектом. Что такое ИИ, машинное и глубокое обучение (рис. 1.1)? Как они связаны друг с другом?

    254528.png

    Рис. 1.1. Искусственный интеллект, машинное и глубокое обучение

    1.1.1. Искусственный интеллект

    Идея искусственного интеллекта появилась в 1950-х, когда группа энтузиастов из только зарождающейся области информатики задались вопросом, можно ли заставить компьютеры «думать», — вопросом, последствия которого мы изучаем до сих пор. Коротко эту область можно определить так: автоматизация интеллектуальных задач, обычно выполняемых людьми. Соответственно, ИИ — это область, охватывающая машинное обучение и глубокое обучение, а также включающая в себя многие подходы, не связанные с обучением. Например, первые программы для игры в шахматы действовали по жестко определенным правилам, заданным программистами, и не могли квалифицироваться как осуществляющие машинное обучение. Долгое время многие эксперты полагали, что ИИ уровня человека можно создать, если дать программисту достаточный набор явных правил для манипулирования знаниями. Этот поход, известный как символический ИИ, и являлся доминирующей парадигмой ИИ с 1950-х до конца 1980-х. Пик его популярности пришелся на бум экспертных систем в 1980-х.

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

    1.1.2. Машинное обучение

    В викторианской Англии жила леди Ада Лавлейс (Ada Lovelace) — друг и соратник Чарльза Бэббиджа (Charles Babbage), изобретателя аналитической вычислительной машины: первого известного механического компьютера. Несомненно, аналитическая машина опередила свое время, но она не задумывалась как универсальный компьютер, когда разрабатывалась в 1830-х и 1840-х, потому что идея универсальных вычислений еще не родилась. Эта машина просто давала возможность использовать механические операции для автоматизации некоторых вычислений из области математического анализа, что и обусловило такое ее название. В 1843 году Ада Лавлейс заметила: «Аналитическая машина не может создавать что-то новое. Она может делать все, что мы и сами знаем, как выполнять… ее цель состоит лишь в том, чтобы помогать нам осуществлять то, с чем мы уже хорошо знакомы».

    Позднее пионер ИИ Алан Тьюринг (Alan Turing) в своей знаменитой статье «Computing Machinery and Intelligence»² назвал это замечание «аргументом Ады Лавлейс»³. В этой статье был представлен тест Тьюринга, а также перечислены основные идеи, которые могут привести к созданию ИИ. Тьюринг цитировал Аду Лавлейс, размышляя над способностью обычных компьютеров к самообучению и созданию чего-либо нового, и пришел к выводу, что да, могут.

    Область машинного обучения возникла из вопроса: может ли компьютер выйти за рамки того, «что мы и сами знаем, как выполнять», и самостоятельно научиться решать некоторую определенную задачу? Может ли компьютер удивить нас? Может ли компьютер без помощи программиста, задающего правила обработки данных, автоматически определить эти правила, исследуя данные?

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

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

    256944.png

    Рис. 1.2. Машинное обучение: новая парадигма программирования

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

    1.1.3. Обучение представлению данных

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

    • Контрольные входные данные — например, если решается задача распознавания речи, такими контрольными входными данными могут быть файлы с записью речи разных людей; если решается задача классификации изображений, такими данными могут быть изображения.

    • Примеры ожидаемых результатов — в задаче распознавания речи это могут быть транскрипции звуковых файлов, составленные людьми; в задаче классификации изображений ожидаемым результатом могут быть теги, такие как «собака», «кошка» и др.

    • Способ оценки качества работы алгоритма — это необходимо для определения, насколько далеко отклоняются результаты, возвращаемые алгоритмом, от ожидаемых. Оценка используется как сигнал обратной связи для корректировки работы алгоритма. Этот этап корректировки мы и называем обучением.

    Модель машинного обучения трансформирует исходные данные в значимые результаты, «обучаясь» на известных примерах входных данных и результатов. То есть главной задачей машинного и глубокого обучения является значимое преобразование данных, или, иными словами, обучение представлению входных данных, приближающему нас к ожидаемому результату. Прежде чем двинуться дальше, давайте определим, что есть представление данных? По сути, это другой способ представления, или кодирования, данных. Например, цветное изображение можно закодировать в формате RGB (red-green-blue — красный-зеленый-синий) или HSV (hue-saturation-value — тон-насыщенность-значение): это два разных представления одних и тех же данных. Некоторые задачи трудно решаются с данными в одном представлении, но легко — в другом. Например, задача «выбрать все красные пикселы в изображении» легче решается с данными в формате RGB, тогда как задача «сделать изображение менее насыщенным» проще решается с данными в формате HSV. Главная задача моделей машинного обучения как раз и заключается в поиске соответствующего представления входных данных — преобразований, которые сделают данные более пригодными для решения такой задачи, как классификация.

    257097.png

    Рис. 1.3. Пример некоторых данных

    Обратимся к конкретному примеру. Рассмотрим систему координат с осями X и Y и несколько точек в этой системе координат (x, y), как показано на рис. 1.3.

    Как видите, у нас имеется несколько белых и черных точек. Допустим нам нужно разработать алгоритм, принимающий координаты (x, y) точки и возвращающий наиболее вероятный цвет, черный или белый. В данном случае:

    • исходными данными являются координаты точек;

    • результатом является цвет точек;

    • мерой качества алгоритма может быть, например, процент правильно классифицированных точек.

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

    254541.png

    Рис. 1.4. Изменение системы координат

    Координаты наших точек в этой новой системе координат можно назвать новым представлением данных. Причем более удачным! Задачу классификации данных «черный/белый» в этом представлении можно свести к простому правилу: «черные точки имеют координату x > 0» или «белые точки имеют координату x < 0». Это новое представление фактически решает поставленную задачу.

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

    Все алгоритмы машинного обучения заключаются в автоматическом поиске таких преобразований, которые смогут привести данные к виду, более пригодному для данной задачи. Эти операции могут изменять координаты, как мы только что видели, или выполнять линейные проекции (что может приводить к уничтожению информации), трансляцию, нелинейные операции (такие, как «выбрать все точки с координатой x > 0») и т.д. Алгоритмы машинного обучения обычно не отличаются чем-то особенным; они просто выполняют поиск в предопределенном наборе операций, который называют пространством гипотез.

    То есть технически машинное обучение — это поиск значимого представления некоторых входных данных в предопределенном пространстве возможностей с использованием сигнала обратной связи. Эта простая идея позволяет решать чрезвычайно широкий круг интеллектуальных задач: от распознавания речи до автоматического вождения автомобиля.

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

    1.1.4. «Глубина» глубокого обучения

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

    В глубоком обучении такие многослойные представления изучаются (почти всегда) с использованием моделей, так называемых нейронных сетей, структурированных в виде слоев, наложенных друг на друга. Термин нейронная сеть заимствован из нейробиологии, тем не менее, хотя некоторые основополагающие идеи глубокого обучения отчасти заимствованы из науки о мозге, модели глубокого обучения не являются моделями мозга. Нет никаких доказательств, что мозг реализует механизмы, подобные механизмам, используемым в современных моделях глубокого обучения. Вам могут встретиться научно-популярные статьи, в которых утверждается, что глубокое обучение работает подобно мозгу или моделирует работу мозга, но в действительности это не так. Было бы неправильно и контрпродуктивно заставлять начинающих освоение этой области думать, что глубокое обучение каким-то образом связано с нейробиологией; вам не нужно представление «как наш мозг», и вы также можете забыть все, что читали о гипотетической связи между глубоким обучением и биологией. Намного продуктивнее считать глубокое обучение математической основой для изучения представлений данных.

    Как выглядят представления, получаемые алгоритмом глубокого обучения? Давайте исследуем, как сеть, имеющая несколько слоев в глубину (рис. 1.5), преобразует изображение цифры для ее распознавания.

    254597.png

    Рис. 1.5. Глубокая нейронная сеть для классификации цифр

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

    С технической точки зрения глубокое обучение — это многоступенчатый способ получения представления данных. Идея проста, но, как оказывается, очень простые механизмы при определенном масштабе могут выглядеть непонятными и таинственными.

    257159.png

    Рис. 1.6. Глубокие представления, получаемые моделью классификации цифр

    1.1.5. Принцип действия глубокого обучения в трех картинках

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

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

    Чтобы чем-то управлять, сначала нужно получить возможность наблюдать за этим. Чтобы управлять результатом работы нейронной сети, нужно иметь возможность измерить, насколько этот результат далек от ожидаемого. Эту задачу решает функция потерь сети, которую также называют целевой функцией. Функция потерь принимает предсказание, выданное сетью, и истинное значение (которое сеть должна была вернуть) и вычисляет оценку расстояния между ними, отражающую, насколько хорошо сеть справилась с данным конкретным примером (рис. 1.8).

    254617.png

    Рис. 1.7. Нейронная сеть параметризуется ее весами

    254628.png

    Рис. 1.8. Функция потерь оценивает качество результатов, производимых нейронной сетью

    Основная хитрость глубокого обучения заключается в использовании этой оценки для корректировки значений весов с целью уменьшения потерь в текущем примере (рис. 1.9). Данная корректировка является задачей оптимизатора, который реализует так называемый алгоритм обратного распространения ошибки: центральный алгоритм глубокого обучения. Подробнее об алгоритме обратного распространения ошибки рассказывается в следующей главе.

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

    254647.png

    Рис. 1.9. Оценка потерь используется как обратная связь для корректировки весов

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

    1.1.6. Какой ступени развития достигло глубокое обучение

    Несмотря на то что

    Enjoying the preview?
    Page 1 of 1