Сверточная нейронная сеть (Convolutional Neural Network, CNN) — это алгоритм машинного обучения, который используется для обработки и классификации изображений. Ее основной принцип — это использование сверточных слоев, которые помогают выделять важные признаки изображения.
В статье будут рассмотрены основные компоненты структуры сверточной нейронной сети. Начнем с объяснения работы сверточных слоев и их роли в выделении признаков. Затем рассмотрим понятие пулинга и его применение для уменьшения размера изображения. В следующем разделе поговорим о полносвязных слоях и их вкладе в процесс классификации. В конце статьи мы рассмотрим пример применения сверточной нейронной сети для распознавания рукописных цифр.

Зачем нужна структура сверточной нейронной сети?
Сверточные нейронные сети (СНС) являются одним из наиболее эффективных и популярных подходов в области обработки изображений и компьютерного зрения. Они используются для решения широкого спектра задач, таких как классификация изображений, обнаружение объектов, сегментация и другие.
Структура сверточной нейронной сети является ключевым элементом ее эффективности. В СНС применяются несколько слоев, которые обеспечивают извлечение иерархических признаков из исходного изображения. Каждый слой выполняет определенные операции, которые последовательно обрабатывают изображение и сжимают его представление, сохраняя при этом информацию о важных деталях.
Конволюционные слои
Основным компонентом структуры СНС являются конволюционные слои. В них применяются операции свертки, которые позволяют нейронным сетям автоматически обнаруживать различные признаки в изображении. Каждый нейрон в конволюционном слое отвечает за обнаружение определенного локального признака, например, границы или текстуры.
Пулинг слои
После конволюционных слоев в структуре СНС обычно следуют пулинг слои. Они выполняют операцию субдискретизации, которая позволяет снизить размерность представления изображения и одновременно сохранить информацию о важных признаках. Пулинг слои помогают сети стать инвариантной к масштабированию и небольшим сдвигам в изображении.
Полносвязные слои
В конце структуры СНС обычно располагаются полносвязные слои. Они выполняют задачу классификации или регрессии на основе извлеченных признаков. Полносвязные слои объединяют все глубинные признаки в один вектор и передают его в последний слой нейронной сети, где происходит окончательное решение задачи.
Лекция. Сверточные нейронные сети
Архитектура сверточной нейронной сети
Архитектура сверточной нейронной сети (Convolutional Neural Network, CNN) является ключевым элементом ее функционирования. Сеть состоит из нескольких слоев, каждый из которых выполняет определенные операции над данными. Архитектура сети определяет последовательность и взаимосвязь этих слоев.
Основные компоненты архитектуры:
- Входной слой (Input Layer): первый слой сети, который принимает входные данные. Обычно это изображения, представленные в виде матрицы пикселей. Количество нейронов в этом слое соответствует размерности входных данных.
- Слой свертки (Convolutional Layer): основной компонент сверточной нейронной сети. В этом слое происходит выделение значимых признаков из входных данных. Каждый нейрон связан с небольшим фрагментом входных данных, называемым рецептивным полем. Нейроны в слое свертки применяют сверточные фильтры к рецептивным полям для обнаружения различных признаков, таких как края, текстуры или цветовые пятна.
- Слой объединения (Pooling Layer): этот слой уменьшает размерность пространства признаков, полученных из предыдущего слоя свертки. Популярными методами уменьшения размерности являются операции максимального объединения (Max Pooling) или среднего объединения (Average Pooling), которые выбирают наибольшие или средние значения из фрагментов пространства признаков.
- Полносвязный слой (Fully Connected Layer): последний слой сети, в котором каждый нейрон соединен со всеми нейронами предыдущего слоя. Этот слой принимает выходные данные от предыдущих слоев и выполняет классификацию или регрессию, в зависимости от задачи.
Преимущества сверточных нейронных сетей:
- Автоматическое извлечение признаков: благодаря слоям свертки сверточные нейронные сети автоматически выделяют значимые признаки из входных данных без необходимости ручного определения.
- Устойчивость к сдвигам и искажениям: сверточные нейронные сети обладают свойством инвариантности к сдвигам, поворотам и искажениям входных данных. Это позволяет им эффективно работать с изображениями в различных условиях.
- Параметрическая обучаемость: сверточные нейронные сети могут быть обучены на большом количестве данных, чтобы улучшить свою производительность. Выбор оптимальных параметров обучения также может повлиять на качество работы сети.
Архитектура сверточной нейронной сети является ключевым фактором в ее эффективности и способности выполнять различные задачи, такие как классификация изображений, распознавание объектов или сегментация изображений. Изучение различных архитектур и параметров сети помогает создавать более точные и эффективные модели глубокого обучения.

