К содержанию
Фонтум Искусственный интеллект Урок 9 / 24 Все уроки

Главная · Курсы · Искусственный интеллект · Программа курса · Модуль III. Почему заработало сейчас · урок 9 из 24

Свёрточная нейронная сеть: скользящее окно

Свёртка ищет узор по всей картинке и выучивает не то, что мы имели в виду

Свёрточная нейронная сеть ищет узор небольшим скользящим окном по всей картинке: одна и та же таблица чисел прикладывается к каждому участку, первые слои откликаются на края и пятна, следующие складывают их в части предметов. Подать все точки напрямую нельзя: снимок 200 на 200 точек в трёх цветах даёт 120 тысяч чисел, а при тысяче нейронов в слое получается 120 миллионов весов. Признаки сеть подбирает сама, и с человеческими они совпадать не обязаны.

AlexNet, 2012. Саттон о структурных допущениях, 2019. Dive into Deep Learning, главы о свёрточных сетях · 24 мин · обновлено 01.10.2026

После урока вы сможете

  • Объяснять устройство свёртки как скользящего окна и понимать, что она даёт
  • Понимать, почему сеть выделяет не те признаки, которые счёл бы существенными человек
  • Знать, что показывают состязательные примеры и чего они не показывают
  • Читать заявленную точность вместе с вопросом, откуда взялись проверочные примеры

Системе показывают фотографию, и она отвечает «кошка». Стоит понять, что именно попало на вход. Не изображение в человеческом смысле, а таблица чисел: для каждой точки экрана три числа, то есть яркость красного, зелёного и синего.

Никакой кошки внутри этой таблицы нет, там есть только числа. Задача сети состоит в том, чтобы превратить сто с лишним тысяч чисел в одно слово. Урок разбирает, как это устроено, а заканчивается вопросом, который в области считается неудобным: что, собственно, сеть при этом выучила?

Ответ на последний вопрос стоит объявить заранее, чтобы не создавать интриги на пустом месте. Сеть выучивает признаки, разделяющие классы в её обучающем наборе. Совпадать с тем, что счёл бы существенным человек, они не обязаны, и часто не совпадают.

Почему нельзя просто подать все точки

Первым в голову приходит решение подать все числа сразу на обычный слой, где каждый вход связан с каждым нейроном. Посчитаем, во что это обойдётся. Небольшая фотография 200 на 200 точек в трёх цветах даёт 120 тысяч чисел. При тысяче нейронов в слое весов получается 120 миллионов, и это только первый слой.

Но арифметика здесь не главная беда. Куда хуже другое: такая сеть выучит узор в левом верхнем углу и не узнает его же в правом нижнем. Для неё это разные входы, ничем между собой не связанные, а для нас это одна и та же кошка, просто сдвинутая на полкартинки.

Человеку такая проблема кажется надуманной, и в этом её коварство. Мы узнаём предмет независимо от того, где он расположен, настолько привычно, что не замечаем самой способности. Сети её надо либо выучить отдельно для каждого положения, что требует немыслимого числа примеров, либо сообщить заранее.

Есть и третья беда, всплывающая чуть позже. Чем больше у модели весов, тем легче ей запомнить обучающие примеры вместо того, чтобы выучить закономерность. Про это подробно говорил урок 6: зазубрить набор и обобщить не одно и то же, а различить их можно только на спрятанных данных. Сто двадцать миллионов весов в одном первом слое дают прекрасную возможность именно зазубрить.

Скользящее окно

Свёртка и есть второй путь: сообщить заранее. Берётся маленькая таблица чисел, скажем три на три, и прикладывается к левому верхнему углу картинки. Числа под ней перемножаются с числами таблицы и складываются, и получается одно число, тем большее, чем сильнее участок похож на искомый узор.

Дальше окно сдвигается на шаг вправо, и счёт повторяется. Так оно проходит всю картинку, слева направо и сверху вниз, оставляя в каждом положении одно число. Из этих чисел складывается новая таблица, карта признаков, показывающая, где по картинке нашёлся узор, который ищет это окно.

Главное здесь в том, что окно одно и то же для всех положений. Отсюда следуют сразу две вещи, и обе решающие. Во-первых, узор находится в любом месте картинки, потому что ищется он везде одинаково. Во-вторых, весов нужно девять штук вместо ста двадцати тысяч, и потому таких окон в слое держат десятки.

На вопросе, откуда берутся числа в самом окне, легко ошибиться. Их не придумывает человек: девять чисел окна суть такие же параметры, как все прочие, и подбираются они обучением. От человека идёт только устройство, то есть размер окна и то, что окно одно на все положения.

