Свёрточная нейронная сеть

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
Строка 7: Строка 7:
== Свёрточная нейронная сеть ==
== Свёрточная нейронная сеть ==
-
Свёрточная нейронная сеть (англ. Convolutional Neural Network, CNN) — это архитектура искусственных нейронных сетей, предназначенная для обработки данных с сеточной топологией, таких как цифровые изображения или аудиоспектрограммы.
+
Свёрточная нейронная сеть (англ. Convolutional Neural Network, CNN) — это архитектура искусственных нейронных сетей, предназначенная для обработки данных с сеточной топологией (то есть структурированных в виде упорядоченной сетки или таблицы), таких как цифровые изображения или аудиоспектрограммы.
Исторически данные алгоритмы пришли на смену классическим многослойным перцептронам (англ. Multilayer Perceptron, MLP) в задачах машинного зрения. Применение MLP требовало преобразования входного многомерного тензора в одномерный вектор, что приводило к потере информации о пространственной структуре данных и экспоненциальному росту числа параметров. Дополнительно сверточные сети автоматизировали процесс извлечения признаков (англ. feature engineering), заменив ручную настройку детерминированных фильтров на оптимизацию весовых коэффициентов непосредственно в процессе обучения модели.
Исторически данные алгоритмы пришли на смену классическим многослойным перцептронам (англ. Multilayer Perceptron, MLP) в задачах машинного зрения. Применение MLP требовало преобразования входного многомерного тензора в одномерный вектор, что приводило к потере информации о пространственной структуре данных и экспоненциальному росту числа параметров. Дополнительно сверточные сети автоматизировали процесс извлечения признаков (англ. feature engineering), заменив ручную настройку детерминированных фильтров на оптимизацию весовых коэффициентов непосредственно в процессе обучения модели.
Строка 18: Строка 18:
Архитектура сверточной сети алгоритмически разделяется на два основных этапа: автоматическое извлечение признаков и финальную классификацию. Ключевое отличие от классического машинного обучения, где признаки конструируются вручную (например, фильтры Собеля), заключается в том, что в CNN применяется обучаемый извлекатель признаков. Сеть самостоятельно находит оптимальные веса для фильтров в процессе минимизации функции потерь.
Архитектура сверточной сети алгоритмически разделяется на два основных этапа: автоматическое извлечение признаков и финальную классификацию. Ключевое отличие от классического машинного обучения, где признаки конструируются вручную (например, фильтры Собеля), заключается в том, что в CNN применяется обучаемый извлекатель признаков. Сеть самостоятельно находит оптимальные веса для фильтров в процессе минимизации функции потерь.
 +
 +
Можно представить в качестве примера задачу классификации, в которой требуется определить, кто изображён на картинке: кошка или собака. Для классификации совсем необязательно передавать в модель-классификатор все пиксели в изображении, достаточно передать некоторые важные признаки. Например, форма ушей и морды, наличие вибрисов, тип шерсти. Архитектор модели может придумать любые признаки, однако важно научиться их правильно извлекать из изображения. Также важно подобрать именно такие признаки, которые позволят наиболее точно классифицировать изображения из обучающей выборки. Таким образом, способность модели, построенной на свёрточных нейронных сетях, выделять и извлекать признаки самостоятельно, делают её гораздо более точной.
=== Извлечение признаков ===
=== Извлечение признаков ===
Строка 24: Строка 26:
;Слой свёртки (Convolutional Layer)
;Слой свёртки (Convolutional Layer)
-
Базовый вычислительный элемент. По входной матрице последовательно перемещается матрица меньшего размера, выполняющая операцию скалярного произведения. Математически операция свёртки описывается следующим образом:
+
[[Изображение:logo.png|400px|thumb|Анимация с иллюстрацией применения операции свёртки.]]
 +
 
 +
Базовый вычислительный элемент.
 +
 
 +
Принцип работы слоя заключается в сканировании входного изображения (или матрицы признаков) специальным фильтром — матрицей весов меньшего размера (ядра свёртки). Фильтр последовательно перемещается по всей площади входа, и в каждой позиции вычисляется скалярное произведение его весов на локальные значения пикселей. Результаты складываются и формируют новую матрицу — карту признаков.
 +
 
 +
Математически простая двухмерная свёртка для одного элемента матрицы описывается формулой:
 +
 
<tex>(x*w)[i, j] = \sum_{a = -A}^A \sum_{b = -B}^B w_{ab}\times x[i+a, j+b]</tex>
<tex>(x*w)[i, j] = \sum_{a = -A}^A \sum_{b = -B}^B w_{ab}\times x[i+a, j+b]</tex>
 +
