🔴 Сложный ⏱️ 25 минут

Свёрточные нейронные сети: как компьютер видит мир

Свёрточные нейронные сети: как компьютер видит мир

🎯 Зачем это нужно?

Каждый раз, когда ты открываешь камеру в Инстаграм и видишь фильтры, которые автоматически находят твоё лицо 📱, или когда Tesla распознаёт дорожные знаки 🚗 - за всем этим стоят свёрточные нейронные сети (CNN).

Где используется:

  • 📸 Фотографии: Google Photos автоматически находит всех твоих друзей на 100000+ фото
  • 🏥 Медицина: МРТ-сканы анализируются быстрее любого врача
  • 🛡️ Безопасность: Распознавание лиц в аэропортах и на границах
  • 🎮 Игры: AI в шутерах “видит” врагов через CNN

📚 История вопроса

В 1980 году японский учёный Кунихико Фукусима создал первую свёрточную сеть, изучая… кошек! 🐱 Он смотрел, как нейроны в зрительной коре котят реагируют на разные изображения. Оказалось, что одни нейроны “видят” только вертикальные линии, другие - только горизонтальные, третьи - углы.

Но настоящий прорыв случился в 2012 году, когда AlexNet от команды Geoffrey Hinton выиграла конкурс ImageNet, ошибаясь в 2 раза меньше предыдущих алгоритмов. С тех пор CNN захватили мир! 🌍

💡 Интуиция

Представь, что ты детектив 🕵️‍♂️

Тебе нужно понять, что изображено на размытой фотографии. Как ты действуешь?

  1. Сначала ищешь простые детали: линии, края, углы
  2. Потом комбинируешь их в более сложные элементы: глаза, нос, колёса
  3. В конце собираешь всё в единую картину: “Это человек в машине!”

Именно так работает CNN! Она не пытается сразу понять всю картинку - она изучает её слой за слоем, от простого к сложному.

[МЕДИА: image_01] Описание: Схема работы CNN - от исходного изображения кота через слои детекции линий, форм до финального распознавания Промпт: “educational illustration showing CNN hierarchy, cat image being processed through layers, from edge detection to shape recognition to final classification, colorful modern tech style, clean background”

📐 Формальное определение

Свёртка (Convolution) - это математическая операция, где небольшой фильтр (ядро) “проходит” по всему изображению:

(f ∗ g)(x,y) = ∑ᵢ ∑ⱼ f(i,j) · g(x-i, y-j)

Где:

  • f - исходное изображение (матрица пикселей)
  • g - фильтр (маленькая матрица весов)
  • - операция свёртки

Архитектура CNN состоит из:

  1. Convolutional layers - находят локальные паттерны
  2. Pooling layers - уменьшают размер, сохраняя важное
  3. Fully connected layers - принимают финальное решение

🔍 Примеры с разбором

Пример 1: Детектор вертикальных линий

Представь фильтр 3×3:

[-1  0  1]
[-1  0  1] 
[-1  0  1]

Когда этот фильтр “проходит” по изображению, он сильно активируется на вертикальных переходах от тёмного к светлому:

[МЕДИА: image_02] Описание: Визуализация работы вертикального фильтра на изображении, показывающая исходную картинку и результат свёртки Промпт: “technical diagram showing vertical edge detection filter applied to image, before and after convolution, highlighted vertical edges, educational programming style”

Пример 2: Pooling (субдискретизация)

Max Pooling 2×2 берёт максимальное значение из каждого квадрата 2×2:

# Исходная feature map 4×4:
[[1, 3, 2, 4],
 [2, 8, 1, 3], 
 [5, 2, 6, 1],
 [1, 4, 2, 7]]

# После Max Pooling → 2×2:
[[8, 4],   # max(1,3,2,8) = 8, max(2,4,1,3) = 4
 [5, 7]]   # max(5,2,1,4) = 5, max(6,1,2,7) = 7

Зачем это нужно? Уменьшает размер данных в 4 раза, но сохраняет самые “сильные” активации!

🎮 Практика

Базовый уровень 🟢

Задача 1: Что будет, если применить фильтр [[0,-1,0],[-1,4,-1],[0,-1,0]] к центру изображения со значениями [[2,3,1],[1,5,2],[3,1,4]]?

💡 Подсказка Перемножь соответствующие элементы и сложи: 0×2 + (-1)×3 + 0×1 + (-1)×1 + 4×5 + ...

Задача 2: Зачем в CNN используется ReLU активация f(x) = max(0,x)?

✅ Ответ ReLU убирает отрицательные значения (делает их нулём), что помогает сети лучше выделять важные признаки и ускоряет обучение

Задача 3: Какой размер получится после свёртки изображения 28×28 фильтром 5×5 без паддинга?

Продвинутый уровень 🟡

Задача 4: Реализуй простую свёртку на Python:

def convolution_2d(image, kernel):
    # Твой код здесь
    pass

Задача 5: У тебя есть 100 фильтров размером 3×3 в первом слое. Сколько параметров нужно обучить? (не забудь про bias!)

Задача 6: Почему CNN работают лучше обычных нейросетей для изображений? Назови 3 причины.

Челлендж 🔴

Задача 7: Спроектируй архитектуру CNN для классификации рукописных цифр MNIST (28×28 пикселей, 10 классов). Обоснуй каждый слой.

Задача 8: Как изменится receptive field (область восприятия) нейрона после двух свёрточных слоёв с фильтрами 3×3?

⚠️ Частые ошибки

Ошибка: “CNN просто распознают картинки” ✅ Правильно: CNN извлекают иерархию признаков - от простых линий до сложных объектов 💡 Почему: Понимание иерархии помогает правильно проектировать архитектуру

Ошибка: Думать, что фильтры задаются вручную ✅ Правильно: Веса фильтров обучаются автоматически через backpropagation
💡 Почему: Сеть сама находит оптимальные детекторы признаков

Ошибка: Использовать только большие фильтры типа 7×7 ✅ Правильно: Несколько маленьких фильтров 3×3 работают лучше одного большого 💡 Почему: Меньше параметров, больше нелинейности, такой же receptive field

Ошибка: Забывать про padding при расчёте размеров ✅ Правильно: Output size = (Input size - Filter size + 2×Padding) / Stride + 1 💡 Почему: Неправильные размеры = ошибки в коде и архитектуре

🎓 Главное запомнить

Суть: CNN = иерархическое извлечение признаков через локальные фильтры ✅ Формула свёртки: (f ∗ g)(x,y) = ∑ᵢ∑ⱼ f(i,j)·g(x-i,y-j)
Применение: Компьютерное зрение, от селфи-фильтров до медицинской диагностики

🔗 Связь с другими темами

Откуда пришли: Базируются на принципах обычных нейросетей (урок 334), но адаптированы для работы с пространственными данными.

Куда ведут:

  • ResNet, DenseNet - современные глубокие архитектуры
  • Object Detection - YOLO, R-CNN для поиска объектов
  • Style Transfer - как работают DeepFakes и художественные фильтры
  • Attention механизмы - от CNN к Transformers в компьютерном зрении

Понял тему? Закрепи в боте! 🚀

Попрактикуйся на задачах и получи персональные рекомендации от AI

💪 Начать тренировку
💬 Есть вопрос? Спроси бота!