Основные компоненты сверточной нейронной сети
Сверточная нейронная сеть (СНС) – это специализированная архитектура нейронной сети, которая эффективно работает с визуальными данными. Она является одной из самых мощных и широко используемых моделей глубокого обучения.
Основными компонентами сверточной нейронной сети являются:
1. Сверточные слои
Сверточные слои являются ключевым компонентом СНС. Они осуществляют применение фильтра (ядра свертки) к входным данным и находят локальные паттерны, такие как границы и текстуры, в изображении. Каждый нейрон сверточного слоя соединен только с небольшой областью входных данных, что позволяет СНС изучать локальные зависимости в изображении.
2. Пулинг слои
Пулинг слои используются для уменьшения размерности данных и сокращения количества параметров в сети. Они агрегируют информацию из сверточных слоев, объединяя близкие пиксели или признаки. Наиболее распространенным видом пулинга является операция максимального объединения (max pooling), которая выбирает максимальное значение из заданной области.
3. Полносвязные слои
Полносвязные слои являются последними слоями в СНС и отвечают за классификацию или регрессию. Они используются для объединения информации из предыдущих слоев и преобразования ее в итоговый выход. Каждый нейрон полносвязного слоя связан со всеми нейронами предыдущего слоя.
4. Функции активации
Функции активации применяются после каждого слоя в СНС и добавляют нелинейность в модель. Они позволяют сети выучивать более сложные и абстрактные зависимости в данных. Наиболее распространенными функциями активации в СНС являются ReLU (Rectified Linear Unit) и сигмоида.
5. Регуляризация
Регуляризация применяется для уменьшения переобучения в СНС. Она включает в себя методы, такие как Dropout (случайное отключение нейронов), L1 и L2 регуляризация, а также нормализацию по середине пакета. Регуляризация помогает сети генерализовать данные и повышает ее способность обобщения.
6. Оптимизаторы
Оптимизаторы используются для настройки весов и смещений в нейронной сети в процессе обучения. Они помогают минимизировать функцию потерь путем обновления параметров сети на каждой итерации обучения. Наиболее популярными оптимизаторами для СНС являются стохастический градиентный спуск (SGD), адаптивный момент (Adam), RMSprop и адаптивный градиентный спуск (Adagrad).
Эти основные компоненты сверточной нейронной сети работают вместе, чтобы извлечь признаки из изображений и классифицировать их с высокой точностью. Комбинация сверточных слоев, пулинг слоев и полносвязных слоев позволяет сети обрабатывать сложные визуальные данные и решать различные задачи, такие как классификация изображений, сегментация и обнаружение объектов.
Входной слой
Входной слой является первым компонентом сверточной нейронной сети (СНС). Его задача состоит в приеме входных данных и передаче их дальше для обработки.
Входной слой может быть представлен в виде двумерной или трехмерной структуры, в зависимости от типа данных, с которыми работает СНС. Например, для обработки изображений входной слой имеет трехмерную структуру, где первые две размерности соответствуют ширине и высоте изображения, а третья размерность отвечает за количество цветовых каналов (например, 3 для RGB изображений).
Каждый элемент входного слоя называется нейроном и представляет собой пиксель или патч изображения. Значения пикселей могут быть нормализованы или преобразованы в определенный диапазон, чтобы упростить обработку данных нейронной сетью.
Входной слой не выполняет никаких операций над данными, он просто передает их дальше на следующий слой сверточной нейронной сети. Тем не менее, правильное представление и обработка данных входного слоя является важным шагом для достижения хороших результатов в обучении и работе СНС.

