Шрифт:
Интервал:
Закладка:
Входной и выходной сигналы
Входным сигналом в нашей сверточной нейронной сети служит изображение, то есть массив цифр, соответствующих яркости и цвету составляющих изображение пикселей[101]. Выходным сигналом нашей сети служит степень ее уверенности (от 0 % до 100 %) в каждой категории: “собака” и “кошка”. Наша цель – научить сеть выдавать высокую степень уверенности для верной категории и низкую – для неверной категории. Таким образом сеть узнает, какие признаки входного изображения наиболее полезны для этой задачи.
Карты активации
Обратите внимание, что на рис. 10 каждый слой сети представлен группой из трех наложенных друг на друга прямоугольников. Эти прямоугольники обозначают карты активации, создаваемые по аналогии с подобными “картами”, обнаруженными в зрительной системе мозга. Хьюбел и Визель установили, что нейроны в нижних слоях зрительной коры формируют решетку, в которой каждый нейрон реагирует на соответствующую небольшую зону визуального поля. Представьте, что вы фотографируете ночной Лос-Анджелес с самолета: огни на вашем снимке складываются в схематичную карту светящихся элементов города. Аналогичным образом активация нейронов в каждом матричном слое зрительной коры формирует схематичную карту важных признаков наблюдаемой сцены. Теперь представьте, что у вас особенный фотоаппарат, который может делать отдельные снимки с огнями домов, светом из окон высотных зданий и фарами машин. Примерно так работает зрительная кора: у каждого важного зрительного признака появляется собственная нейронная карта. Комбинация этих карт – ключ к нашему восприятию сцены.
Как и нейроны зрительной коры, ячейки сверточной нейронной сети служат детекторами важных визуальных признаков, причем каждая ячейка ищет свой признак в конкретной области визуального поля. И (условно говоря) как и зрительная кора, каждый слой СНС состоит из нескольких решеток, сформированных такими ячейками, и каждая решетка является картой конкретного визуального признака.
Какие визуальные признаки должны выявлять ячейки СНС? Давайте сначала посмотрим на мозг. Хьюбел и Визель обнаружили, что нейроны нижних слоев зрительной коры служат детекторами ребер – границ между двумя контрастными областями изображения. Каждый нейрон получает входной сигнал, соответствующий конкретной небольшой области видимой сцены, и эта область называется рецептивным полем нейрона. Нейрон активируется (то есть начинает чаще испускать сигналы), только если рецептивное поле содержит ребра определенного типа.
Тип ребер, на которые реагируют эти нейроны, довольно четко определен. Одни нейроны активируются, только когда в их рецептивном поле оказывается вертикальное ребро, другие реагируют только на горизонтальное ребро, третьи – только на ребра, проходящие под другими определенными углами. Одним из важнейших открытий Хьюбела и Визеля стало то, что каждая небольшая область зрительного поля человека соответствует рецептивным полям многих нейронов, служащих “детекторами ребер”. Таким образом, на низком уровне обработки зрительной информации ваши нейроны определяют ориентацию ребер в каждом фрагменте сцены, на которую вы смотрите. Информация от нейронов – детекторов ребер – поступает в более высокие слои зрительной коры, нейроны которых, вероятно, служат детекторами конкретных форм, объектов и лиц[102].
Рис. 11. Карты активации в первом слое нашей СНС
Подобным образом первый слой нашей гипотетической сверточной нейронной сети состоит из ячеек, которые выявляют ребра. На рис. 11 приводится более подробная схема устройства первого слоя нашей сверточной нейронной сети. Этот слой включает три карты активации, каждая из которых представляет собой решетку из ячеек. Каждая ячейка на карте соответствует аналогичному месту на входном изображении, и каждая ячейка получает входной сигнал из небольшой области вокруг этого места – из своего рецептивного поля. (Как правило, рецептивные поля соседних ячеек накладываются друг на друга.) Каждая ячейка каждой карты вычисляет уровень активации, показывающий, в какой степени поле соответствует той ориентации ребер, которая предпочитается данной ячейкой – например, вертикальной, горизонтальной или наклоненной под определенным углом.
На рис. 12 в подробностях показано, как ячейки карты 1, ответственные за выявление вертикальных границ, вычисляют уровни своей активации. Маленькими белыми квадратиками на входном изображении обозначены рецептивные поля двух разных ячеек. Увеличенные фрагменты изображения, попадающие в эти поля, показаны в качестве решеток со значениями пикселей. Здесь я для простоты показала каждый фрагмент как решетку пикселей 3 × 3 (значения обычно находятся в диапазоне от 0 до 255 – чем светлее пиксель, тем выше значение). Каждая ячейка получает в качестве входного сигнала значения пикселей в своем рецептивном поле. Она умножает каждое входное значение на его вес, складывает результаты и получает уровень своей активации.
Рис. 12. Иллюстрация применения свертки для выявления вертикальных ребер. Например, свертка верхнего рецептивного поля с весами составляет (200 × 1) + (110 × 0) + (70 × –1) + (190 × 1) + (90 × 0) + + (80 × –1) + (220 × 1) + (70 × 0) + (50 × –1) = 410
Веса на рис. 12 должны давать высокую положительную активацию при наличии в рецептивном поле вертикального ребра на стыке светлого и темного участков (то есть высокого контраста между левой и правой сторонами входного фрагмента). Верхнее рецептивное поле содержит вертикальное ребро: переход от светлой шерсти собаки к фону темной травы. Это отражается высоким уровнем активации (410). Нижнее рецептивное поле не содержит такого ребра, потому что в него попадает только темная трава, и уровень активации (–10) оказывается ближе к 0. Обратите внимание, что вертикальное ребро перехода от темного участка к светлому даст “высокий” отрицательный уровень активации (то есть отрицательное число, далекое от 0).
Это вычисление – умножение каждого значения в рецептивном поле на соответствующий вес и сложение результатов – и называется сверткой. Отсюда и название “сверточная нейронная сеть”. Выше я упомянула, что в сверточной нейронной сети карта активации представляет собой решетку ячеек, соответствующих рецептивным полям по всему изображению. Каждая ячейка карты активации использует одни и те же веса, чтобы вычислить свертку для своего рецептивного поля: представьте, как белый квадрат скользит по всем фрагментам входного изображения[103]. В результате получается карта активации с рис. 12: центральный пиксель рецептивного поля ячейки окрашивается в белый при высоких положительных и отрицательных уровнях активации, но становится темнее при уровнях, близких к 0. Можно видеть, что белые зоны показывают места, где есть вертикальные ребра. Карты 2 и 3 с рис. 11 были созданы аналогичным образом, но их веса помогали выявлять соответственно горизонтальные и наклонные ребра. В совокупности карты активации, составляемые единицами первого слоя, ответственными за обнаружение ребер, обеспечивают сверточную нейронную сеть таким представлением входного изображения, в котором показаны по-разному ориентированные ребра в отдельных фрагментах, что-то похожее на результат работы программы по обнаружению ребер.