Сеть, сложенная из таких слоёв, называется свёрточной. Именно свёрточной была AlexNet, выигравшая соревнование 2012 года. И заметьте, что мы сейчас сделали. Мы вложили в устройство сети человеческое знание о задаче: важен небольшой локальный узор, и значим он везде одинаково.

картинка: числа яркостиокно 3 × 3 одно и то же для всех положенийсдвигается на шаг и считает сновакарта признаковпо числу на каждое положениеумножить,сложить
Одно и то же окно проходит всю картинку и оставляет по числу в каждом положении

От краёв к формам

Один слой находит вещи простые. Окно три на три способно откликнуться на перепад яркости, то есть границу светлого и тёмного, а также на угол и на пятно. Это и есть первый уровень: карты признаков, показывающие, где на картинке края и куда они направлены.

Следующий слой работает уже не с точками, а с этими картами. Его входом служит «где нашлись края», и его окна складывают края в куски покрупнее: дуги, углы, характерные текстуры. Ещё выше складываются части предметов, а предметы целиком получаются только в самом конце.

Одного окна на слой, разумеется, мало. В слое их держат десятки или сотни, и каждое ищет свой узор. Одно откликается на вертикальную границу, другое на горизонтальную, третье на пятно определённого цвета. На выходе слоя получается поэтому не одна карта признаков, а стопка карт, по одной на каждое окно.

Про эту иерархию надо сказать две вещи, обе важные. Первая: её никто не задаёт заранее, она получается в ходе обучения, а описали её потом, разглядывая обученные сети изнутри. Вторая: слово «откликается» здесь техническое и значит только, что на выходе получилось большое число, и никакого узнавания за ним не стоит.

на заметку«Ищет узор» тоже сокращение

Окно ничего не ищет в человеческом смысле: оно умножает и складывает. Числа в нём подобраны обучением так, что на одних участках результат большой, а на других маленький. Говорить «окно ищет край» удобно и коротко, но за этими словами стоит только арифметика, как и за словом «внимание», к которому курс придёт в уроке 11.

Что именно выучено

Теперь неудобный вопрос. Обучение подбирает признаки, которые лучше всего разделяют классы в обучающем наборе. Ничто в этой процедуре не требует, чтобы найденные признаки совпадали с теми, которые счёл бы существенными человек.

Представим набор, где всех волков фотографировали в снегу, а всех собак во дворе. Самый дешёвый способ решить задачу состоит в поиске снега, и обучение найдёт именно его: снег разделяет классы безошибочно и обходится дешевле любой анатомии. На тесте из того же набора такая сеть покажет отличный результат.

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

Похожая ловушка известна на медицинских снимках. Если аппарат ставит на снимок служебную метку, а снимки больных приходят из одной больницы, метка становится идеальным признаком болезни. Поймать такое можно единственным способом, взяв снимки из другой больницы, то есть выйдя за пределы условий, в которых собирали обучающий набор.

Эти условия стоит назвать точно, потому что дальше без них не обойтись. Обучающее распределение это тип данных, на котором модель училась: те же условия съёмки, те же ракурсы, тот же способ отбора примеров. Внутри него измеренная точность честна, а за его границами она не обещана ничем.

Ломается это и без всякой злой воли, само собой. Больница меняет аппарат, магазин переставляет камеру, поставщик снимков переходит на другой формат сжатия. Точность падает, хотя в модели не изменилось ни одного числа. Такое расхождение называют сдвигом распределения, и у работающих систем оно случается куда чаще, чем нарочные атаки.

Почему это не так, как узнаёт человек

Слово «видит» в заголовке урока стоит в кавычках не для красоты. Разница между тем, что делает сеть, и тем, что делает человек, велика, и её стоит перечислить. Речь идёт не об устройстве мозга, которым занимается отдельный курс школы, а о том, чего в сети попросту нет.

Первое: у сети нет понятия предмета. Человек знает, что у кошки есть тело, лапы и хвост, что она бывает наполовину загорожена столом и что от этого не перестаёт быть кошкой. Сеть получает числа и выдаёт числа. Располагает она только признаками, разделяющими классы в обучающем наборе.

Второе: разное число примеров. Ребёнку хватает нескольких кошек, чтобы узнавать их потом всю жизнь, в темноте, со спины, на рисунке. Сети нужны тысячи примеров на класс, и узнавание её держится в тех условиях, в которых примеры собирали.

