Главная страница
Навигация по странице:

  • Глубокое обучение: легкая разработка проектов на Python

  • Оглавление Предисловие ............................................................................................... 8

  • Глава 3 .

  • Глава 5 .

  • Приложение A.

  • Об авторе ..................................................................................................

  • Для понимания нейронных сетей нужно несколько мысленных моделей

  • Структура книги

  • Курсовая работа. Глубокое обучение


    Скачать 4.97 Mb.
    НазваниеГлубокое обучение
    АнкорКурсовая работа
    Дата26.06.2022
    Размер4.97 Mb.
    Формат файлаpdf
    Имя файлаVeydman_S_Glubokoe_obuchenie_Legkaya_razrabotka_proektov_na_Pyth.pdf
    ТипДокументы
    #615357
    страница1 из 22
      1   2   3   4   5   6   7   8   9   ...   22

    Boston Farnham Sebastopol Tokyo
    Beijing
    2021
    Глубокое
    обучение
    Легкая разработка проектов на Python
    Сет Вейдман

    Boston Farnham Sebastopol Tokyo
    Beijing
    2021
    Глубокое
    обучение
    Легкая разработка проектов на Python
    Сет Вейдман

    Сет Вейдман
    Глубокое обучение:
    легкая разработка проектов на Python
    Серия «Бестселлеры O’Reilly»
    Перевели с английского И. Рузмайкина, А. Павлов
    Руководитель проекта
    Ю. Сергиенко
    Ведущий редактор
    К. Тульцева
    Литературный редактор
    А. Руденко
    Обложка
    В. Мостипан
    Корректоры
    М. Молчанова, М. Одинокова
    Верстка
    Е. Неволайнен
    ББК 32.973.2-018.1
    УДК 004.43
    Вейдман Сет
    В26
    Глубокое обучение: легкая разработка проектов на Python. — СПб.: Питер,
    2021. — 272 с.: ил. — (Серия «Бестселлеры O’Reilly»).
    ISBN
    978-5-4461-1675-1
    Взрывной интерес к нейронным сетям и искусственному интеллекту затронул уже все об- ласти жизни, и понимание принципов глубокого обучения необходимо каждому разработчику
    ПО для решения прикладных задач. Эта практическая книга представляет собой вводный курс для всех, кто занимается обработкой данных, а также для разработчиков ПО. Вы начнете с ос- нов глубокого обучения и быстро перейдете к более сложным архитектурам, создавая проекты с нуля. Вы научитесь использовать многослойные, сверточные и рекуррентные нейронные сети. Только понимая принцип их работы (от «математики» до концепций), вы сделаете свои проекты успешными. В этой книге: x Четкие схемы, помогающие разобраться в нейросетях, и примеры рабочего кода. x Методы реализации многослойных сетей с нуля на базе простой объектно-ориентированной структуры. x Примеры и доступные объяснения сверточных и рекуррентных нейронных сетей. x Реализация концепций нейросетей с помощью популярного фреймворка PyTorch.
    16+
    (В соответствии с Федеральным законом от 29 декабря 2010 г. № 436-ФЗ.)
    ISBN 978-1492041412 англ.
    Authorized Russian translation of the English edition of Deep Learning from Scratch ISBN 9781492041412 © 2019 Seth Weidman
    This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all rights to publish and sell the same.
    ISBN 978-5-4461-1675-1
    © Перевод на русский язык ООО Издательство «Питер», 2021
    © Издание на русском языке, оформление
    ООО Издательство «Питер», 2021
    © Серия «Бестселлеры O’Reilly», 2021
    Права на издание получены по соглашению с O’Reilly. Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.
    Изготовлено в России. Изготовитель: ООО «Прогресс книга». Место нахождения и фактический адрес:
    194044, Россия, г. Санкт-Петербург, Б. Сампсониевский пр., д. 29А, пом. 52. Тел.: +78127037373.
    Дата изготовления: 02.2021. Наименование: книжная продукция. Срок годности: не ограничен.
    Налоговая льгота — общероссийский классификатор продукции ОК 034-2014,
    58.11.12 — Книги печатные профессиональные, технические и научные.
    Импортер в Беларусь: ООО «ПИТЕР М», 220020, РБ, г. Минск, ул. Тимирязева, д. 121/3, к. 214, тел./факс: 208 80 01.
    Подписано в печать 22.01.21. Формат 70х100/16. Бумага офсетная. Усл. п. л. 21,930. Тираж 500. Заказ

    Оглавление
    Предисловие ............................................................................................... 8
    Для понимания нейронных сетей нужно несколько мысленных моделей .....10
    Структура книги ..........................................................................................11
    Условные обозначения ................................................................................13
    Использование примеров кода ....................................................................14
    Благодарности .............................................................................................14
    От издательства ..........................................................................................15
    Глава 1. Математическая база .........................................................................16
    Функции ......................................................................................................17
    Производные ...............................................................................................22
    Вложенные функции ....................................................................................24
    Цепное правило ..........................................................................................26
    Более длинная цепочка ...............................................................................30
    Функции нескольких переменных ................................................................34
    Производные функций нескольких переменных ...........................................36
    Функции нескольких переменных с векторными аргументами ......................37
    Создание новых признаков из уже существующих .......................................38
    Производные функции нескольких векторных переменных ..........................41
    Производные векторных функций: продолжение .........................................43
    Вычислительный граф для двух матриц .......................................................47
    Самое интересное: обратный проход ...........................................................51
    Заключение .................................................................................................58
    Глава 2. Основы глубокого обучения ...............................................................59
    Обучение с учителем ...................................................................................60
    Алгоритмы обучения с учителем ..................................................................62

    6
    Оглавление
    Линейная регрессия ....................................................................................63
    Обучение модели ........................................................................................69
    Оценка точности модели .............................................................................73
    Код ..............................................................................................................74
    Основы нейронных сетей .............................................................................79
    Обучение и оценка нейронной сети .............................................................86
    Заключение .................................................................................................90
    Глава 3. Основы глубокого обучения ...............................................................91
    Определение глубокого обучения: первый проход ......................................91
    Строительные блоки нейросети: операции ..................................................93
    Строительные блоки нейросети: слои ..........................................................97
    Блочное строительство ..............................................................................100
    Класс NeuralNetwork и, возможно, другие ..................................................107
    Глубокое обучение с чистого листа ...........................................................111
    Trainer и Optimizer .....................................................................................115
    Собираем все вместе .................................................................................119
    Заключение и следующие шаги .................................................................122
    Глава 4. Расширения .....................................................................................123
    Немного о понимании нейронных сетей .....................................................124
    Многопеременная логистическая функция активации с перекрестно- энтропийными потерями ............................................................................126
    Эксперименты ...........................................................................................135
    Импульс ....................................................................................................138
    Скорость обучения ....................................................................................142
    Инициализация весов ................................................................................145
    Исключение, или дропаут ..........................................................................149
    Заключение ...............................................................................................153
    Глава 5. Сверточная нейронная сеть .............................................................155
    Нейронные сети и обучение представлениям ............................................155
    Слои свертки .............................................................................................160

    Оглавление
    7
    Реализация операции многоканальной свертки .........................................167
    Свертка: обратный проход ........................................................................171
    Использование операции для обучения CNN .............................................184
    Заключение ...............................................................................................188
    Глава 6. Рекуррентные нейронные сети ........................................................190
    Ключевое ограничение: работа с ветвлениями ..........................................191
    Автоматическое дифференцирование ........................................................194
    Актуальность рекуррентных нейронных сетей ...........................................199
    Введение в рекуррентные нейронные сети ................................................201
    RNN: код ...................................................................................................209
    Заключение ...............................................................................................230
    Глава 7. Библиотека PyTorch .........................................................................231
    Класс PyTorch Tensor ..................................................................................231
    Глубокое обучение с PyTorch .....................................................................233
    Сверточные нейронные сети в PyTorch ......................................................242
    P. S. Обучение без учителя через автокодировщик ....................................251
    Заключение ...............................................................................................261
    Приложение A. Глубокое погружение ..........................................................262
    Цепное правило ........................................................................................262
    Градиент потерь с учетом смещения .........................................................266
    Свертка с помощью умножения матриц .....................................................266
    Об авторе .................................................................................................. 272
    Об обложке .............................................................................................. 272

    Предисловие
    Если вы уже пытались узнать что-то о нейронных сетях и глубоком обу- чении, то, скорее всего, столкнулись с изобилием ресурсов, от блогов до массовых открытых онлайн-курсов различного качества и даже книг.
    У меня было именно так, когда я начал изучать эту тему несколько лет назад. Однако если вы читаете это предисловие, вполне вероятно, что вы нигде не нашли достаточно полноценного описания нейронных сетей.
    Все эти ресурсы напоминают попытку нескольких слепцов описать слона
    (
    https://oreil.ly/r5YxS
    ). Вот что привело меня к написанию этой книги.
    Ресурсы по нейронным сетям обычно делятся на две категории. Некото- рые из них касаются в основном концептуальной и математической части и содержат как рисунки, которые, как правило, встречаются в объяснениях нейронных сетей, так и круги, соединенные линиями со стрелками на концах, а также подробные математические объяснения того, что про- исходит, чтобы вы могли «вникнуть в матчасть». Пример этого — очень хорошая книга Яна Гудфеллоу и др. «Deep Learning»
    1
    На других ресурсах — много кода, запустив который вы видите, как сни- жается ошибка и «обучается» нейронная сеть. Например, следующий пример из документации PyTorch действительно задает и обучает простую нейронную сеть случайными данными:
    # N - размер партии; D_in - входной размер;
    # H - скрытое измерение; D_out - размер вывода.
    N, D_in, H, D_out = 64, 1000, 100, 10
    # Создать случайные входные и выходные данные x = torch.randn(N, D_in, device=device, dtype=dtype)
    y = torch.randn(N, D_out, device=device, dtype=dtype)
    # Произвольно инициализировать веса w1 = torch.randn(D_in, H, device=device, dtype=dtype)
    w2 = torch.randn(H, D_out, device=device, dtype=dtype)
    1
    Гудфеллоу Я., Бенджио И., Курвилль А. Глубокое обучение / пер. с англ. А. А. Слин- кина. — 2-е изд., испр. — М.: ДМК Пресс, 2018. — 652 с. — Примеч. ред.

    Предисловие
    9
    learning_rate = 1e-6
    for t in range(500):
    # Прямой проход: вычислить прогнозируемое y h = x.mm(w1)
    h_relu = h.clamp(min=0)
    y_pred = h_relu.mm(w2)
    # Вычислить и вывести потери loss = (y_pred — y).pow(2).sum().item()
    print(t, loss)
    # Backprop для вычисления градиентов w1 и w2 относительно потерь grad_y_pred = 2.0 * (y_pred — y)
    grad_w2 = h_relu.t().mm(grad_y_pred)
    grad_h_relu = grad_y_pred.mm(w2.t())
    grad_h = grad_h_relu.clone()
    grad_h[h < 0] = 0
    grad_w1 = x.t().mm(grad_h)
    # Обновить веса с помощью градиентного спуска w1 -= learning_rate * grad_w1
    w2 -= learning_rate * grad_w2
    Очевидно, что такие объяснения не дают понимания того, что на самом деле происходит: лежащих в основе математических принципов, отдель- ных компонентов нейронной сети, как они работают вместе и т. д.
    1
    А каким должно быть хорошее объяснение? Тут полезно посмотреть, как объясняются другие концепции информатики: например, если вы хотите узнать об алгоритмах сортировки, то в учебнике найдется:
    y объяснение принципа работы алгоритма простыми словами;
    y визуальное объяснение работы алгоритма — схема, график;
    y математическое объяснение почему алгоритм работает
    2
    ;
    y псевдокод, реализующий алгоритм.
    1
    Этот пример был задуман как иллюстрация библиотеки PyTorch для тех, кто уже разбирается в нейронных сетях, а не как поучительное руководство. Тем не менее многие учебники придерживаются именно такого стиля, давая только код вместе с краткими пояснениями.
    2
    В частности, в случае алгоритмов сортировки — почему мы получаем отсортиро- ванный список.

    10
    Предисловие
    Эти элементы объяснения нейронных сетей редко (или никогда) объ- единяются, хотя мне кажется очевидным, что правильное объяснение нейронных сетей должно быть именно таким. Эта книга — попытка вос- полнить этот пробел.
    Для понимания нейронных сетей нужно несколько
    мысленных моделей
    Я не исследователь и не доктор наук. Но я профессионально преподавал
    Data Science: провел пару буткемпов по Data Science в компании Metis, а затем в течение года путешествовал по всему миру с Metis, проводя однодневные семинары для компаний из разных отраслей. На этих се- минарах я рассказывал о машинном обучении и основных концепциях разработки программного обеспечения. Мне всегда нравилось препода- вать, и в последнее время, занимаясь в основном машинным обучением и статистикой, меня интересует вопрос, как лучше всего объяснить технические понятия. Что касается нейронных сетей, я обнаружил, что наиболее сложной задачей является создание правильной «мысленной модели» того, что представляет собой нейронная сеть, тем более что для понимания нейронных сетей полностью требуется не одна, а несколько ментальных моделей и все они освещают различные (но все же важные) аспекты работы нейронных сетей. Следующие четыре предложения яв- ляются правильными ответами на вопрос: «Что такое нейронная сеть?»
    y
    Нейронная сеть — это математическая функция, которая принимает входные и производит выходные данные.
    y
    Нейронная сеть — это вычислительный граф, через который протекают многомерные массивы.
    y
    Нейронная сеть состоит из слоев, каждый из которых может рассма- триваться как ряд «нейронов».
    y
    Нейронная сеть — это универсальный аппроксиматор функций, кото- рый теоретически может представить решение любой контролируемой проблемы обучения.
    Не сомневаюсь, что читатели уже слышали одно или несколько из этих понятий раньше и в целом понимают, для чего нужны нейронные сети.
    Однако для полного понимания нужно осознать их все и показать, как

    Структура книги
    11
    они связаны. Как тот факт, что нейронная сеть может быть представлена в виде вычислительного графа, сопоставить, например, с понятием слоя?
    Для более точного понимания мы реализуем все эти концепции с нуля в Python и соединим их, создавая рабочие нейронные сети, которые вы можете обучать на своем компьютере дома. Несмотря на то что мы уделим немало времени деталям реализации, целью реализации этих моделей
    в Python будет укрепление и уточнение нашего понимания концепций.
    Здесь спешка не нужна.
    Я хотел бы, чтобы после прочтения этой книги у вас было такое глубокое понимание всех этих мысленных моделей и результатов их работы, чтобы понимать, каким образом нейронные сети должны быть реализованы.
    После этого все концепции, связанные с обучением в будущих проектах, станут для вас проще.
    Структура книги
    Первые три главы наиболее важные и сами по себе достойны отдельных книг.
    1. В главе 1 я покажу, как представлять математические функции в виде последовательности операций, связанных вместе, чтобы сформиро- вать вычислительный граф. Также я покажу, как это представление позволяет нам вычислять производные выходов этих функций по отношению к их входам, используя правило цепи. В конце главы расскажу об очень важной операции — умножении матрицы — и по- кажу, как она может вписаться в математическую функцию и в то же время позволит нам вычислить производные, которые понадобятся для глубокого обучения.
    2. В главе 2 мы будем использовать строительные блоки, которые сделали в главе 1 с целью создания и обучения модели для решения реальных проблем: в частности, мы будем использовать их для по- строения моделей линейной регрессии и нейронных сетей для про- гнозирования цен на жилье на основе реальных данных. Я покажу, что нейронная сеть работает лучше, чем линейная регрессия, и по- пытаюсь объяснить почему. Подход к построению моделей «сначала суть» в этой главе должен дать вам очень хорошее представление о том, как работают нейронные сети, а также покажет ограниченные

      1   2   3   4   5   6   7   8   9   ...   22


    написать администратору сайта