Здесь <tex>x[i, j]</tex> — это исходные признаки, пиксели входного изображения размером <tex>n \times m</tex>. Переменная <tex>w_{ab}</tex> обозначает веса ядра свёртки (фильтра), а <tex>A</tex> и <tex>B</tex> определяют его пространственные границы (размер ядра составляет <tex>2A+1 \times 2B+1</tex>).
Здесь <tex>x[i, j]</tex> — это исходные признаки, пиксели входного изображения размером <tex>n \times m</tex>. Переменная <tex>w_{ab}</tex> обозначает веса ядра свёртки (фильтра), а <tex>A</tex> и <tex>B</tex> определяют его пространственные границы (размер ядра составляет <tex>2A+1 \times 2B+1</tex>).
-
Применение свёртки изменяет пространственные размеры тензора. Итоговый размер выходной матрицы по одной из осей (например, ширине <tex>W</tex>) зависит от размера фильтра <tex>K</tex>, параметра padding <tex>P</tex> (дополнение нулями по краям матрицы для сохранения размерности) и параметра stride <tex>S</tex> (шаг, с которым фильтр скользит по изображению). Формула размера результирующей матрицы:
+
Применение свёртки уменьшает пространственные размеры тензора на выходе. Чтобы предотвратить чрезмерное сжатие матрицы и не терять информацию на её границах, используют параметр padding <tex>P</tex> — искусственное дополнение матрицы нулями по краям. Например, если к исходной матрице размером <tex>3 \times 3</tex> применить padding <tex>P=1</tex>, то вокруг неё добавится рамка толщиной в один ноль, и фактический размер обрабатываемой матрицы данных увеличится до <tex>5 \times 5</tex>:
 +
 
 +
<tex>
 +
\begin{pmatrix}
 +
1 & 2 & 3 \\
 +
4 & 5 & 6 \\
 +
7 & 8 & 9
 +
\end{pmatrix}
 +
\quad\longrightarrow\quad
 +
\begin{pmatrix}
 +
0 & 0 & 0 & 0 & 0 \\
 +
0 & 1 & 2 & 3 & 0 \\
 +
0 & 4 & 5 & 6 & 0 \\
 +
0 & 7 & 8 & 9 & 0 \\
 +
0 & 0 & 0 & 0 & 0
 +
\end{pmatrix}
 +
</tex>
 +
 
 +
Также на итоговый размер влияют размер фильтра <tex>K</tex> и параметр stride <tex>S</tex> (шаг, с которым фильтр скользит по изображению). Формулы размера результирующей матрицы:
 +
 
<tex>W_{out} = \lfloor \frac{W_{in} - K + 2P}{S} \rfloor + 1</tex>
<tex>W_{out} = \lfloor \frac{W_{in} - K + 2P}{S} \rfloor + 1</tex>
-
Аналогичная формула применяется для вычисления высоты <tex>H_{out}</tex>.
+
 
 +
<tex>H_{out} = \lfloor \frac{H_{in} - K + 2P}{S} \rfloor + 1.</tex>
 +
 
;Слой активации (Activation Layer)
;Слой активации (Activation Layer)
Строка 52: Строка 83:
;Слой субдискретизации (Pooling Layer)
;Слой субдискретизации (Pooling Layer)
-
Применяется для уменьшения пространственной размерности карт признаков, сокращения числа параметров сети и обеспечения инвариантности к локальным сдвигам. Общая математическая модель операции выглядит так:
+
Применяется для уменьшения пространственной размерности карт признаков, сокращения числа параметров сети и обеспечения инвариантности к локальным сдвигам.
-
<tex>y[i, j] = F(x[h\cdot i, h\cdot j], \dots, x[h\cdot i + h - 1, h\cdot j + h - 1])</tex>
+
 
-
Где <tex>F</tex> — агрегирующая функция, а <tex>h</tex> — шаг (stride) сканирующего окна.
+
После слоя свёртки получается огромный объём данных. Слой субдискретизации сжимает эти данные, деля изображение на небольшие блоки (например, <tex>2x2</tex> пикселя) и преобразовывает каждый блок в одно число. Это позволяет ускорить работу, поскольку данных становится меньше, нейросеть учится и считает быстрее. Также это даёт устойчивость к сдвигам: если важный объект (например, глаз на фотографии) сдвинется на пару пикселей в сторону, слой субдискретизации всё равно поймает его, так как он смотрит на общую картину в области, а не на точные координаты.
 +
 
 +
Общая математическая модель операции выглядит так:
 +
 
 +
<tex>y[i, j] = F(x[h\cdot i, h\cdot j], \dots, x[h\cdot i + h - 1, h\cdot j + h - 1]),</tex>
 +
 
 +
где <tex>F</tex> — агрегирующая функция, <tex>K_h \times K_w</tex> — пространственный размер сканирующего окна, а <tex>S</tex> — шаг (stride) его перемещения.
* ''Max Pooling (Субдискретизация максимумом)''
* ''Max Pooling (Субдискретизация максимумом)''
-
В данном случае функцией <tex>F</tex> выступает оператор максимума. Алгоритм выбирает наибольшее значение из локального окна (чаще всего <tex>2 \times 2</tex>). Это позволяет выделить наиболее выраженный признак (например, резкую границу или яркую текстуру) в конкретной области, игнорируя фоновый шум. Формула для Max Pooling:
+
В данном случае функцией <tex>F</tex> выступает оператор максимума. Алгоритм выбирает только наибольшее значение из локального окна. Это позволяет выделить самый яркий и выраженный признак (например, чёткую белковую линию или угол объекта), полностью игнорируя слабый фоновый шум вокруг.
 +
 
 +
Формула для Max Pooling:
<tex>y[i, j] = \max_{0 \le a, b < h} x[h\cdot i + a, h\cdot j + b]</tex>
<tex>y[i, j] = \max_{0 \le a, b < h} x[h\cdot i + a, h\cdot j + b]</tex>
* ''Average Pooling (Субдискретизация средним)''
* ''Average Pooling (Субдискретизация средним)''
-
Здесь <tex>F</tex> вычисляет среднее арифметическое всех элементов в окне. В отличие от максимума, этот метод сохраняет информацию о фоновых значениях и оценивает «общую интенсивность» признака в области, сглаживая карту признаков. Формула для Average Pooling:
+
Здесь <tex>F</tex> вычисляет среднее арифметическое всех элементов в окне. В отличие от максимума, этот метод не отбрасывает фон, а сглаживает карту признаков, оценивая общую интенсивность свойств в этой области.
 +
 
 +
