# Основы глубокого обучения: от теории к практике

Источник: https://www.youtube.com/watch?v=VyWAvY2CF9c
Канал: freeCodeCamp.org
Опубликовано: 30.07.2020

---

## Основы глубокого обучения: от теории к практике
[[JUMP:0:00]]

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

## 🧠 Что такое глубокое обучение?
[[JUMP:1:18]]

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

* **Традиционное машинное обучение:** требует ручного определения признаков (например, описывать компьютеру, что у лица есть глаза, нос и рот).
* **Глубокое обучение:** алгоритм самостоятельно выявляет иерархические признаки (линии, формы, части объекта), обучаясь на «сырых» данных.

Основные причины популярности глубокого обучения сегодня:

1.  **Большие данные:** наличие огромных объемов информации.
2.  **Мощное оборудование:** современные вычислительные мощности позволяют обрабатывать эти данные.
3.  **Доступное ПО:** развитие библиотек с открытым исходным кодом, таких как TensorFlow и PyTorch.

## ⚙️ Как работают нейронные сети
[[JUMP:5:23]]

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

Процесс обучения нейросети включает два этапа:

1.  **Прямое распространение (Forward Propagation):** данные проходят через слои, умножаются на веса (weights) и складываются со смещением (bias). Результат проходит через функцию активации, которая определяет, «активируется» ли нейрон.
2.  **Обратное распространение (Back Propagation):** сеть оценивает ошибку (loss) между своим прогнозом и ожидаемым результатом. Затем эта ошибка передается назад по сети, чтобы скорректировать веса и смещения для повышения точности.

### 📉 Оптимизаторы и функции активации
[[JUMP:12:02]]

* **Функции активации:** вводят нелинейность, позволяя сети моделировать сложные данные.
    * *ReLU (Rectified Linear Unit):* популярна, так как не имеет проблем с «затухающим градиентом» в положительной области и вычислительно эффективна.
    * *Sigmoid / Tanh:* традиционные функции, которые могут страдать от проблемы исчезающего градиента.
* **Оптимизаторы:** алгоритмы, такие как **Gradient Descent** (градиентный спуск), помогают минимизировать ошибку. **Adam** считается одним из самых распространенных и эффективных оптимизаторов на сегодняшний день.

## 📊 Типы обучения
[[JUMP:35:18]]

1.  **Обучение с учителем (Supervised Learning):** модель обучается на размеченных данных, где для каждого входа есть правильный ответ (классификация или регрессия).
2.  **Обучение без учителя (Unsupervised Learning):** поиск скрытых закономерностей в неразмеченных данных (кластеризация, ассоциативные правила).
3.  **Обучение с подкреплением (Reinforcement Learning):** агент взаимодействует со средой, получая награды за правильные действия и штрафы за ошибки, стремясь максимизировать суммарную награду.

## 🏗️ Архитектуры нейронных сетей
[[JUMP:51:24]]

* **Полносвязные сети (Feed Forward):** передают данные строго вперед от входа к выходу.
* **Рекуррентные сети (RNN):** обладают «памятью» за счет обратных связей (циклов), что делает их идеальными для работы с последовательностями, например, текстом или временными рядами.
* **Сверточные сети (CNN):** имитируют зрительную кору мозга и являются стандартом для анализа изображений и видео благодаря слоям свертки (convolution) и пулинга (pooling).

## 🛠️ Жизненный цикл проекта
[[JUMP:108:12]]

Каждый проект по глубокому обучению включает пять ключевых шагов:

1.  **Сбор данных:** поиск качественных, релевантных данных (например, на Kaggle или UCI Machine Learning Repository).
2.  **Предварительная обработка:** очистка, нормализация, масштабирование и разделение данных на обучающую, валидационную и тестовую выборки.
3.  **Обучение:** тренировка модели, использование эпох (проходов по всему набору данных) и батчей.
4.  **Оценка:** проверка работы на данных, которые модель не видела ранее.
5.  **Оптимизация:** настройка гиперпараметров, борьба с переобучением (overfitting) с помощью регуляризации, dropout или аугментации данных.