Какие данные подаются на входной слой?
Входной слой сверточной нейронной сети является первым слоем в архитектуре нейронной сети и принимает на вход данные, которые необходимо обработать или классифицировать. Данные, подаваемые на входной слой, обычно представлены в виде изображений, но также могут быть числовые данные или текстовые векторы, в зависимости от природы задачи, которую необходимо решить.
Сверточные нейронные сети (СНС) широко применяются для обработки изображений и видео, поэтому наиболее распространенным типом данных, подаваемых на входной слой, являются пиксели изображений. Входные данные представляют пиксели в виде трехмерного тензора, где первая размерность соответствует высоте изображения, вторая — ширине изображения, а третья — количеству цветовых каналов (обычно 3 для RGB изображений).
Таблица: Примеры данных, подаваемых на входной слой
| Тип данных | Примеры |
|---|---|
| Изображения | Фотографии, сканированные изображения, радарные снимки и т.д. |
| Числовые данные | Сенсорные данные, звуковые данные, климатические данные |
| Текстовые векторы | Обработанный текст, представленный векторами |
Важно отметить, что перед подачей данных на входной слой, они часто предварительно нормализуются или преобразуются для улучшения процесса обучения и достижения более высоких показателей точности. Например, пиксели изображений могут быть нормализованы путем деления на 255, чтобы привести их значения в диапазон от 0 до 1.
Сверточные слои
Сверточные слои являются основным строительным блоком сверточных нейронных сетей (Convolutional Neural Networks, CNN) и отличаются от других типов слоев своими уникальными свойствами. Они эффективно обрабатывают данные, имеющие пространственную структуру, такие как изображения, и успешно применяются в обработке изображений, распознавании образов, компьютерном зрении и других задачах.
Что такое сверточные слои?
Сверточные слои выполняют операцию свертки над входными данными с помощью фильтров или ядер свертки. Фильтры представляют собой небольшие матрицы, которые перемещаются по всему входному изображению или слою и вычисляют локальные суммы произведений значений пикселей и весов фильтра. Результатом свертки является карта признаков, которая содержит информацию о наличии или отсутствии определенных признаков в изображении.
Преимущества сверточных слоев
Сверточные слои обладают несколькими важными преимуществами:
- Локальная связность: сверточные слои связывают только локальные области входных данных с соответствующими областями выходных данных, что позволяет учиться и распознавать локальные шаблоны и признаки.
- Весовые параметры: каждый фильтр сверточного слоя имеет свои весовые параметры, которые обучаются в процессе обучения нейронной сети. Это позволяет модели обучаться находить оптимальные признаки автоматически без явного программирования.
- Параметровое сокрытие: сверточные слои имеют параметровое сокрытие, то есть они способны обнаруживать один и тот же признак в разных местах изображения без необходимости явно указывать его координаты.
- Субдискретизация: сверточные слои также выполняют операцию субдискретизации (пулинга), которая уменьшает размерность карты признаков, сохраняя наиболее важную информацию. Это позволяет улучшить производительность модели и снизить объем вычислений.
Пример применения сверточных слоев
Рассмотрим пример применения сверточных слоев для классификации изображений. Предположим, у нас есть набор изображений, которые мы хотим классифицировать на категории «кошка» или «собака». Сверточная нейронная сеть содержит несколько сверточных слоев, которые обнаруживают различные признаки, такие как границы, цветовые пятна и текстуры, а также несколько полносвязных слоев, которые объединяют эти признаки и производят окончательное решение о классификации.
В результате работы сверточных слоев нейронная сеть обучается выделять важные признаки на изображениях и делает предсказания с высокой точностью. Однако для достижения хороших результатов требуется правильное конфигурирование сверточных слоев, подбор оптимальных параметров и дополнительные техники, такие как регуляризация и аугментация данных.
Что такое сверточный слой?
Сверточный слой является основной составляющей сверточной нейронной сети (Convolutional Neural Network, CNN) и играет важную роль в обработке изображений. Он осуществляет операцию свертки, которая позволяет нейронной сети выделять различные характеристики изображений, такие как границы, формы и текстуры.
Сверточный слой состоит из набора сверточных фильтров, которые применяются к входному изображению. Каждый сверточный фильтр представляет собой матрицу весов, которая перемещается по всему изображению. В каждой точке применения сверточного фильтра вычисляется скалярное произведение между весами фильтра и соответствующими значениями пикселей в окне, на которое фильтр накладывается. Таким образом, на выходе сверточного слоя получается новое представление изображения, в котором выделены важные характеристики.
Операция свертки
Операция свертки в сверточном слое выполняется следующим образом:
- Сверточный фильтр накладывается на входное изображение.
- Вычисляется скалярное произведение между весами фильтра и значениями пикселей в окне, на которое фильтр накладывается.
- Результат скалярного произведения записывается в новое представление изображения.
- Сверточный фильтр смещается на один пиксель и процесс повторяется для каждого пикселя изображения.
Таким образом, операция свертки позволяет нейронной сети обнаруживать локальные зависимости в изображении, такие как края объектов или текстуры.
Преимущества сверточного слоя
Сверточные слои имеют несколько преимуществ, которые делают их незаменимыми компонентами в архитектуре сверточных нейронных сетей:
- Разделение параметров: В сверточном слое используются одни и те же сверточные фильтры для обработки всего изображения. Это позволяет сети разделять параметры между различными частями изображения и снижает количество обучаемых параметров.
- Локальные зависимости: Сверточный слой позволяет обнаруживать локальные зависимости в изображении, такие как границы или текстуры. Это позволяет нейронной сети лучше понимать структуру изображения и выделять важные характеристики.
- Инвариантность к переводу и масштабированию: Сети, содержащие сверточные слои, обладают свойством инвариантности к переводу и масштабированию. Это означает, что они могут распознавать объекты на изображении независимо от их положения и размера.
Благодаря своим преимуществам сверточные слои являются неотъемлемой частью сверточных нейронных сетей и являются основной техникой обработки изображений в области компьютерного зрения.
Свёрточные нейронные сети
Как работает сверточный слой?
Сверточный слой является одним из основных компонентов сверточной нейронной сети (CNN). Он играет важную роль в анализе и извлечении признаков из входных данных.
Основной идеей сверточного слоя является использование фильтров (ядер свертки), которые скользят по входным данным и выполняют операцию свертки. Эта операция вычисляет скалярное произведение между весами фильтра и соответствующей областью входных данных.
1. Размеры фильтров
Фильтры могут иметь различные размеры и задаются в виде матрицы весов. Например, фильтр может иметь размер 3×3 или 5×5. Величина размера фильтра влияет на количество извлекаемых признаков и размер выходных данных.
2. Шаги (strides)
Шаги (strides) определяют, насколько пикселей перемещается фильтр при выполнении операции свертки. Например, шаги 1 означают, что фильтр будет смещаться на один пиксель по горизонтали и вертикали. Большие шаги могут привести к уменьшению размера выходных данных.
3. Нелинейная функция активации
После выполнения операции свертки, на выходе получается карты признаков (feature maps). Чтобы внести нелинейность в сеть, к картам признаков применяется нелинейная функция активации, такая как ReLU (Rectified Linear Unit) или сигмоида.
4. Пулинг (pooling)
После прохождения через слой свертки, часто применяется операция пулинга (pooling), которая уменьшает размерность карты признаков. Наиболее часто используется операция max pooling, которая выбирает максимальное значение из определенной области.
Сверточные слои позволяют нейронным сетям обнаруживать локальные шаблоны и структуры, такие как границы, углы и текстуры, что делает их эффективными для обработки изображений и других типов данных с пространственной структурой.
Пулинговые слои
Пулинговые слои являются важной частью структуры сверточной нейронной сети (CNN) и выполняют функцию уменьшения размерности входных данных.
Основная задача пулинговых слоев состоит в уплотнении информации, извлеченной предыдущими слоями. Они уменьшают количество параметров и вычислительную сложность модели, при этом сохраняя основные характеристики изображения.
Типы пулинговых слоев
Существует два основных типа пулинга — максимальный и средний.
- Максимальный пулинг выбирает максимальное значение из заданной области (обычно 2х2 или 3х3) и передает это значение на следующий слой. Этот тип пулинга помогает выделить наиболее значимые фичи и уменьшить влияние незначимых деталей. Он особенно полезен при работе с изображениями.
- Средний пулинг вычисляет среднее значение пикселей в заданной области и передает его на следующий слой. Как правило, он используется в задачах, где усреднение информации более предпочтительно, например, при обработке числовых данных.
Применение пулинговых слоев
Пулинговые слои выполняют несколько функций:
- Уменьшение размерности — пулинговые слои позволяют уменьшить размерность данных, что упрощает вычисления и уменьшает количество параметров в модели. Это особенно полезно при работе с большими изображениями.
- Инвариантность к переводу и масштабированию — пулинг позволяет нейронной сети оставаться инвариантной к небольшим изменениям входных данных, таким как перевод или масштабирование. Это свойство позволяет модели обобщать и выделять общие признаки независимо от точного местоположения объекта на изображении.
- Устойчивость к шуму — пулинговые слои помогают снизить влияние шума на итоговый результат, так как уплотняют информацию и обобщают ее.
Параметры пулинговых слоев
Пулинговые слои имеют несколько параметров:
| Параметр | Описание |
|---|---|
| Размер фильтра | Задает размер области, в которой будет производиться пулинг. |
| Шаг | Определяет смещение пулингового окна при прохождении по входным данным. Обычно используется значение 2, чтобы выполнять пулинг без перекрытия. |
| Режим перекрытия | Определяет, какой режим пулинга будет использоваться при наличии перекрытия окон. Обычно используется «valid» или «same». |
Что такое пулинговый слой?
Пулинговый слой является одним из важных компонентов сверточной нейронной сети (СНС). Он применяется после сверточного слоя и служит для уменьшения размерности входных данных.
Основная задача пулингового слоя — сжатие пространственных размеров признаковых карт, которые были получены после прохождения данных через сверточный слой. Пулинговый слой не вносит новых параметров в сеть, его целью является уменьшение количества параметров и вычислительной сложности сети без потери важной информации.
Типы пулингового слоя:
Максимальное пулирование (Max Pooling): Является наиболее распространенным типом пулингового слоя. Его работа заключается в выборе максимального значения из определенной области (обычно 2×2 или 3×3) признаковой карты и записи этого значения в новую карту. Таким образом, размерность признаковой карты уменьшается вдвое или втрое.
Усреднение (Average Pooling): В этом типе пулингового слоя происходит вычисление среднего значения в определенной области признаковой карты и запись его в новую карту. Этот метод менее распространен, но может использоваться в некоторых случаях.
Применение пулингового слоя:
Пулинговый слой имеет несколько преимуществ при использовании в сверточных нейронных сетях:
- Уменьшение размерности: Пулинговый слой помогает уменьшить пространственные размеры признаковых карт, что позволяет уменьшить количество параметров в следующих слоях сети.
- Устойчивость к сдвигам: Пулинговый слой делает сверточную нейронную сеть устойчивой к малым сдвигам входных данных. Это значит, что пулинговый слой будет распознавать один и тот же объект, независимо от его местоположения в изображении.
- Инвариантность к масштабу: Пулинговый слой делает СНС инвариантной к масштабированию объектов на изображении. Это означает, что размеры объектов на изображении могут меняться, но сеть все равно правильно идентифицирует их.
Использование пулинговых слоев в сверточных нейронных сетях позволяет эффективно анализировать и обрабатывать изображения, а также улучшает производительность сети и повышает ее устойчивость к различным вариациям входных данных.