Формула для Average Pooling:
<tex>y[i, j] = \frac{1}{h^2} \sum_{a=0}^{h-1} \sum_{b=0}^{h-1} x[h\cdot i + a, h\cdot j + b]</tex>
<tex>y[i, j] = \frac{1}{h^2} \sum_{a=0}^{h-1} \sum_{b=0}^{h-1} x[h\cdot i + a, h\cdot j + b]</tex>
-
Помимо Max и Average pooling, исторически тестировались и другие подходы: ''Stochastic pooling'' (случайный выбор элемента на основе вероятностей), ''L2-pooling'' (вычисление нормы Фробениуса в окне) или ''Fractional Max Pooling'' (использование дробного шага). Их непопулярность в современных архитектурах обусловлена низкой эффективностью с точки зрения соотношения вычислительных затрат и качества. Они значительно увеличивают время прямого и обратного прохода, но при этом редко дают существенный прирост точности классификации по сравнению с вычислительно простым и надежным Max Pooling.
+
Помимо Max и Average pooling, исторически тестировались и другие подходы: ''Stochastic pooling'' (случайный выбор элемента на основе распределения вероятностей), ''L2-pooling'' (вычисление корня из суммы квадратов элементов) и ''Fractional Max Pooling'' (использование дробного шага). Они не получили широкого распространения в современных архитектурах, так как значительно увеличивают вычислительные затраты при прямом и обратном проходе, но редко дают существенный прирост точности по сравнению с простым и надежным Max Pooling.
=== Классификация ===
=== Классификация ===
После формирования высокоуровневых признаков полученные многомерные тензоры преобразуются в одномерный вектор. Данный вектор поступает на вход полносвязных слоев (англ. Fully Connected Layers), функционирующих аналогично классическому многослойному перцептрону. Финальный слой использует функцию Softmax для вычисления нормированных вероятностей принадлежности входного объекта к заданным классам.
После формирования высокоуровневых признаков полученные многомерные тензоры преобразуются в одномерный вектор. Данный вектор поступает на вход полносвязных слоев (англ. Fully Connected Layers), функционирующих аналогично классическому многослойному перцептрону. Финальный слой использует функцию Softmax для вычисления нормированных вероятностей принадлежности входного объекта к заданным классам.
 +
 +
