Разработка сверточной нейронной сети для классификации изображений
-
Свертка
- это математическая операция, которая является основой сверточных нейронных сетей (CNN). Она используется для обработки данных с сетчатой структурой. В контексте машинного обучения свертка часто применяется к изображениям (2D), аудио (1D) и видео (3D).-
1D свертка: Используется в обработке аудио и временных рядов. В 1D свертке используется одномерное ядро (или фильтр), которое скользит по одномерному входному массиву (например, временной ряд). На каждом шаге производится поэлементное умножение значений ядра и соответствующих значений входного массива, а затем результаты суммируются. Это дает одно выходное значение. Процесс повторяется для каждого возможного положения ядра на входном массиве.
-
2D свертка: Часто используется в обработке изображений. Здесь используется двумерное ядро, которое скользит по двумерному входному массиву (например, изображение). На каждом шаге производится поэлементное умножение значений ядра и соответствующих значений входного массива, а затем результаты суммируются. Это дает одно выходное значение. Процесс повторяется для каждого возможного положения ядра на входном массиве.
-
3D свертка: Используется в обработке видео и медицинских изображений. Здесь используется трехмерное ядро, которое скользит по трехмерному входному массиву (например, видео, которое можно представить как последовательность изображений). На каждом шаге производится поэлементное умножение значений ядра и соответствующих значений входного массива, а затем результаты суммируются. Это дает одно выходное значение. Процесс повторяется для каждого возможного положения ядра на входном массиве.
-
Свертка позволяет модели обучаться на локальных паттернах в данных, что делает сверточные нейронные сети очень эффективными для задач, связанных с изображениями, аудио и видео.
Пуллинг
(Pooling) - это операция, часто используемая в сверточных нейронных сетях (CNN) после операции свертки. Основная цель пуллинга - уменьшить пространственные размерности входного массива (изображения), сохраняя при этом наиболее важные информационные характеристики.
Пуллинг
работает, применяя некоторую функцию агрегации (например, максимум или среднее) к подмножествам входного массива. Например, при максимальном пуллинге (Max Pooling) берется подмножество входного массива и возвращается максимальное значение из этого подмножества. Это делается для каждого подмножества входного массива, что приводит к уменьшению его размерности.
Пуллинг
помогает сделать модель более устойчивой к небольшим изменениям в входных данных, а также уменьшает вычислительную сложность модели, уменьшая количество параметров.
Dropout
- это техника регуляризации, используемая в нейронных сетях для предотвращения переобучения. Переобучение - это ситуация, когда модель слишком хорошо обучается на тренировочных данных и начинает плохо работать на новых, неизвестных данных.
Во время обучения, когда применяется dropout, случайным образом выбираются некоторые нейроны и "отключаются", то есть их вклад в активацию следующего слоя и обратное распространение ошибки временно прекращается. Это делается на каждом шаге обучения, и на каждом шаге выбираются разные нейроны.
Процент отключаемых нейронов обычно задается вручную и является гиперпараметром. Обычно это значение составляет от 20% до 50%.
Dropout
помогает модели не полагаться слишком сильно на любой один нейрон, тем самым увеличивая ее устойчивость и способность обобщения на новые данные. Это также может быть интерпретировано как тренировка ансамбля нейронных сетей в одной модели, поскольку на каждом шаге обучения "включается" разная подсеть.