Третье: разные ошибки. Человек, ошибившись, обычно ошибается похоже и принимает кошку за мелкую собаку, а не за дорожный знак. Сеть способна уверенно назвать знак «стоп» с наклейками ограничением скорости, и предсказать такую ошибку заранее почти невозможно.

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

Состязательные примеры

Есть проверка более жёсткая, чем смена больницы. Возьмём правильно распознаваемую фотографию и изменим её точки совсем чуть-чуть. Изменим ровно настолько, чтобы человек разницы не заметил. Ответ сети при этом может смениться на совершенно другой. Такие входы называют состязательными примерами, и подбирают их специально, пользуясь знанием об устройстве модели.

Механизм понятен, если посмотреть на сеть целиком. Решение принимается после того, как картинка свёрнута в признаки, и это верно. Но признаки считаются из точек, из признаков получаются следующие, и вся сеть вместе есть одно правило, переводящее сто двадцать тысяч чисел в ответ. У такого правила есть граница: поверхность в пространстве этих ста двадцати тысяч чисел, по одну сторону которой ответ один, по другую другой.

Дальше всё решает то, как меряют расстояние до этой границы. Глаз меряет по-своему: сдвиг на единицу яркости в каждой точке для него ничто. Сеть меряет иначе, потому что слои одни направления усиливают, а другие гасят. Правка, ничтожная для глаза, оказывается немаленьким шагом поперёк границы. Подбирают состязательный пример как раз по этой разнице мерок.

Опыты вывели это из лаборатории на улицу. Наклейки, размещённые на дорожном знаке в нужных местах, заставляли системы распознавания читать знак «стоп» как знак ограничения скорости. Человек при этом видит знак «стоп» с несколькими наклейками и не сомневается ни секунды.

Здесь это похоже на оптическую иллюзию, только наоборот: иллюзия обманывает человека и не обманывает машину. Ломается аналогия вот где: человеческие иллюзии работают почти на всех людях и происходят из общего устройства зрения, а состязательный пример подбирают под конкретную модель. Переносится он на другие модели иногда, и это наблюдение, а не правило.

Полного решения у этой задачи нет, и причина видна из механизма. Сеть можно дообучить на найденных состязательных примерах, и на них она попадаться перестанет. Но подобрать новые обычно удаётся снова, потому что речь идёт не об одной дырке, которую заделывают. Речь о свойстве границы между классами в пространстве огромной размерности.

ловушкаЧто из этого не следует

Состязательные примеры показывают хрупкость за пределами обучающего распределения, и только это. Вывод «распознавание образов не работает» из них не следует: те же системы надёжно решают задачи, которые двадцать лет назад не решались вовсе. Уязвимость и бесполезность остаются разными вещами, и путать их так же неверно, как не замечать первую.

Вывод, который стоит унести

Из всего сказанного легко сделать эффектный и неверный вывод: нейросети обманывают и ничего не распознают. Вывод неверен фактически. Распознавание работает, применяется в производстве и решает задачи, которые двадцать лет назад не решались вовсе.

Аккуратная формулировка звучит скучнее и служит дольше. Сеть выучивает статистические закономерности, полезные на обучающем распределении и хрупкие за его пределами. Обе половины этой фразы обязательны: выбросив первую, получим клевету, а без второй выйдет реклама.

Стоит снять заодно и обратное недоразумение. Хрупкость за пределами распределения идёт не от порока конкретной технологии, а прямо из того, как устроено обучение из примеров. Любая система, выучивающая правило из данных, надёжна ровно в той мере, в какой новые случаи похожи на прежние.

Отсюда следует практическое правило чтения любых заявлений о точности. Число «точность 97 %» не значит ничего без ответа на вопрос, откуда взялись примеры для проверки. Если их собирали так же, как обучающие, измерена работа внутри распределения, а это заметно меньше, чем обычно думает читатель заголовка.

И отсюда же понятно, почему свёртка не устарела. Вложенное знание о том, что важен локальный узор, экономит данные и обучение, и в этом состоит то самое возражение против «горького урока», о котором говорил урок 7. Спор о том, всякое ли предметное знание проигрывает росту вычислений, остаётся открытым, и зрение служит главным источником примеров в пользу защиты.

Что дальше

Модуль III закончен, и у него три ответа. Почему заработало именно сейчас: сошлись данные, вычисления и алгоритмы. Сколько имеет смысл доливать: отдача предсказуема в исследованном диапазоне. Что выучено: закономерности, разделяющие классы в данных, а вовсе не то, что мы имели в виду.