Если до появления свёточных сетей в многослойный перцептрон передавались все пиксели изображения, то при использовании архитектуры свёрточных сетей передаются лишь признаки, полученные после этапа извлечения признаков.
== История и развитие ==
== История и развитие ==
Строка 84: Строка 127:
Данный метод является фундаментальным инструментом борьбы с переобучением в условиях дефицита размеченных данных. Аугментация принудительно заставляет модель извлекать инвариантные признаки объекта, препятствуя запоминанию специфического расположения пикселей, освещения или фона, присутствующего в ограниченной обучающей выборке.
Данный метод является фундаментальным инструментом борьбы с переобучением в условиях дефицита размеченных данных. Аугментация принудительно заставляет модель извлекать инвариантные признаки объекта, препятствуя запоминанию специфического расположения пикселей, освещения или фона, присутствующего в ограниченной обучающей выборке.
-
* ''Прореживание (Dropout)': Метод стохастической регуляризации, при котором в процессе обучения каждый нейрон скрытого слоя с заданной вероятностью (как правило, 0.5) временно исключается из вычислительного графа (его выход обнуляется). На этапе логического вывода (инференса) используются все нейроны, но их веса масштабируются пропорционально вероятности их сохранения при обучении.
+
* ''Прореживание (Dropout)'': Метод стохастической регуляризации, при котором в процессе обучения каждый нейрон скрытого слоя с заданной вероятностью (как правило, 0.5) временно исключается из вычислительного графа (его выход обнуляется). На этапе логического вывода (инференса) используются все нейроны, но их веса масштабируются пропорционально вероятности их сохранения при обучении.
Прореживание эффективно разрушает коадаптацию нейронов — ситуацию, при которой конкретный узел опирается исключительно на выходы ограниченной группы соседних узлов, игнорируя глобальный контекст. Алгоритмически применение данного метода эквивалентно обучению экспоненциально большого числа различных архитектур сетей с их последующим ансамблированием, что радикально повышает устойчивость и обобщающую способность модели.
Прореживание эффективно разрушает коадаптацию нейронов — ситуацию, при которой конкретный узел опирается исключительно на выходы ограниченной группы соседних узлов, игнорируя глобальный контекст. Алгоритмически применение данного метода эквивалентно обучению экспоненциально большого числа различных архитектур сетей с их последующим ансамблированием, что радикально повышает устойчивость и обобщающую способность модели.
Строка 103: Строка 146:
; Компьютерное зрение и видеоаналитика:
; Компьютерное зрение и видеоаналитика:
-
* Интеллектуальные транспортные системы: Автоматизированные комплексы фотовидеофиксации (включая системы контроля ГИБДД) применяют CNN для детектирования транспортных средств в потоке, распознавания государственных регистрационных знаков (ANPR/ALPR) в сложных погодных условиях и классификации паттернов нарушений (выезд на встречную полосу, непристегнутый ремень безопасности).
+
* ''Интеллектуальные транспортные системы'': Автоматизированные комплексы фотовидеофиксации (включая системы контроля ГИБДД) применяют CNN для детектирования транспортных средств в потоке, распознавания государственных регистрационных знаков (ANPR/ALPR) в сложных погодных условиях и классификации паттернов нарушений (выезд на встречную полосу, непристегнутый ремень безопасности).
-
* Биометрия и корпоративная безопасность: Применение глубоких сверточных архитектур в системах контроля и управления доступом (СКУД) на закрытых предприятиях. Алгоритмы обеспечивают высокоточную верификацию лиц сотрудников, отслеживание перемещений в реальном времени и защиту от спуфинг-атак (попыток обхода системы с помощью фотографий или масок).
+
* ''Биометрия и корпоративная безопасность'': Применение глубоких сверточных архитектур в системах контроля и управления доступом (СКУД) на закрытых предприятиях. Алгоритмы обеспечивают высокоточную верификацию лиц сотрудников, отслеживание перемещений в реальном времени и защиту от спуфинг-атак (попыток обхода системы с помощью фотографий или масок).
; Медицинская диагностика и анализ физиологических данных:
; Медицинская диагностика и анализ физиологических данных:
-
* Медицинская визуализация: Автоматизированный скрининг рентгенограмм, снимков магнитно-резонансной (МРТ) и компьютерной томографии (КТ) для выявления новообразований, микрокальцинатов и иных патологий.
+
* ''Медицинская визуализация'': Автоматизированный скрининг рентгенограмм, снимков магнитно-резонансной (МРТ) и компьютерной томографии (КТ) для выявления новообразований, микрокальцинатов и иных патологий.
-
* Электрофизиологические сигналы: Применение одномерных сверточных сетей (1D-CNN) для анализа многоканальных временных рядов, таких как электрокардиограммы (ЭКГ) и электроэнцефалограммы (ЭЭГ). Модели сканируют сигнал скользящим окном, локализуя скрытые паттерны, характерные для аритмий, ишемии или эпилептической активности.
+
* ''Электрофизиологические сигналы'': Применение одномерных сверточных сетей (1D-CNN) для анализа многоканальных временных рядов, таких как электрокардиограммы (ЭКГ) и электроэнцефалограммы (ЭЭГ). Модели сканируют сигнал скользящим окном, локализуя скрытые паттерны, характерные для аритмий, ишемии или эпилептической активности.
; Обработка аудиосигналов и распознавание речи:
; Обработка аудиосигналов и распознавание речи:
Строка 125: Строка 168:
== Преимущества ==
== Преимущества ==
-
* Инвариантность к пространственному сдвигу (Translation Invariance): Благодаря тому, что ядра свёртки пошагово сканируют весь входной тензор, сеть способна детектировать искомый признак независимо от его местоположения. Например, алгоритм успешно классифицирует кошку на фотографии, даже если животное находится в крайнем левом углу, а не в центре кадра.
+
* ''Инвариантность к пространственному сдвигу (Translation Invariance):'' Благодаря тому, что ядра свёртки пошагово сканируют весь входной тензор, сеть способна детектировать искомый признак независимо от его местоположения. Например, алгоритм успешно классифицирует кошку на фотографии, даже если животное находится в крайнем левом углу, а не в центре кадра.
-
* Разделение весов (Weight Sharing): Один и тот же набор оптимизируемых весовых коэффициентов (фильтр) применяется ко всем локальным участкам изображения. Это радикально сокращает общее количество параметров модели по сравнению с классическими полносвязными сетями, что снижает требования к оперативной памяти и предотвращает переобучение.
+
* ''Разделение весов (Weight Sharing)'': Один и тот же набор оптимизируемых весовых коэффициентов (фильтр) применяется ко всем локальным участкам изображения. Это радикально сокращает общее количество параметров модели по сравнению с классическими полносвязными сетями, что снижает требования к оперативной памяти и предотвращает переобучение.
-
* Устойчивость к шумам: Комбинация операций свёртки и локальной субдискретизации естественным образом сглаживает пиксельные аномалии и незначительные искажения во входных данных. Фильтры концентрируются на устойчивых высокоуровневых структурах (границах, текстурах), игнорируя случайный фоновый шум.
+
* ''Устойчивость к шумам'': Комбинация операций свёртки и локальной субдискретизации естественным образом сглаживает пиксельные аномалии и незначительные искажения во входных данных. Фильтры концентрируются на устойчивых высокоуровневых структурах (границах, текстурах), игнорируя случайный фоновый шум.
-
* Высокая степень параллелизации: Математическая природа операций свёртки идеально подходит для векторных и матричных вычислений. Поскольку вычисления для различных участков одного изображения не зависят друг от друга, они могут эффективно распараллеливаться на тысячах ядер современных графических (GPU) и тензорных (TPU) процессоров.
+
* ''Высокая степень параллелизации'': Математическая природа операций свёртки идеально подходит для векторных и матричных вычислений. Поскольку вычисления для различных участков одного изображения не зависят друг от друга, они могут эффективно распараллеливаться на тысячах ядер современных графических (GPU) и тензорных (TPU) процессоров.
== Недостатки ==
== Недостатки ==
-
* Утеря точной пространственной информации: Итеративное применение слоев субдискретизации (например, Max Pooling) приводит к потере данных о строгом взаимном расположении элементов. В результате сеть может ошибочно распознать объект по наличию его составных частей, проигнорировав их структуру. Например, алгоритм может классифицировать изображение как «лицо человека», если найдет на нем глаза, нос и рот, даже если глаза анатомически расположены ниже рта.
+
* ''Утеря точной пространственной информации'': Итеративное применение слоев субдискретизации (например, Max Pooling) приводит к потере данных о строгом взаимном расположении элементов. В результате сеть может ошибочно распознать объект по наличию его составных частей, проигнорировав их структуру. Например, алгоритм может классифицировать изображение как «лицо человека», если найдет на нем глаза, нос и рот, даже если глаза анатомически расположены ниже рта.
-
* Неустойчивость к поворотам и изменению масштаба: Стандартные архитектуры свёрточных сетей чувствительны к вращению объектов. Если модель обучалась исключительно на фотографиях прямо стоящих людей, она с высокой вероятностью не распознает человека, лежащего горизонтально или сфотографированного вверх ногами. Решением обычно выступает ресурсозатратная аугментация (искусственное расширение) обучающей выборки.
+
* ''Неустойчивость к поворотам и изменению масштаба'': Стандартные архитектуры свёрточных сетей чувствительны к вращению объектов. Если модель обучалась исключительно на фотографиях прямо стоящих людей, она с высокой вероятностью не распознает человека, лежащего горизонтально или сфотографированного вверх ногами. Решением обычно выступает ресурсозатратная аугментация (искусственное расширение) обучающей выборки.
-
* Сложность интерпретации («Черный ящик»): Глубокие многослойные архитектуры формируют настолько абстрактные признаки, что алгоритм становится крайне сложным для интерпретации. Инженеру или исследователю практически невозможно детерминированно объяснить, на основании каких конкретно пикселей или паттернов сеть приняла итоговое решение (что является критическим ограничением в медицинской диагностике и беспилотном вождении).
+
* ''Сложность интерпретации («Черный ящик»)'': Глубокие многослойные архитектуры формируют настолько абстрактные признаки, что алгоритм становится крайне сложным для интерпретации. Инженеру или исследователю практически невозможно детерминированно объяснить, на основании каких конкретно пикселей или паттернов сеть приняла итоговое решение (что является критическим ограничением в медицинской диагностике и беспилотном вождении).
-
* Уязвимость к состязательным атакам (Adversarial Attacks): Свёрточные сети подвержены ошибкам при намеренном добавлении к изображению специальным образом рассчитанного шума. Подобные искажения абсолютно неразличимы для человеческого глаза, однако они способны заставить сеть с высокой уверенностью выдать радикально неверный ответ (например, классифицировать дорожный знак «Уступи дорогу» как «Ограничение скорости 100 км/ч»).
+
* ''Уязвимость к состязательным атакам (Adversarial Attacks)'': Свёрточные сети подвержены ошибкам при намеренном добавлении к изображению специальным образом рассчитанного шума. Подобные искажения абсолютно неразличимы для человеческого глаза, однако они способны заставить сеть с высокой уверенностью выдать радикально неверный ответ (например, классифицировать дорожный знак «Уступи дорогу» как «Ограничение скорости 100 км/ч»).
-
* Вычислительная сложность: Процесс обучения современных глубоких моделей с нуля требует значительных финансовых затрат на аренду вычислительных кластеров, высокого энергопотребления, а также наличия гигантских наборов тщательно аннотированных данных.
+
* ''Вычислительная сложность'': Процесс обучения современных глубоких моделей с нуля требует значительных финансовых затрат на аренду вычислительных кластеров, высокого энергопотребления, а также наличия гигантских наборов тщательно аннотированных данных.
[[Категория:Машинное обучение]]
[[Категория:Машинное обучение]]
[[Категория:Нейронные сети]]
[[Категория:Нейронные сети]]

