Для компьютера фотография — это сетка, плотно заполненная числами. Перед такой сеткой легко теряются и признаки, заданные человеком, и нейросеть, которая вытягивает пиксели в одну строку (MLP). Свёрточная нейронная сеть (CNN) скользит по сетке одним маленьким фильтром. Что она решила, а что пока нет, — проследим, считая каждое число своими руками.
Если сильно увеличить картинку на экране, видны маленькие квадратики (пиксели). Один пиксель — это одно число, обозначающее яркость, а в цветном изображении — три числа: красный, зелёный и синий.
Сетку чисел обычно хранят как целые числа от 0 (чёрный) до 255 (белый). Перед подачей в нейросеть их часто делят на 255, переводя в диапазон 0~1. Расчёты на этой странице тоже используют 0~1. Одна фотография с телефона (например, цветная 4000×3000) — это 36 миллионов чисел. То, что сетка чисел настолько велика, — отправная точка следующих разделов.
Нужно различать три фигуры (+, ×, ○). Человек задал две подсказки: «закрашен ли центр» и «темнее ли горизонтальная и вертикальная полосы, чем диагональные». Машина учит только веса для этих двух чисел.
Признаки в этом примере намеренно сделаны простыми. Настоящие исследователи долго придумывали гораздо более тонкие признаки — например, подсчёт направлений краёв по областям. И всё же положение, размер, освещение и угол предметов на фото меняются бесконечно, и заранее предусмотреть все изменения в признаках человеку было трудно. Перелом наступил в 2012 году на конкурсе ImageNet по классификации фотографий на 1000 классов: CNN, которая сама учит и признаки, показала ошибку top-5 15.3% и далеко опередила второе место (26.2%) [R4].
Чтобы подать фотографию в MLP (многослойный перцептрон) из 3-2, сетку нужно развернуть в одну строку. Разберём по очереди проблемы, которые возникают в момент развёртывания.
Локальные связи · общие веса · пулинг · наращивание слоёвFukushima 1980 → LeCun 1998
| Проблема MLP | Решение CNN | Что решено |
|---|---|---|
| ① Потеря соседства | Локальные связи: один нейрон смотрит только на соседний фрагмент, например 3×3 | Совместный просмотр соседних пикселей встроен в саму структуру |
| ② Взрыв числа весов | Общие веса: один и тот же фильтр используется во всех позициях | Достаточно «число фильтров × 9». От размера фото не зависит |
| ③ Сдвиг положения | Общие веса + пулинг: где бы ни был объект, его ищет один и тот же фильтр, а пулинг поглощает небольшие сдвиги | Сравнительно устойчивее. Но не полностью. При большом сдвиге точность падает (раздел 8) [R6] |
| ④ Порядок пикселей не учитывается | Наращивание слоёв: близкие пиксели объединяются, постепенно образуя всё более крупные формы | Взамен сеть опирается на допущение «близкие пиксели связаны». Если перемешать пиксели, качество падает (раздел 8) |
В зрительной коре кошки Hubel и Wiesel различили «простые клетки», которые реагируют на полоску определённого направления в узкой области, и «сложные клетки», которые реагируют на то же направление, даже если положение немного другое [R1]. Неокогнитрон Fukushima по образцу этих двух клеток чередовал «слои поиска признаков» и «слои размытия положения» [R2]. Их потомки — свёрточные слои и слои пулинга современных CNN. Правда, неокогнитрон обучался не обратным распространением ошибки, а другим способом; успешно применили CNN, обучаемую обратным распространением ошибки, к распознаванию рукописного текста LeCun и соавторы [R3].
Выход = Σ (фрагмент входа × фильтр)вход 6×6 · фильтр 3×3 → выход 4×4
Окно фильтра накладывается на одно место входа. Сумма попарных произведений 9 перекрывающихся клеток становится одной клеткой выхода. Окно сдвигается на клетку, и всё повторяется. Окно 3×3 на входе 6×6 помещается в 4 позиции по горизонтали и 4 по вертикали, поэтому выход 4×4 (если не делать паддинг — заполнение краёв нулями).
У фильтра вертикального края в левом столбце +1, в правом −1. Поэтому там, где «слева светло, справа темно», получается положительное число, в обратном случае — отрицательное, а на однородном месте — около 0. Нейросеть не получает такие числа фильтра от человека, а учит их обратным распространением ошибки. Кстати, «свёртка» в глубоком обучении, в отличие от математической свёртки, не переворачивает фильтр (взаимная корреляция). Поскольку числа всё равно определяются обучением, результат тот же [R8].
Выход 4×4 из раздела 5 проходит через ReLU (отрицательное → 0), затем в каждом окне 2×2 остаётся только одно число (максимум или среднее). Посмотрим также, что меняется, если сдвинуть картинку на одну клетку.
Пулинг уменьшает количество чисел в 4 раза, облегчая вычисления следующего слоя, и поглощает небольшие сдвиги внутри окна 2×2. Сдвиг через границу окна или на 2 клетки и больше напрямую меняет результат. Поэтому точнее говорить не «CNN устойчива к сдвигам», а «сравнительно устойчивее». Есть исследования, показывающие, что даже у известных больших CNN ответ может измениться при сдвиге картинки всего на несколько пикселей [R6].
Последние карты признаков превращаются в одну строку чисел, проходят через полносвязный слой и softmax и дают «вероятность +, вероятность ×, вероятность ○». Используем заранее обученную CNN из раздела 8 как есть.
Классические CNN вроде LeNet склеивали последние карты как есть (развёртка, Flatten) и подавали в полносвязный слой [R3]. Такой способ передаёт дальше и то, «в какой клетке карты был признак», поэтому сеть снова становится чувствительной к положению. Глобальный пулинг, оставляющий по одному числу на карту (максимум или среднее), стирает информацию о положении, меньше реагирует на сдвиги и требует меньше параметров [R5]. CNN на этой странице использует глобальный max-пулинг.
Softmax превращает 3 оценки в 3 вероятности с суммой 1. Чем больше оценка, тем больше вероятность. Высокая вероятность не всегда означает правильный ответ. На виде, которого не было при обучении, модель может дать высокую вероятность и неверному ответу (3-1, раздел 4).
Обучение на 120 изображениях трёх фигур 12×12 (по 40 каждой). Все обучающие картинки расположены в центре (±0.5 клетки), с примесью шума, лишних штрихов, поворотов и разной толщины линий. Тест — по 150 новых картинок.
Оба примера используют только библиотеки, предустановленные в Colab. Нажмите «Скачать блокнот (.ipynb)» и откройте его в Colab через Файл → Загрузить блокнот или скопируйте код и вставьте в ячейку нового блокнота.
С той же числовой «7» 6×6 и теми же 4 фильтрами, что в разделах 5·6, считаем свёртку → ReLU → max- и средний пулинг. Выходные числа совпадают с числами на странице вплоть до клетки. Чтобы подставить свои данные, замените только IMG в месте кода с пометкой [чтобы подставить свои данные].
С той же структурой моделей и теми же правилами фигур, что в разделе 8, повторяем эксперимент на рабочей библиотеке. Оптимизатор заменён на Adam (40 эпох), эксперимент повторяется с 3 seed и усредняется. Для перемешивания пикселей модели заново обучаются с нуля на данных, перемешанных по тому же правилу.
Это промпты, которые можно вставить в ИИ-помощника вроде ChatGPT, Qwen или Claude. Если нажать «Копировать», после промпта будет добавлен выбранный код. Замените текст в 〔 〕 на свою ситуацию.
Ответ ИИ — лишь отправная точка. Предложенные статьи, числа и функции библиотек обязательно проверяйте по первоисточникам и официальной документации. Если для конкурса или статьи вы пользовались помощью ИИ, укажите факт и объём использования согласно правилам организаторов и журнала.
Это тот же словарь, что и жёлтое пунктирное подчёркивание в тексте. Во всей серии используются одни и те же обозначения. Нажмите на название раздела, чтобы перейти к месту первого упоминания.
Аналогия — первый шаг к пониманию, но и семя заблуждения. Для аналогий с дрозофилой и мозгом указана сила. Прямая есть данные, что это действительно делает то же самое · Частичная похожи лишь некоторые свойства · Нет соответствие неизвестно
| Понятие | Бытовая аналогия | Аналогия с дрозофилой и мозгом | Где аналогия ошибается |
|---|---|---|---|
| Пиксель | Одна плитка мозаики | Частично Один омматидий сложного глаза дрозофилы | Омматидии расположены шестиугольниками и чувствительны к изменению яркости. Пиксели фото — неподвижные значения в квадратной сетке |
| Фильтр | Лупа, высвечивающая только определённый узор | Частично Клетки первичной зрительной коры, избирательные к направлению [R1] | Рецептивные поля нейронов немного различаются от места к месту. Фильтр CNN во всех позициях полностью одинаков |
| Общие веса | Ставить одну и ту же печать по всему листу | Частично В зрительной системе дрозофилы нейроны одного типа повторяются по всему полю зрения | У нейронов мозга у каждого своя сила связей. Числа они не «делят» между собой |
| Пулинг | Уменьшенная копия карты | Частично Сложные клетки, реагирующие даже при немного другом положении [R1] | Не подтверждено, что сложные клетки выполняют именно вычисление максимума |
| Наращивание слоёв | Рисовать картинку: точка → линия → фигура | Частично Зрительный путь V1 → V2 → V4 → нижневисочная кора (3-1, раздел 5) | В мозге много обратных связей, а в CNN сигнал идёт только в одном направлении |
| Развёртка | Выложить камни с доски для го в одну линию | Нет | Если выложить в линию, исчезает, «кто чей сосед» (раздел 3 ①) |
| Softmax | Перевести итоги голосования в доли голосов | Нет | Высокая доля голосов не означает правильный ответ. На новой картинке модель может уверенно ошибиться |
| Перемешивание пикселей | Перемешать кусочки пазла по заданному правилу | Нет | Человек почти не узнаёт перемешанную картинку, а MLP учится так же. Критерий «видит как человек» у каждой модели свой |
E-1 Об авторе · E-2 Научные источники · E-3 Материалы к рисункам
Следующие материалы использованы как ориентир для структуры и содержания.
Практические рекомендации для преподавателей, наставников по OJT (обучению на рабочем месте) и тьюторов. Время указано ориентировочно — подстраивайте его под реальное занятие.
| Аудитория | Студенты и работающие специалисты, прошедшие 3-2. Практики, работающие с изображениями (снимки контроля качества, медицинские изображения, сканы документов) |
|---|---|
| Предварительные знания | Понятия скрытого слоя и обратного распространения ошибки из 3-2. Расчёты разделов 5·6 можно проследить, умея только умножать и складывать |
| Цели обучения | ① Объяснить, что фотография — это сетка чисел, и назвать четыре причины, по которым MLP застревает ② Вручную посчитать свёртку, ReLU и пулинг ③ На результатах эксперимента объяснить, что CNN к сдвигам «сравнительно устойчивее, но не полностью» |
| Ориентировочное время | Чтение 40–50 мин · демонстрация анимаций 25 мин · практика в Colab 30 мин (код 1 — 10 мин, код 2 — 20 мин) |
Введение 5 мин (числа цветной дрозофилы из раздела 1) → четыре причины из раздела 3, 10 мин → ручной расчёт разделов 5·6, 15 мин → панель раздела 8, 15 мин → проверочные вопросы 5 мин.
Расчёт ② взрыва числа весов из раздела 3 для размеров изображений вашей компании, 10 мин → раздел 8, 20 мин (а если сместится камера на объекте?) → практика с кодом 2, 30 мин → обсуждение «какая аугментация нужна нашим данным?» 20 мин → карточки промптов 10 мин.
Новичкам — только разделы 1·3·5·8. Учащимся среднего уровня — посчитать вручную одну клетку выхода из раздела 5, сверить с функцией conv2d в коде 1, а в разделе 7 самим подсчитать число параметров при развёртке и при глобальном пулинге.
| Раздел | Вопрос, на котором стоит остановиться | Совет по управлению |
|---|---|---|
| 1 Сетка чисел | «Какими числами в трёх каналах выражен красный цвет глаза дрозофилы?» | У цветной дрозофилы по очереди нажать виды «Красный», «Зелёный», «Синий» |
| 2 Классическое МО | «Почему признаки, заданные человеком, разваливаются на сдвинутой картинке?» | Нажать по порядку от «чистая картинка» до «сдвиг на 2 клетки» и сравнить столбцы точности |
| 3 Пределы MLP | «На сколько клеток в строке отстоит пиксель, расположенный прямо под данным?» | В ② «Взрыв числа весов» нажать 1000×1000 и удивить масштабом чисел |
| 4 Решение CNN | «Почему при общем фильтре число весов перестаёт зависеть от размера фото?» | В «Наращивании слоёв» обратить внимание, как область, которую видит один нейрон, растёт 3 → 4 → 8 |
| 5 Свёртка | «Почему выход в этом месте отрицательный?» | Остановить анимацию и вместе читать формулу кнопкой «Шаг на клетку» |
| 6 ReLU и пулинг | «При сдвиге на клетку что меняется меньше — до пулинга или после?» | Попеременно нажимать «Исходная картинка» и «Вправо на 1 клетку» |
| 7 До вероятностей | «Что менее чувствительно к положению — развёртка или глобальный пулинг?» | Выбрать «+ со сдвигом на 2 клетки» и попеременно смотреть оба способа |
| 8 Панель сравнения | «Кто побеждает на центрированных картинках, а кто — на сдвинутых?» | Сначала посмотреть «Сдвиг положения», затем переключиться на «Перемешивание пикселей» и увидеть, как результат переворачивается |
| Заблуждение | Верное объяснение | Что показать |
|---|---|---|
| CNN одинаково узнаёт объект, даже если его положение изменилось | Она лишь сравнительно устойчивее. При большом сдвиге точность падает, и даже у большой CNN ответ может измениться от сдвига на несколько пикселей | Раздел 8 «Сдвиг положения», раздел 6 |
| CNN всегда точнее MLP | Если картинка всегда на одном месте, как на этой странице, MLP бывает даже точнее. Преимущества CNN — эффективность по параметрам и устойчивость к сдвигам | Точность при сдвиге 0 клеток в разделе 8 |
| Фильтры задаёт человек | Фильтры в разделе 5 — для объяснения. Настоящая CNN учит числа фильтров обратным распространением ошибки | Обученные карты в разделе 7 |
| Пулинг добавляет информацию | Пулинг уменьшает количество чисел и отбрасывает информацию. Зато он поглощает небольшие сдвиги и сокращает вычисления | 4×4 → 2×2 в разделе 6 |
| CNN — то же самое, что зрительная кора мозга | Идея взята от простых и сложных клеток, но способ обучения и структура связей другие | Пометка «Частично» в общем разделе D |
224 × 224 × 3 = 150,528 входов × 1,000 = 150,528,000 (около 150 миллионов). У свёрточного слоя с 64 цветными фильтрами 3×3 их 3 × 3 × 3 × 64 = 1,728 (1,792 со смещениями).
(6 − 3 + 1) × (6 − 3 + 1) = 4×4.
Вторая строка перекрывающегося фрагмента — [0, 3, 3], а каждая строка фильтра — [1, 0, −1]. 0×1 + 3×0 + 3×(−1) = −3. Первая и третья строки целиком из нулей, поэтому сумма остаётся −3.
Максимум 6, среднее (6 + 3 + 0 + 3) / 4 = 3.
У CNN. CNN заложила в структуру (фильтры 3×3, пулинг) допущение «близкие пиксели связаны», а после перемешивания соседние клетки оказываются никак не связанными пикселями. MLP изначально не использует взаимное расположение пикселей, поэтому после перемешивания результат почти тот же. Важно условие: в уже обученную модель не подают перемешанные картинки, а обучают с нуля на перемешанных данных.
Добавьте в FILTERS кода 1 фильтр диагонального края, найдите, какая клетка «7» 6×6 реагирует сильнее всего, и объясните причину в двух предложениях.
Добавьте в обучающие данные кода 2 картинки, сдвинутые на 1~2 клетки (аугментация данных). Сведите в таблицу, как меняется точность обеих моделей при сдвиге 0~3 клетки, и сравните «устойчивость от структуры» и «устойчивость от данных».
| Начинающим | Разделы 2 и 7 можно пропустить без потери логики. В разделе 8 вместе прочитайте только столбцы результатов |
|---|---|
| Углублённо | Предложите вывести общую формулу для расчёта рецептивного поля (3 → 4 → 8) из «Наращивания слоёв» раздела 4. Обсудите пределы из раздела 6, связав их с таблицами статьи [R6] |
| Что изучить дальше | Сансон Ан, конспект лекций «Наука о данных для бизнеса» (наука о данных в целом) · STEP [K-Digital] Обработка естественного языка с помощью ИИ (связано с 3-5·3-8) · STEP [K-Digital] Основы анализа финтех-данных (связано с 3-6) |
| Материалы для преподавателя | Критерии оценки проверочных вопросов и примеры ответов к заданиям — на странице ответов для преподавателей (3-3) |
Вы дочитали часть «3-3 Изображения и CNN» до конца. Обитатели лаборатории подведут итоги — каждый по фразе.