Третий ответ понадобится дальше чаще двух первых. Модуль IV переходит к языковым моделям, где вопрос «что именно выучено» встанет ещё острее, а проверить ответ будет заметно труднее. На картинке ложный признак можно увидеть глазами, а в тексте он почти никогда не заметен.

Урок 10 начинает с самого простого места: с предсказания следующего слова. Оттуда, шаг за шагом, вырастет вся механика систем, о которых пишут в новостях. А вопрос о хрупкости за пределами обучающего распределения вернётся в уроке 13, когда речь пойдёт о галлюцинациях.

Ключевые работы и результаты

Крижевский, Суцкевер, Хинтон, AlexNet2012Свёрточная сеть выиграла соревнование ILSVRC с ошибкой top-5 15,3 % против 26,2 % у второго места. Признаки она подбирала сама, а устройство её слоёв со скользящим окном содержало заранее вложенное предположение о том, что важен локальный узор.
Фей-Фей Ли и коллеги, ImageNet2009Набор из более чем четырнадцати миллионов размеченных изображений. Показал, что условия сбора примеров становятся частью того, чему модель научится: способ отбора данных задаёт обучающее распределение.
Саттон, «Горький урок»2019Тезис о преимуществе методов, опирающихся на рост вычислений, над методами с вложенными знаниями. Свёртка служит главным контрпримером из области зрения, поскольку структурное допущение о локальном узоре продолжает окупаться. Статус тезиса: спор открыт.

Что подтвердилось, а что нет

мифЕсли система надёжно распознаёт предмет, значит она пользуется теми же признаками, что и человек.

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

отвергнутоСостязательные примеры показывают, что распознавание образов не работает.

Незаметная для глаза правка входа действительно способна сменить ответ сети, а наклейки на дорожном знаке заставляли системы читать «стоп» как ограничение скорости. Но подбираются такие входы специально и обычно с использованием знаний об устройстве конкретной модели. Системы распознавания при этом работают и применяются в производстве: правильный вывод говорит о хрупкости за пределами обучающего распределения, а не о бесполезности.

сильно ослабленоВысокая точность на тестовой выборке гарантирует такую же точность в реальном применении.

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

выдержалоСеть выучивает закономерности, надёжные на обучающем распределении и хрупкие за его пределами.

Проверяется это враждебно, и обе половины формулировки уцелели. Хрупкость: состязательные примеры подбирают под конкретную модель, и правка, которой человек не видит, меняет ответ, а опыты вывели эту хрупкость из лаборатории на улицу, где наклейки на дорожном знаке заставляли системы читать «стоп» как ограничение скорости. Дообучение на найденных примерах закрывает найденные и не закрывает задачу: новые подбираются снова, потому что дело в устройстве границы между классами в пространстве огромной размерности, а не в отдельной дырке. Надёжность: распознавание при этом работает и решает задачи, которые двадцать лет назад не решались вовсе. Отсюда практическое следствие, ради которого запись и заведена: точность, измеренная на примерах, собранных так же, как обучающие, говорит только о работе внутри распределения. Перенос состязательного примера на другие модели остаётся наблюдением, а не правилом.

Термины

свёрткаconvolution
Маленькая таблица чисел, которая прикладывается к каждому участку картинки: числа перемножаются и складываются, давая одно число на каждое положение. Одно и то же окно применяется ко всем положениям, поэтому узор находится в любом месте.
свёрточная сетьconvolutional network
Сеть из слоёв со скользящими окнами: первые слои откликаются на края и пятна, следующие складывают их в куски и части предметов. Такой была AlexNet, выигравшая соревнование 2012 года.
карта признаковfeature map
Таблица чисел, которую оставляет после себя одно окно, пройдя всю картинку. Показывает, где нашёлся искомый узор, и служит входом для следующего слоя.
признакfeature
Свойство входных данных, по которому принимается решение: перепад яркости, угол, характерная точка. До 2012 года признаки для зрения придумывали люди. Глубокая сеть подбирает их в ходе обучения сама.
обучающее распределениеtraining distribution
Тип данных, на котором модель училась: те же условия съёмки, те же ракурсы, тот же способ отбора примеров. Внутри него измеренная точность честна, за его границами не обещана ничем.
состязательный примерadversarial example
Вход, изменённый незаметно для человека так, чтобы модель сменила ответ. Подбирается специально, обычно с использованием знаний об устройстве конкретной модели.
обучение с учителемsupervised learning
Обучение на примерах с правильными ответами. Требует размеченных данных, которые размечают люди, и потому дороже прочих.