Версия 12:18, 30 июня 2026

Статья НАХОДИТСЯ В РАЗРАБОТКЕ, написана с использованием LLM Gemini 3.1 Pro и проверена участником О.А.Османов 19:49, 12 июня 2026 (MSD)

Промпт приводится полностью в Обсуждение:Свёрточная нейронная сеть


Содержание


Свёрточная нейронная сеть

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

Исторически данные алгоритмы пришли на смену классическим многослойным перцептронам (англ. Multilayer Perceptron, MLP) в задачах машинного зрения. Применение MLP требовало преобразования входного многомерного тензора в одномерный вектор, что приводило к потере информации о пространственной структуре данных и экспоненциальному росту числа параметров. Дополнительно сверточные сети автоматизировали процесс извлечения признаков (англ. feature engineering), заменив ручную настройку детерминированных фильтров на оптимизацию весовых коэффициентов непосредственно в процессе обучения модели.

Биологической предпосылкой создания данной архитектуры стали исследования зрительной коры кошек, проведенные Дэвидом Хьюбелом и Торстеном Визелом в 1959 году. Ученые установили, что зрительные нейроны реагируют на стимулы строго в ограниченных локальных областях пространства (рецептивных полях) и образуют иерархическую структуру: от рецепторов, реагирующих на базовые линии под определенным углом, к структурам, распознающим сложные геометрические формы.

Архитектура и принцип работы

Иллюстрация архитектуры свёрточной нейронной сети, а также визуализация признаков по слоям.
Иллюстрация архитектуры свёрточной нейронной сети, а также визуализация признаков по слоям.

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

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

Извлечение признаков

