Погружение в глубокое обучение v2: путеводитель по книге и видеокурсу Ли Му
Обзор учебника «Погружение в глубокое обучение» (Dive into Deep Learning, китайское 2-е издание) и видеокурса Ли Му 2021 года на Bilibili: карта 15 глав с привязкой к урокам ступеней 1–5, полное расписание 103 видеолекций со ссылками, как читать и запускать код на своей машине.
«Погружение в глубокое обучение» (Dive into Deep Learning; китайское название дословно — «Глубокое обучение своими руками») — открытый учебник Астона Чжана, Захари Липтона, Ли Му и Александра Смолы. Каждая тема в нём идёт тройкой «идея → формула → работающий код», сначала «с нуля», потом «кратко» средствами фреймворка, — ровно наш принцип «сначала руками, потом фреймворк». Книга написана по-английски (d2l.ai) и переведена на китайский (zh.d2l.ai); английская версия уже есть в библиотеке курса.
Ценность именно китайской версии — в видеокурсе Ли Му «Погружение в глубокое обучение v2» (весна–лето 2021): более сотни коротких лекций на Bilibili (канал «Учимся ИИ у Ли Му»), где автор книги разбирает каждый раздел у доски и в Jupyter, отвечает на вопросы зрителей, а в практической части проводит соревнования на Kaggle. Это один из самых популярных китайскоязычных курсов по глубокому обучению.
Книга: карта глав
Заголовок раздела «Книга: карта глав»| Глава | О чём | Уроки курса | Видео (см. расписание ниже) |
|---|---|---|---|
| Предисловие, установка, обозначения | зачем книга, как ставить окружение, нотация | 0.1.2 | «Установка» |
| 1. Введение | что такое ML, виды задач, история | 0.0.1, 2.1.1 | «Введение в глубокое обучение» |
| 2. Предварительные знания | тензоры, pandas, линейная алгебра, производные, автодифференцирование, вероятность | 0.3.1, 1.1.1–1.1.2, 1.2.1–1.2.3, 1.3.1, 3.3.1 | 8 лекций, 20–21.03 |
| 3. Линейные сети | линейная и softmax-регрессия с нуля и кратко, Fashion-MNIST | 2.2.1–2.2.2, 1.3.2, 1.4.1 | 9 лекций, 27–28.03 |
| 4. Многослойный перцептрон | MLP, переобучение, затухание весов, dropout, обратное распространение, инициализация, сдвиг распределения, Kaggle «цены на дома» | 3.1.1–3.1.2, 2.1.2, 3.4.1–3.4.2, 2.4.4 | 12 лекций, 10–18.04 |
| 5. Вычисления в глубоком обучении | слои и блоки, параметры, свои слои, сохранение, GPU | 3.3.2–3.3.3 | 5 лекций, 24.04 |
| 6. Свёрточные сети | свёртка, дополнение и шаг, каналы, пулинг, LeNet | 3.5.1 | 7 лекций, 15–22.05 |
| 7. Современные CNN | AlexNet, VGG, NiN, GoogLeNet, пакетная нормализация, ResNet, DenseNet | 3.4.1–3.4.2, 3.5.2 | 7 лекций, 23–30.05 |
| 8. Рекуррентные сети | модели последовательностей, предобработка текста, языковая модель, RNN, BPTT | 3.4.3, 4.1.1, 4.1.5 | 6 лекций, 17–24.07 |
| 9. Современные RNN | GRU, LSTM, глубокие и двунаправленные RNN, машинный перевод, кодировщик-декодировщик, seq2seq, лучевой поиск | 4.1.5, 4.1.3 | 8 лекций, 25.07–07.08 |
| 10. Механизм внимания | ядерная регрессия Надараи — Ватсона, функции оценки, внимание Бахданау, многоголовое внимание, самовнимание и позиционное кодирование, Transformer | 4.4.1–4.4.3, 4.5.1–4.5.2 | 5 лекций, 08–14.08 |
| 11. Алгоритмы оптимизации | выпуклость, (стохастический) градиентный спуск, моментум, AdaGrad, RMSProp, Adadelta, Adam, расписания LR | 1.4.1–1.4.2, 5.4.4 | 1 обзорная лекция, 21.08 |
| 12. Производительность вычислений | компиляторы и интерпретаторы, асинхронность, автопараллелизм, железо, несколько GPU, сервер параметров | 5.4.3, 5.7.1, 5.7.4 | 5 лекций, 05–19.06; наш перевод 12.5–12.6 |
| 13. Компьютерное зрение | аугментация, дообучение, детекция (рамки, якоря, SSD, R-CNN), сегментация, транспонированная свёртка, FCN, перенос стиля, Kaggle | 3.5.2, 9.1.3 | 22 лекции, 20.06–11.07 |
| 14. NLP: предобучение | word2vec, отрицательная выборка, GloVe, подсловные эмбеддинги, аналогии, BERT и его предобучение | 4.3.1–4.3.2, 4.2.2, 4.5.4 | 3 лекции (BERT), 15.08 |
| 15. NLP: приложения | анализ тональности (RNN, CNN), логический вывод (внимание, BERT), дообучение BERT | 4.5.4 | 3 лекции, 15.08 |
| Приложение | Jupyter, облака AWS, выбор серверов и GPU, API пакета d2l | 0.1.2 | — |
Видеокурс Ли Му «Погружение в глубокое обучение v2»
Заголовок раздела «Видеокурс Ли Му «Погружение в глубокое обучение v2»»Что известно со страницы курса (репозиторий d2l-ai/courses-zh-v2):
- Когда: с 20 марта по август 2021 года, живые трансляции по субботам и воскресеньям 13:00–14:30 по пекинскому
времени; записи — на канале Bilibili, лекции сгруппированы в «сборники»
по 1–5 частей (в ссылках ниже параметр
?p=2— номер части). - Преподаватель: Ли Му, на тот момент старший главный научный сотрудник AWS, PhD Университета Карнеги — Меллона.
- Для кого: с нуля, нужны только базовый Python и математика. Четыре блока моделей — многослойные перцептроны, CNN, RNN, внимание — и два прикладных направления: компьютерное зрение и NLP. Каждый алгоритм показан на PyTorch.
- Практика: соревнования на Kaggle (в расписании — предсказание цен на дома, классификация листьев, детекция объектов) с разбором итогов в отдельных лекциях.
- Слайды и ноутбуки: у каждой лекции есть PDF-слайды и ноутбук Jupyter (в репозитории сайта курса).
flowchart LR P0["Ч. 0: основы<br/>тензоры, автодифф.,<br/>линейные модели, MLP"] --> P1["Ч. 1: CNN<br/>LeNet → ResNet"] P1 --> P2["Ч. 2: железо, много GPU,<br/>компьютерное зрение"] P0 --> P3["Ч. 3: RNN<br/>язык. модели, LSTM, seq2seq"] P3 --> P4["Ч. 4: внимание,<br/>Transformer, BERT"] S1["Ступени 1–2"] -.-> P0 S3["Ступень 3"] -.-> P1 S5["Ступень 5"] -.-> P2 S4["Ступень 4"] -.-> P3 S4 -.-> P4
Полное расписание лекций
Заголовок раздела «Полное расписание лекций»Названия — перевод с китайского; «Раздел книги» — ссылка на соответствующий раздел zh-v2.d2l.ai (сейчас этот адрес ведёт на zh.d2l.ai); «Видео» — номер видео на Bilibili. Дни без занятий опущены.
Часть 0. Основы глубокого обучения
Заголовок раздела «Часть 0. Основы глубокого обучения»| Дата (2021) | Лекция | Раздел книги | Видео |
|---|---|---|---|
| 20.03 | О курсе (план) | — | BV1oX4y137bC |
| 20.03 | Введение в глубокое обучение | zh-v2.d2l.ai | BV1J54y187f9 |
| 20.03 | Установка | zh-v2.d2l.ai | BV18p4y1h7Dr |
| 20.03 | Операции с данными (тензоры) | zh-v2.d2l.ai | BV1CV411Y7i4 |
| 20.03 | Предобработка данных | zh-v2.d2l.ai | BV1CV411Y7i4?p=3 |
| 21.03 | Линейная алгебра | zh-v2.d2l.ai | BV1eK4y1U7Qy |
| 21.03 | [доп.] Сумма по заданной оси | — | BV1eK4y1U7Qy?p=3 |
| 21.03 | Матричное дифференцирование | zh-v2.d2l.ai | BV1eZ4y1w7PY |
| 21.03 | Автоматическое дифференцирование | zh-v2.d2l.ai | BV1KA411N7Px |
| 27.03 | Линейная регрессия | zh-v2.d2l.ai | BV1PX4y1g7KC |
| 27.03 | Базовые методы оптимизации | — | BV1PX4y1g7KC?p=2 |
| 27.03 | Линейная регрессия с нуля | zh-v2.d2l.ai | BV1PX4y1g7KC?p=3 |
| 27.03 | Линейная регрессия: краткая реализация | zh-v2.d2l.ai | BV1PX4y1g7KC?p=4 |
| 28.03 | Softmax-регрессия | zh-v2.d2l.ai | BV1K64y1Q7wu |
| 28.03 | Функции потерь | — | BV1K64y1Q7wu?p=2 |
| 28.03 | Датасет для классификации изображений | zh-v2.d2l.ai | BV1K64y1Q7wu?p=3 |
| 28.03 | Softmax-регрессия с нуля | zh-v2.d2l.ai | BV1K64y1Q7wu?p=4 |
| 28.03 | Softmax-регрессия: краткая реализация | zh-v2.d2l.ai | BV1K64y1Q7wu?p=5 |
| 10.04 | Перцептрон | — | BV1hh411U7gn |
| 10.04 | Многослойный перцептрон | zh-v2.d2l.ai | BV1hh411U7gn?p=2 |
| 10.04 | MLP с нуля | zh-v2.d2l.ai | BV1hh411U7gn?p=3 |
| 10.04 | MLP: краткая реализация | zh-v2.d2l.ai | BV1hh411U7gn?p=3 |
| 11.04 | Выбор модели | — | BV1kX4y1g7jp |
| 11.04 | Недо- и переобучение | zh-v2.d2l.ai | BV1kX4y1g7jp?p=2 |
| 17.04 | Затухание весов | zh-v2.d2l.ai | BV1UK4y1o7dy |
| 17.04 | Dropout (Dropout) | zh-v2.d2l.ai | BV1Y5411c7aY |
| 18.04 | Численная устойчивость | zh-v2.d2l.ai | BV1u64y1i75a |
| 18.04 | Инициализация и функции активации | — | BV1u64y1i75a?p=2 |
| 18.04 | Практика Kaggle: цены на дома | zh-v2.d2l.ai | BV1NK4y1P7Tu |
| 18.04 | Соревнование: цены на дома | — | BV1NK4y1P7Tu?p=2 |
Часть 1. Свёрточные сети
Заголовок раздела «Часть 1. Свёрточные сети»| Дата (2021) | Лекция | Раздел книги | Видео |
|---|---|---|---|
| 24.04 | Построение модели | zh-v2.d2l.ai | BV1AK4y1P7vs |
| 24.04 | Управление параметрами | zh-v2.d2l.ai | BV1AK4y1P7vs?p=2 |
| 24.04 | Свои слои | zh-v2.d2l.ai | BV1AK4y1P7vs?p=3 |
| 24.04 | Чтение и запись файлов | zh-v2.d2l.ai | BV1AK4y1P7vs?p=4 |
| 24.04 | GPU (GPU) | zh-v2.d2l.ai | BV1z5411c7C1 |
| 15.05 | Итоги соревнования по ценам на дома | — | BV15Q4y1o7vc |
| 15.05 | От полносвязного слоя к свёртке | zh-v2.d2l.ai | BV1L64y1m7Nh |
| 15.05 | Свёртка изображений | zh-v2.d2l.ai | BV1L64y1m7Nh?p=2 |
| 16.05 | Дополнение и шаг | zh-v2.d2l.ai | BV1Th411U7UN |
| 16.05 | Несколько входных и выходных каналов | zh-v2.d2l.ai | BV1MB4y1F7of |
| 22.05 | Слой пулинга | zh-v2.d2l.ai | BV1EV411j7nX |
| 22.05 | Свёрточная сеть LeNet | zh-v2.d2l.ai | BV1t44y1r7ct |
| 23.05 | AlexNet | zh-v2.d2l.ai | BV1h54y1L7oe |
| 23.05 | VGG: сеть из блоков | zh-v2.d2l.ai | BV1Ao4y117Pd |
| 29.05 | NiN: сеть в сети | zh-v2.d2l.ai | BV1Uv411G71b |
| 29.05 | GoogLeNet: параллельные ветви | zh-v2.d2l.ai | BV1b5411g7Xo |
| 30.05 | Пакетная нормализация | zh-v2.d2l.ai | BV1X44y1r77r |
| 30.05 | ResNet | zh-v2.d2l.ai | BV1bV41177ap |
| 30.05 | Соревнование: классификация изображений | — | BV1z64y1o7iz |
Часть 2. Вычисления и компьютерное зрение
Заголовок раздела «Часть 2. Вычисления и компьютерное зрение»| Дата (2021) | Лекция | Раздел книги | Видео |
|---|---|---|---|
| 05.06 | Железо: CPU и GPU | zh-v2.d2l.ai | BV1TU4y1j7Wd |
| 06.06 | Специализированное железо | — | BV1VV41147PC |
| 06.06 | Обучение на нескольких GPU | zh-v2.d2l.ai | BV1vU4y1V7rd |
| 19.06 | Несколько GPU: реализация | zh-v2.d2l.ai | BV1MQ4y1R7Qg |
| 19.06 | Распределённое обучение | zh-v2.d2l.ai | BV1jU4y1G7iu |
| 20.06 | Аугментация изображений | zh-v2.d2l.ai | BV17y4y1g76q |
| 20.06 | Дообучение (fine-tuning) | zh-v2.d2l.ai | BV1Sb4y1d7CR |
| 26.06 | Практика Kaggle: CIFAR-10 | zh-v2.d2l.ai | BV1Gy4y1M7Cu |
| 26.06 | Практика Kaggle: породы собак | zh-v2.d2l.ai | BV1j5411T7wx |
| 27.06 | Детекция объектов | — | BV1Lh411Y7LX |
| 27.06 | Ограничивающие рамки | zh-v2.d2l.ai | BV1Lh411Y7LX?p=2 |
| 27.06 | Датасет для детекции | zh-v2.d2l.ai | BV1Lh411Y7LX?p=3 |
| 27.06 | Якорные рамки | zh-v2.d2l.ai | BV1aB4y1K7za |
| 27.06 | Итоги соревнования по классификации листьев | — | BV1by4y1K7SE |
| 03.07 | R-CNN | zh-v2.d2l.ai | BV1Db4y1C71g |
| 03.07 | SSD | — | BV1Db4y1C71g |
| 03.07 | YOLO | — | BV1Db4y1C71g |
| 04.07 | Многомасштабная детекция | zh-v2.d2l.ai | BV1ZX4y1c7Sw?p=1 |
| 04.07 | Реализация SSD | zh-v2.d2l.ai | BV1ZX4y1c7Sw?p=2 |
| 10.07 | Семантическая сегментация | — | BV1BK4y1M7Rd |
| 10.07 | Датасет для сегментации | zh-v2.d2l.ai | BV1BK4y1M7Rd?p=2 |
| 10.07 | Транспонированная свёртка | zh-v2.d2l.ai | BV17o4y1X7Jn |
| 10.07 | Транспонированная свёртка — тоже свёртка | zh-v2.d2l.ai | BV1CM4y1K7r7 |
| 11.07 | Полносвёрточная сеть (FCN) | zh-v2.d2l.ai | BV1af4y1L7Zu |
| 11.07 | Перенос стиля | zh-v2.d2l.ai | BV1Eh41167GN |
| 11.07 | Соревнование: детекция объектов | — | BV1F64y1x7xP |
Часть 3. Рекуррентные сети
Заголовок раздела «Часть 3. Рекуррентные сети»| Дата (2021) | Лекция | Раздел книги | Видео |
|---|---|---|---|
| 17.07 | Модели последовательностей | zh-v2.d2l.ai | BV1L44y1m768 |
| 17.07 | Предобработка текста | zh-v2.d2l.ai | BV1Fo4y1Q79L |
| 18.07 | Языковые модели и датасет | zh-v2.d2l.ai | BV1ZX4y1F7K3 |
| 18.07 | Рекуррентная сеть (RNN) | zh-v2.d2l.ai | BV1D64y1z7CA |
| 24.07 | RNN с нуля | zh-v2.d2l.ai | BV1kq4y1H7sw |
| 24.07 | RNN: краткая реализация | zh-v2.d2l.ai | BV1kq4y1H7sw?p=2 |
| 25.07 | GRU | zh-v2.d2l.ai | BV1mf4y157N2 |
| 25.07 | LSTM | zh-v2.d2l.ai | BV1JU4y1H7PC |
| 25.07 | Глубокие RNN | zh-v2.d2l.ai | BV1JM4y1T7N4 |
| 25.07 | Двунаправленные RNN | zh-v2.d2l.ai | BV12X4y1c71W |
| 07.08 | Машинный перевод и датасет | zh-v2.d2l.ai | BV1H64y1s7TH |
| 07.08 | Архитектура «кодировщик — декодировщик» | zh-v2.d2l.ai | BV1c54y1E7YP |
| 07.08 | seq2seq | zh-v2.d2l.ai | BV16g411L7FG |
| 07.08 | Лучевой поиск (beam search) | zh-v2.d2l.ai | BV1B44y1C7m1 |
Часть 4. Внимание и NLP
Заголовок раздела «Часть 4. Внимание и NLP»| Дата (2021) | Лекция | Раздел книги | Видео |
|---|---|---|---|
| 08.08 | Механизм внимания | zh-v2.d2l.ai | BV1264y1i7R1 |
| 08.08 | Функции оценки внимания | zh-v2.d2l.ai | BV1Tb4y167rb |
| 08.08 | seq2seq с вниманием | zh-v2.d2l.ai | BV1v44y1C7Tg |
| 14.08 | Самовнимание и позиционное кодирование | zh-v2.d2l.ai | BV19o4y1m7mo |
| 14.08 | Transformer (Transformer) | zh-v2.d2l.ai | BV1Kq4y1H7FL |
| 15.08 | BERT (BERT) | zh-v2.d2l.ai | BV1yU4y1E7Ns |
| 15.08 | Датасет для предобучения BERT | zh-v2.d2l.ai | BV1yU4y1E7Ns?p=2 |
| 15.08 | Предобучение BERT | zh-v2.d2l.ai | BV1yU4y1E7Ns?p=3 |
| 15.08 | Дообучение BERT | zh-v2.d2l.ai | BV15L4y1v7ts |
| 15.08 | Логический вывод в NLP (NLI) и датасет | zh-v2.d2l.ai | BV15L4y1v7ts?p=2 |
| 15.08 | NLI: дообучение BERT | zh-v2.d2l.ai | BV15L4y1v7ts?p=3 |
| 15.08 | Итоги соревнования по детекции | — | BV13b4y1m7y8 |
| 21.08 | Алгоритмы оптимизации | zh-v2.d2l.ai | BV1bP4y1p7Gq |
| 21.08 | Итоги курса и что учить дальше | — | BV1AL4y1Y7gu |
Как запускать код книги
Заголовок раздела «Как запускать код книги»Глава «Установка» книги предлагает такие версии для PyTorch-ветки:
pip install torch==1.12.0pip install torchvision==0.13.0pip install d2l==0.17.6 # вспомогательный пакет книги: загрузка данных, графики, таймерыcurl https://zh-v2.d2l.ai/d2l-zh-2.0.0.zip -o d2l-zh.zip # все ноутбуки книги одним архивомunzip d2l-zh.zip && rm d2l-zh.zipЧто читать дальше
Заголовок раздела «Что читать дальше»- Словарь терминов d2l (английский — русский) — держите открытым, когда читаете книгу или смотрите лекции.
- Обучение на нескольких GPU (d2l 12.5–12.6) — полный перевод.
- Английская версия книги — d2l.ai, репозиторий d2l-ai/d2l-en: новее и полнее китайской.
- После главы 10 (внимание) — ступени 4–5 курса и книга Happy-LLM.
Словарик
Заголовок раздела «Словарик»| Русский | English |
|---|---|
| «учиться руками», на практике (из названия книги) | hands-on, dive into |
| реализация с нуля | from scratch |
| краткая реализация (фреймворком) | concise implementation |
| стохастический градиентный спуск по мини-батчам | minibatch SGD |
| dropout (в китайском издании — «метод временного выключения») | dropout |
| слой пулинга | pooling layer |
| пакетная нормализация | batch normalization |
| токен | token |
| лучевой поиск | beam search |
| соревнование | competition |
| сборник видео / часть сборника | playlist / part |