Практикум · Найти ложный признак заранее

Ложный признак дешевле поймать на бумаге, чем на обученной модели. Приём один: подумать про способ сбора данных раньше, чем про саму модель. Практикум делается за двадцать минут и на любой задаче.

  1. Придумайте задачу распознавания из собственной жизни: отличать снимки документов от прочих фотографий, спелые плоды от неспелых, свою кошку от чужой.
  2. Опишите, откуда вы взяли бы обучающие примеры каждого класса. Пишите конкретно: чьей камерой, в каком месте, в какое время суток.
  3. Выпишите три признака, которые надёжно различают классы в вашем наборе, но не различают их в жизни. Смотрите на фон, освещение, ракурс и источник снимка.
  4. Придумайте проверку, которая поймала бы такой признак. Работающий ответ здесь всегда один по сути: собрать проверочные примеры иначе, чем обучающие.
  5. Возьмите знакомое применение распознавания, например пропуск по лицу, разбор чеков или контроль качества, и задайте про него тот же вопрос. Откуда там взялись обучающие примеры и на ком эта система будет ошибаться чаще?

Вопросы для самопроверки

Вопрос 1

Почему обычный полносвязный слой плохо подходит для картинок?

  • Он не умеет работать с цветными изображениями
  • Его нельзя обучать обратным распространением ошибки: производные по такому числу весов не считаются
  • Он требует огромного числа весов и не переносит узор из одного места картинки в другое
  • Он смотрит на картинку целиком и потому не замечает мелких деталей вроде краёв и углов
Вопрос 2

Что такое карта признаков?

  • Список классов, которые сеть умеет различать, с вероятностью для каждого из них
  • Выход одного окна: таблица чисел, показывающая, где по картинке нашёлся узор, который это окно ищет
  • Схема связей между слоями сети: какой нейрон с каким соединён и с каким весом
  • Изображение, нарисованное сетью по описанию
Вопрос 3

В наборе всех волков снимали в снегу, а всех собак во дворе. Что, скорее всего, выучит сеть?

  • Форму морды и пропорции тела: обучение отбирает те признаки, которые существенны для различения видов
  • Ничего осмысленного: при полностью совпадающем фоне классы неразделимы, и функция потерь не уменьшится
  • Снег как признак волка, потому что он разделяет классы безошибочно и обходится дешевле
  • Заранее нельзя сказать: всё решают случайные начальные веса
Вопрос 4

Что показывают состязательные примеры?

  • Что правка входа, незаметная глазу, способна сменить ответ сети на любой другой
  • Что нейросети не работают и применять их нельзя
  • Что сеть распознаёт предметы примерно так же, как человек, и ошибается на тех же картинках, что и он
  • Что обучение на большем наборе полностью снимает проблему: с ростом данных состязательные примеры исчезают
Вопрос 5

Какая формулировка итога урока точна?

  • Сеть понимает изображение хуже человека, но принципиально тем же способом, и разрыв закроется с ростом данных
  • Сеть запоминает обучающие картинки целиком и сравнивает новое изображение с каждой из них по очереди
  • Сеть выделяет те же признаки, что и человек, только точнее
  • Сеть выучивает статистические закономерности, полезные на обучающем распределении и хрупкие за его пределами

Ответы и разбор открываются в самопроверке урока: она считает результат и отмечает урок пройденным. Пройти самопроверку.

Что читать

  • Dive into Deep Learning (d2l.ai), главы о свёрточных сетях: Открытый учебник, фактическое ядро курса. Свёртка там разобрана с арифметикой: видно, как из девяти чисел получается отклик и почему весов нужно так мало.
  • Тренажёр «Переобучение» в уроке 6: Соседняя половина того же сюжета: там видно, как модель отлично отвечает на знакомых примерах и проваливается на новых. Ложный признак даёт ту же болезнь, только вызванную сбором данных, а не сложностью модели.
  • Отчёты об опытах с наклейками на дорожных знаках: Полезно смотреть на фотографии, а не на описания: человек видит знак «стоп» с несколькими наклейками и не понимает, о чём вообще речь. Это лучшая иллюстрация того, что граница классов проходит не там, где кажется глазу.
Все курсы и разделы школы
Фонтум

Открытая школа: университетские программы и практикумы на русском. Целиком, бесплатно, без регистрации.

Курс «Искусственный интеллект»

ВАШ СЛЕДУЮЩИЙ ВОПРОС

Что хотите понять?