Данный этап формирует иерархическое представление входных данных и состоит из чередующихся слоев нескольких типов:

Слой свёртки (Convolutional Layer)
Анимация с иллюстрацией применения операции свёртки.
Анимация с иллюстрацией применения операции свёртки.

Базовый вычислительный элемент.

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

Математически простая двухмерная свёртка для одного элемента матрицы описывается формулой:

(x*w)[i, j] = \sum_{a = -A}^A \sum_{b = -B}^B w_{ab}\times x[i+a, j+b]

Здесь x[i, j] — это исходные признаки, пиксели входного изображения размером n \times m. Переменная w_{ab} обозначает веса ядра свёртки (фильтра), а A и B определяют его пространственные границы (размер ядра составляет 2A+1 \times 2B+1).

Применение свёртки уменьшает пространственные размеры тензора на выходе. Чтобы предотвратить чрезмерное сжатие матрицы и не терять информацию на её границах, используют параметр padding P — искусственное дополнение матрицы нулями по краям. Например, если к исходной матрице размером 3 \times 3 применить padding P=1, то вокруг неё добавится рамка толщиной в один ноль, и фактический размер обрабатываемой матрицы данных увеличится до 5 \times 5:


\begin{pmatrix}
1 & 2 & 3 \\
4 & 5 & 6 \\
7 & 8 & 9
\end{pmatrix}
\quad\longrightarrow\quad
\begin{pmatrix}
0 & 0 & 0 & 0 & 0 \\
0 & 1 & 2 & 3 & 0 \\
0 & 4 & 5 & 6 & 0 \\
0 & 7 & 8 & 9 & 0 \\
0 & 0 & 0 & 0 & 0
\end{pmatrix}

Также на итоговый размер влияют размер фильтра K и параметр stride S (шаг, с которым фильтр скользит по изображению). Формулы размера результирующей матрицы:

W_{out} = \lfloor \frac{W_{in} - K + 2P}{S} \rfloor + 1

H_{out} = \lfloor \frac{H_{in} - K + 2P}{S} \rfloor + 1.


Слой активации (Activation Layer)

К результату операции свёртки поэлементно применяется нелинейная функция, позволяющая сети аппроксимировать сложные закономерности. Существует несколько популярных видов функций активации:

  • Сигмоида (Sigmoid)

\sigma(x) = \frac{1}{1 + e^{-x}}.

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

  • Гиперболический тангенс (Tanh)

\tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}

Сжимает выход в диапазон (-1, 1). В отличие от сигмоиды, центрирована относительно нуля, что делает процесс оптимизации более стабильным, однако проблема затухания градиента сохраняется.

  • ReLU (Rectified Linear Unit)

f(x) = \max(0, x). Наиболее распространенный стандарт. Устраняет затухание градиента для положительных значений и вычислительно крайне эффективна. Однако обладает проблемой «мертвых нейронов» — если на вход подается отрицательное значение, градиент становится равен нулю.

  • Модификации ReLU

Для решения проблемы «мертвых нейронов» применяются Leaky ReLU f(x) = \max(\alpha x, x), где \alpha — малая константа, а также параметрический PReLU и экспоненциальный ELU, обеспечивающие ненулевой градиент на всей числовой оси.

Слой субдискретизации (Pooling Layer)

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

После слоя свёртки получается огромный объём данных. Слой субдискретизации сжимает эти данные, деля изображение на небольшие блоки (например, 2x2 пикселя) и преобразовывает каждый блок в одно число. Это позволяет ускорить работу, поскольку данных становится меньше, нейросеть учится и считает быстрее. Также это даёт устойчивость к сдвигам: если важный объект (например, глаз на фотографии) сдвинется на пару пикселей в сторону, слой субдискретизации всё равно поймает его, так как он смотрит на общую картину в области, а не на точные координаты.

Общая математическая модель операции выглядит так:

y[i, j] = F(x[h\cdot i, h\cdot j], \dots, x[h\cdot i + h - 1, h\cdot j + h - 1]),

где F — агрегирующая функция, K_h \times K_w — пространственный размер сканирующего окна, а S — шаг (stride) его перемещения.

  • Max Pooling (Субдискретизация максимумом)

В данном случае функцией F выступает оператор максимума. Алгоритм выбирает только наибольшее значение из локального окна. Это позволяет выделить самый яркий и выраженный признак (например, чёткую белковую линию или угол объекта), полностью игнорируя слабый фоновый шум вокруг.

Формула для Max Pooling: y[i, j] = \max_{0 \le a, b < h} x[h\cdot i + a, h\cdot j + b]

  • Average Pooling (Субдискретизация средним)

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

Формула для Average Pooling: y[i, j] = \frac{1}{h^2} \sum_{a=0}^{h-1} \sum_{b=0}^{h-1} x[h\cdot i + a, h\cdot j + b]

Помимо Max и Average pooling, исторически тестировались и другие подходы: Stochastic pooling (случайный выбор элемента на основе распределения вероятностей), L2-pooling (вычисление корня из суммы квадратов элементов) и Fractional Max Pooling (использование дробного шага). Они не получили широкого распространения в современных архитектурах, так как значительно увеличивают вычислительные затраты при прямом и обратном проходе, но редко дают существенный прирост точности по сравнению с простым и надежным Max Pooling.

Классификация

