Вопрос или проблема
Известная архитектура LeNet-5 выглядит так:
Выход слоя S2 имеет размер: 10x10x6 – в основном это изображение с 6 сверточными операциями, примененными к нему для извлечения признаков.
Если бы каждое измерение снова отправили на 6 фильтров, то полученный результат был бы 10x10x36, однако он составляет 10x10x16. Изначально я застрял на этом, но в конце концов я понял, что это делается за счет объединения входных данных из слоя S2 и применения одного ядра к ним, как объясняется в статье:
Слой C3 является сверточным слоем с 16 картами признаков. Каждое устройство в каждой карте признаков связано с несколькими 5×5 соседями в идентичных местах подмножества карт признаков S2.
.
Логика схемы соединений в таблице I следующая: первые шесть карт признаков C3 принимают входные данные из каждого непрерывного подмножества трех карт признаков S2. Следующие шесть принимают входные данные из каждого непрерывного подмножества четырех. Следующие три принимают входные данные из некоторых ненепрерывных подмножеств четырех. Наконец, последняя карта принимает входные данные из всех карт признаков S2. Слой C3 имеет 1,516 обучаемых параметров и 151,600 соединений.
А схема этого представлена в таблице:
Что я все еще не понимаю, так это как именно мне их комбинировать?
В предыдущем слое я просто применял 6 ядер к 1 измерению, что приводило к 6 измерениям, что было понятно. Здесь я немного запутался, если честно 🙁
Пожалуйста, помогите.
Матейуш
Смотрите эту таблицу, каждая строка которой содержит 16 чисел. Я не знаю, как их совместить, поэтому я также размещаю картинку.
FILTER 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
WEIGHTS 75 75 75 75 75 75 100 100 100 100 100 100 100 100 100 150
BIAS 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
TRAINABLE PARAMETERS 76 76 76 76 76 76 101 101 101 101 101 101 101 101 101 151
Фильтр $0$ C3 генерируется из фильтра $0,1,2$ S2. Размер ядра составляет $5×5$. Количество параметров составляет $5x5x3=75 + 1(смещение) = 76$.
Это относится и к другим фильтрам. Таким образом, в целом есть $76 + 76 +…+101+151 = 1516$ параметров.
Ответ или решение
Понимание объединения карт признаков в слое C3 архитектуры LeNet-5
Архитектура LeNet-5, изначально предложенная Яном Лекуном и его коллегами, представляет собой важный шаг в эволюции свёрточных нейронных сетей. Один из ключевых аспектов, который может вызывать затруднения, – это то, как объединяются карты признаков в слое C3. Давайте подробнее рассмотрим этот процесс.
Структура LeNet-5
Напомним, что слой S2 производит выход размером 10x10x6, где 6 обозначает количество карт признаков, полученных в результате применения свёртки с 6 фильтрами к входному изображению. В предыдущих слоях каждое измерение обрабатывалось с использованием отдельного набора фильтров, и это было достаточно интуитивно понятно.
Как объединяются карты признаков в слое C3?
Слой C3 – это свёрточный слой, обладающий 16 картами признаков. Каждый из этих выходов (или карт признаков) получается путём свёртки 5×5 над выбранными картами из слоя S2. Ключевым моментом здесь является то, что каждый фильтр в слое C3 подключён не ко всем 6 картам S2, а к определённым подмножествам этих карт. Это означает, что мы используем разные наборы карт S2 для каждого фильтра C3, что и объясняет, почему выходные карты не увеличиваются до 10x10x36 (то есть 6 карт x 6 фильтров).
Подключение карт признаков
В соответствии с описанием в вашем сообщении, следующие правила применяются к соединениям между S2 и C3:
- Первые шесть карт C3 получают информацию из каждой непрерывной группы из трех карт из S2.
- Следующие шесть карт C3 получают информацию из каждой непрерывной группы из четырех карт (модели 6, 7, 8, и 9).
- Затем три карты получают информацию из некоторых разрозненных групп из четырех.
- Последняя карта получает данные из всех шести карт признаков S2.
Это гибкое использование карт признаков позволяет сети настраиваться на различные уровни абстракции, что улучшает качество извлечения признаков.
Подсчёт количества параметров
Каждый фильтр C3 требует 75 параметров (5×5 размер ядра свёртки x 3, поскольку используется три карты признаков, плюс один для смещения), что, в свою очередь, объясняет, почему у нас есть 1516 обучаемых параметров и 151600 соединений в слое C3, если учитывать все фильтры в сети.
Применение весов и смещения
Каждый фильтр также имеет смещение, что добавляет к общему числу параметров. Ваша таблица значений и весов хорошо иллюстрирует это. Например, фильтр 0 в C3 основан на весах от фильтров 0, 1 и 2 из S2 и использует 76 обучаемых параметров (75 весов + 1 смещение).
Заключение
Таким образом, понимание того, как именно происходит объединение карт признаков в C3, является важной частью расшифровки работы архитектуры LeNet-5. С помощью данной структуры фильтры могут эффективно извлекать более сложные признаки из входных данных, что в итоге повышает производительность всей сети. Надеюсь, что это объяснение помогло прояснить, как функционирует объединение в слое C3 и почему это не просто линейный процесс.