Сверточная сеть использует преимущество того, что мы анализируем именно изображения, и разумно ограничивает архитектуру глубокой сети. Поэтому мы можем значительно сократить число параметров в нашей модели. Слои сверточной сети, основанные на работе человеческого зрения, организованы в трех измерениях: у каждого слоя есть ширина, высота и глубина, как показано на рис. 5.4 [60]. Как мы позже увидим, нейроны в сверточном слое соединены только с небольшой локальной областью предыдущего слоя. Это позволяет избежать избыточности полносвязных нейронов. Функцию сверточного слоя можно выразить просто: он обрабатывает трехмерный объем информации, порождая новый трехмерный объем информации. Подробнее о том, как это работает, мы поговорим в следующем разделе.
Рис. 5.4. В сверточных слоях нейроны организуются в трех измерениях, эти слои имеют ширину, высоту и глубину
Фильтры и карты признаков
Чтобы объяснить базовые элементы сверточного слоя, рассмотрим, как человеческий мозг сводит воедино необработанную визуальную информацию и понимает окружающий мир. Одно из самых знаковых исследований в этой области было проведено Дэвидом Хьюбелом и Торстеном Визелем. Они обнаружили, что зоны зрительной коры отвечают за определение границ. В 1959 году они вставили электроды в мозг кошки и стали проецировать на экраны черно-белые изображения. Оказалось, некоторые нейроны активируются только при появлении вертикальных линий, другие — только горизонтальных, а третьи — линий под определенными углами [61].
В дальнейших работах было выяснено, что зрительная кора организована в слои. Каждый отвечает за дополнение признаков, обнаруженных на предыдущих слоях, «прописывая» линии, контуры, формы и, наконец, объекты целиком. Более того, в слое визуальной коры одни и те же детекторы расположены повсюду, что позволяет определять признаки во всех частях изображения. Эти идеи во многом повлияли на разработку сверточных нейронных сетей.
Первой из этого нового знания зародилась идея фильтра , к которой, как оказалось, были довольно близки Виола и Джонс. По сути, это детектор признака, и его работу мы рассмотрим на упрощенном примере на рис. 5.5.
Рис. 5.5. Пример простого черно-белого изображения
Допустим, нам нужно определить вертикальные и горизонтальные линии на этом изображении. Один из вариантов решения — использовать подходящий детектор признаков, как на рис. 5.6. Например, чтобы определить вертикальные линии, воспользуемся детектором сверху, распространив его на все изображение, и на каждом шаге будем проверять совпадения. Запишем ответы в матрицу в правом верхнем углу. Если есть совпадение, мы красим соответствующую ячейку в черный цвет, если нет — оставляем ее белой. В результате получаем карту признаков , которая показывает, где мы нашли нужный признак в исходном изображении. То же можно сделать с детектором горизонтальных линий снизу — получится карта признаков, приведенная в правом нижнем углу.
Рис. 5.6. Применение фильтров для вертикальных и горизонтальных линий в примере
Эта операция называется сверткой. Мы берем фильтр и распространяем его на всю область входящего изображения. Воспользуемся следующей схемой и постараемся выразить эту операцию в виде нейронов сети. Здесь слои в нейросети с прямым распространением сигналов представляют либо исходное изображение, либо карту признаков. Фильтры — сочетания связей (одно из них выделено на рис. 5.7), которые повторяются для всех входных данных. На рис. 5.7 связи одного цвета всегда будут иметь одинаковый вес. Добиться этого можно, инициализировав все связи в группе с идентичными весами и постоянно усредняя обновления весов группы, прежде чем применить их в конце каждой итерации обратного распространения ошибок. Выходной слой — карта признаков, созданная этим фильтром.
Нейрон на карте признаков активируется, если фильтр, отвечающий за эту операцию, обнаруживает подходящий признак в соответствующей позиции в предыдущем слое.
Рис. 5.7. Выражение фильтров и карт признаков в виде нейронов в сверточной сети
Читать дальше
Конец ознакомительного отрывка
Купить книгу