После формирования высокоуровневых признаков полученные многомерные тензоры преобразуются в одномерный вектор. Данный вектор поступает на вход полносвязных слоев (англ. Fully Connected Layers), функционирующих аналогично классическому многослойному перцептрону. Финальный слой использует функцию Softmax для вычисления нормированных вероятностей принадлежности входного объекта к заданным классам.

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

История и развитие

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

  • LeNet-5 (1998): Архитектура, разработанная Яном Лекуном. Является пионером стандартизированной топологии сверточных сетей (чередование слоев свертки и субдискретизации, завершающееся полносвязным перцептроном). Изначально применялась для оптического распознавания рукописных цифр на почтовых индексах и банковских чеках (набор данных MNIST). В качестве функции активации использовался гиперболический тангенс, а субдискретизация выполнялась методом Average Pooling.
  • AlexNet (2012): Архитектура, ознаменовавшая начало массового применения глубокого обучения в задачах компьютерного зрения. Разработана Алексом Крижевски и Ильей Суцкевером под руководством Джеффри Хинтона. Победитель соревнования ImageNet 2012 года с беспрецедентным отрывом по точности. Ключевые нововведения: интеграция нелинейности ReLU (существенно ускорившей сходимость), применение перекрывающегося Max Pooling и распараллеливание матричных вычислений на двух графических ускорителях.
  • ResNet (Residual Network, 2015): Архитектура, разработанная коллективом исследователей из Microsoft Research. Решила фундаментальную проблему деградации глубоких сетей (падение обобщающей способности при чрезмерном увеличении числа слоев). Инновацией стало внедрение остаточных связей (англ. skip connections), позволяющих входному тензору блока обходить несколько нелинейных преобразований и суммироваться с их выходом: H(x) = F(x) + x. Это обеспечило беспрепятственное прохождение градиента при алгоритме обратного распространения ошибки и позволило стабильно обучать сети глубиной 152 слоя и более.

Эволюция методов обучения и регуляризации

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

  • Аугментация данных (Dataset Augmentation): Метод искусственного расширения обучающей выборки путем применения стохастических геометрических, аффинных и цветовых преобразований к исходным тензорам (например, случайные повороты, отзеркаливание, масштабирование, добавление гауссовского шума).

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

  • Прореживание (Dropout): Метод стохастической регуляризации, при котором в процессе обучения каждый нейрон скрытого слоя с заданной вероятностью (как правило, 0.5) временно исключается из вычислительного графа (его выход обнуляется). На этапе логического вывода (инференса) используются все нейроны, но их веса масштабируются пропорционально вероятности их сохранения при обучении.

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

  • Пакетная нормализация (Batch Normalization): Алгоритм нормализации выходных значений промежуточных слоев сети в пределах мини-пакета (батча) обучающих данных. Выполняется центрирование активаций по математическому ожиданию и масштабирование по дисперсии, после чего применяются обучаемые параметры сдвига и масштаба.

Метод нивелирует проблему внутреннего ковариантного сдвига (изменения распределения активаций в глубоких слоях в процессе обновления весов предыдущих слоев). Пакетная нормализация стабилизирует ландшафт функции потерь, позволяет использовать алгоритмы оптимизации с существенно более высокими скоростями обучения (англ. learning rate) и делает модель инвариантной к начальной инициализации весовых матриц. Дополнительно метод обладает слабым регуляризирующим эффектом.

Обучение

Оптимизация параметров сети осуществляется посредством алгоритма обратного распространения ошибки (англ. backpropagation). Алгоритм итеративно обновляет значения весов ядер свертки с применением методов градиентного спуска с целью минимизации функции потерь (англ. loss function).

Ввиду высоких вычислительных затрат на обучение моделей с нуля, в современной инженерной практике преобладает подход переноса обучения (англ. Transfer Learning). Метод заключается в использовании сети, предварительно обученной на объемном наборе данных (например, ImageNet), в качестве экстрактора признаков. В таком сценарии исходный классификатор удаляется, а вместо него инициализируется и обучается новый, соответствующий целевой задаче.

При наличии достаточного объема размеченных целевых данных применяется метод тонкой настройки (англ. fine-tuning). В этом случае веса последних сверточных слоев предварительно обученной модели становятся доступными для обновления градиентами и оптимизируются совместно с новым классификатором, что позволяет адаптировать извлекаемые признаки под специфику конкретной предметной области.

Применение

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

Компьютерное зрение и видеоаналитика
  • Интеллектуальные транспортные системы: Автоматизированные комплексы фотовидеофиксации (включая системы контроля ГИБДД) применяют CNN для детектирования транспортных средств в потоке, распознавания государственных регистрационных знаков (ANPR/ALPR) в сложных погодных условиях и классификации паттернов нарушений (выезд на встречную полосу, непристегнутый ремень безопасности).
  • Биометрия и корпоративная безопасность: Применение глубоких сверточных архитектур в системах контроля и управления доступом (СКУД) на закрытых предприятиях. Алгоритмы обеспечивают высокоточную верификацию лиц сотрудников, отслеживание перемещений в реальном времени и защиту от спуфинг-атак (попыток обхода системы с помощью фотографий или масок).
Медицинская диагностика и анализ физиологических данных
  • Медицинская визуализация: Автоматизированный скрининг рентгенограмм, снимков магнитно-резонансной (МРТ) и компьютерной томографии (КТ) для выявления новообразований, микрокальцинатов и иных патологий.
  • Электрофизиологические сигналы: Применение одномерных сверточных сетей (1D-CNN) для анализа многоканальных временных рядов, таких как электрокардиограммы (ЭКГ) и электроэнцефалограммы (ЭЭГ). Модели сканируют сигнал скользящим окном, локализуя скрытые паттерны, характерные для аритмий, ишемии или эпилептической активности.
