# Эндрю Ын: «Не изобретайте гиперпараметры, используйте проверенные архитектуры»

Источник: https://www.youtube.com/watch?v=bXJx7y51cl0
Канал: DeepLearning.AI
Опубликовано: 07.11.2017

---

В новом уроке от DeepLearning.AI рассматривается практический пример построения сверточной нейронной сети (CNN) для распознавания рукописных цифр. Основатель проекта Эндрю Ын на примере архитектуры, вдохновленной классической сетью LeNet-5, объясняет принципы объединения различных слоев и логику распределения параметров в современных моделях глубокого обучения.

## 🏗️ Анатомия классической сверточной сети
[[JUMP:0:00]]

В качестве базового примера Эндрю Ын рассматривает задачу распознавания рукописных цифр (от 0 до 9) на цветных изображениях размером 32x32x3 пикселя [0:13]. Архитектура, представленная в уроке, во многом вдохновлена классической сетью LeNet-5, созданной Яном Лекуном много лет назад, и использует схожие принципы выбора гиперпараметров [0:37].

Процесс обработки данных начинается с первого слоя (Layer 1):

*   Входные данные: RGB-изображение 32x32x3.
*   Сверточный слой (Conv1): используются 6 фильтров размером 5x5, шаг (stride) равен 1, паддинг (padding) отсутствует.
*   Результат свертки: на выходе получается объем 28x28x6 [1:07].
*   Активация: к результату применяется нелинейная функция, например, ReLU.
*   Пулинг (Pool1): применяется Max Pooling с фильтром 2x2 и шагом 2. Это сокращает высоту и ширину представления вдвое, сохраняя количество каналов.
*   Итоговый размер после первого блока: 14x14x6 [2:06].

## 📏 Проблема терминологии и подсчета слоев
[[JUMP:2:20]]

Эндрю Ын обращает внимание на существующую в литературе непоследовательность в именовании слоев. Некоторые исследователи считают сверточный слой и слой пулинга отдельными слоями, в то время как другие объединяют их в один [2:35]. 

Автор курса придерживается следующей логики:

1.  Слоем считается только тот этап обработки, который содержит обучаемые веса (параметры) [2:49].
2.  Поскольку слой пулинга не имеет весов, а обладает лишь гиперпараметрами, Ын объединяет Conv1 и Pool1 в единый «Слой 1» (Layer 1) [3:03].
3.  Названия «Conv1» и «Pool1» в данном контексте указывают на их принадлежность к первому логическому уровню нейросети [3:31].

## 🔗 От сверток к полносвязным слоям
[[JUMP:3:45]]

Второй этап (Layer 2) повторяет структуру первого, но с увеличением глубины каналов. Для входа 14x14x6 применяется свертка с 16 фильтрами 5x5 (stride 1, no padding), что дает на выходе 10x10x16 [4:01]. После последующего Max Pooling (2x2, stride 2) размер уменьшается до 5x5x16 [4:44].

Переход к классической архитектуре нейронных сетей происходит через следующие шаги:

*   Выравнивание (Flattening): объем 5x5x16 разворачивается в вектор из 400 нейронов (5

*   5
*   16 = 400) [5:12].
*   Первый полносвязный слой (FC3): 400 входных единиц плотно соединяются со 120 нейронами. Матрица весов здесь имеет размерность 120x400 [6:03].
*   Второй полносвязный слой (FC4): количество нейронов сокращается до 84 [6:31].
*   Выходной слой (Softmax): для классификации цифр используется Softmax с 10 выходами, соответствующими вероятностям для каждой цифры от 0 до 9 [7:01].

## 📉 Анализ параметров и общие паттерны
[[JUMP:7:15]]

Эндрю Ын выделяет несколько ключевых закономерностей, которые полезно учитывать при проектировании собственных сетей. По его мнению, одна из лучших стратегий для новичка — не изобретать собственные настройки гиперпараметров с нуля, а использовать архитектуры, которые уже доказали свою эффективность в научных публикациях [7:28].

Основные тенденции при углублении в сеть:

*   Размеры изображения (высота и ширина) обычно постепенно уменьшаются: в примере они сокращаются с 32x32 до 5x5 [7:54].
*   Количество каналов, напротив, возрастает: от 3 (RGB) до 6, а затем до 16 [8:08].
*   Большая часть параметров нейросети сосредоточена именно в полносвязных слоях (FC), в то время как сверточные слои имеют их относительно немного [9:32].
*   Размер активаций должен уменьшаться постепенно. По словам Ына, слишком резкое падение размера активаций на ранних этапах обычно негативно сказывается на производительности модели [9:48].

В заключение Эндрю Ын отмечает, что понимание того, как эффективно комбинировать эти блоки, требует интуиции, которую лучше всего развивать через изучение множества конкретных примеров [10:43].