Обработка аудиосигналов и распознавание речи
Последовательные фрагменты сигнала представляются векторами спектрального разложения
Последовательные фрагменты сигнала представляются векторами спектрального разложения

Для анализа речевых потоков последовательные фрагменты звукового сигнала преобразуются в двумерное пространство — представляются векторами спектрального разложения (спектрограммами). Сеть принимает на вход сформированную матрицу признаков (например, размерности 15 \times 60). Обучаемые ядра свертки извлекают локальные инвариантные акустические признаки, пространственная размерность которых затем сжимается слоями субдискретизации. Финальные агрегированные статистики (математическое ожидание и дисперсия) передаются в полносвязный слой и итоговый классификатор (например, метод опорных векторов — SVM) для точной идентификации диктора или фонемы.

Обработка естественного языка (NLP)
Последовательные слова в тексте представляются векторами с помощью векторых представлений
Последовательные слова в тексте представляются векторами с помощью векторых представлений

Архитектуры CNN успешно адаптированы для классификации последовательностей текста и анализа тональности предложений. Входные слова текста отображаются в плотные векторные представления с помощью алгоритмов дистрибутивной семантики (например, word2vec). Формируется матрица размерности n \times k, где n — длина предложения в словах, а k — размерность векторного представления. Сверточный слой применяет параллельно несколько фильтров различной ширины, что позволяет сети извлекать признаки на уровне биграмм, триграмм и более длинных структур (n-грамм). Далее применяется операция глобальной субдискретизации по времени (max-over-time pooling) для выделения наиболее значимых семантических конструкций. Выходной тензор нормализуется слоем регуляризации (dropout) и передается на полносвязный слой с функцией Softmax для итоговой классификации.

Биоинформатика

Анализ молекулярно-биологических данных посредством 1D-CNN. Сети применяются для прямого сканирования нуклеотидных последовательностей ДНК и РНК. Алгоритм обучается самостоятельно находить регуляторные элементы, предсказывать сайты связывания белков и классифицировать генетические мутации, заменяя трудоемкий процесс ручного конструирования биологических маркеров.

Преимущества

  • Инвариантность к пространственному сдвигу (Translation Invariance): Благодаря тому, что ядра свёртки пошагово сканируют весь входной тензор, сеть способна детектировать искомый признак независимо от его местоположения. Например, алгоритм успешно классифицирует кошку на фотографии, даже если животное находится в крайнем левом углу, а не в центре кадра.
  • Разделение весов (Weight Sharing): Один и тот же набор оптимизируемых весовых коэффициентов (фильтр) применяется ко всем локальным участкам изображения. Это радикально сокращает общее количество параметров модели по сравнению с классическими полносвязными сетями, что снижает требования к оперативной памяти и предотвращает переобучение.
  • Устойчивость к шумам: Комбинация операций свёртки и локальной субдискретизации естественным образом сглаживает пиксельные аномалии и незначительные искажения во входных данных. Фильтры концентрируются на устойчивых высокоуровневых структурах (границах, текстурах), игнорируя случайный фоновый шум.
  • Высокая степень параллелизации: Математическая природа операций свёртки идеально подходит для векторных и матричных вычислений. Поскольку вычисления для различных участков одного изображения не зависят друг от друга, они могут эффективно распараллеливаться на тысячах ядер современных графических (GPU) и тензорных (TPU) процессоров.

Недостатки

  • Утеря точной пространственной информации: Итеративное применение слоев субдискретизации (например, Max Pooling) приводит к потере данных о строгом взаимном расположении элементов. В результате сеть может ошибочно распознать объект по наличию его составных частей, проигнорировав их структуру. Например, алгоритм может классифицировать изображение как «лицо человека», если найдет на нем глаза, нос и рот, даже если глаза анатомически расположены ниже рта.
  • Неустойчивость к поворотам и изменению масштаба: Стандартные архитектуры свёрточных сетей чувствительны к вращению объектов. Если модель обучалась исключительно на фотографиях прямо стоящих людей, она с высокой вероятностью не распознает человека, лежащего горизонтально или сфотографированного вверх ногами. Решением обычно выступает ресурсозатратная аугментация (искусственное расширение) обучающей выборки.
  • Сложность интерпретации («Черный ящик»): Глубокие многослойные архитектуры формируют настолько абстрактные признаки, что алгоритм становится крайне сложным для интерпретации. Инженеру или исследователю практически невозможно детерминированно объяснить, на основании каких конкретно пикселей или паттернов сеть приняла итоговое решение (что является критическим ограничением в медицинской диагностике и беспилотном вождении).
  • Уязвимость к состязательным атакам (Adversarial Attacks): Свёрточные сети подвержены ошибкам при намеренном добавлении к изображению специальным образом рассчитанного шума. Подобные искажения абсолютно неразличимы для человеческого глаза, однако они способны заставить сеть с высокой уверенностью выдать радикально неверный ответ (например, классифицировать дорожный знак «Уступи дорогу» как «Ограничение скорости 100 км/ч»).
  • Вычислительная сложность: Процесс обучения современных глубоких моделей с нуля требует значительных финансовых затрат на аренду вычислительных кластеров, высокого энергопотребления, а также наличия гигантских наборов тщательно аннотированных данных.
Личные инструменты