Когда Ян Лекун в 2003 году перешел на работу в Нью-Йоркский университет, он продолжал развивать свою «видящую» сеть, сейчас известную как сверточная нейронная сеть (рис. 9.2). Она основана на свертке, которую можно рассматривать как скользящий фильтр, пропускающий через себя все изображение и создающий параллельно ему новый информационный слой. Например, фильтр, предназначенный для определения контуров, как тот, о котором говорилось в главе 5, имеет большой выходной сигнал только тогда, когда окно находится над краем верно ориентированного объекта на изображении или так же ориентированной текстуры внутри объекта. Окно на первом слое – лишь небольшой фрагмент изображения, при этом может быть много фильтров и, следовательно, много характеристик, представленных в каждом фрагменте. Фильтры в первом слое, который связан с изображением, похожи на то, что Хьюбел и Визель называли простыми клетками первичной зрительной коры (рис. 9.3)[223]
. Фильтры в более высоких слоях реагируют на еще более сложные характеристики[224].В более ранних версиях сверточной сети выходные данные каждого фильтра пропускались через нелинейную функцию, плавно увеличивающуюся от 0 до 1, называемую сигмоидной (S-образной) функцией, которая подавляла вывод слабо активированных блоков. Окно во втором слое, которое получает входные данные от первого слоя, охватывает бо́льшую область поля зрения, так что после нескольких слоев появляются блоки, получающие входные данные со всего изображения. Этот верхний слой схож с верхушкой иерархии зрительной коры, которая у приматов называется нижневисочной корой и имеет рецептивные поля, покрывающие значительную часть поля зрения. Затем верхний слой подается в слой классификации, который использовался для обучения всей сети, чтобы классифицировать объекты на изображении с помощью обратного распространения ошибки.
Рис. 9.3. Фильтры из первого слоя сверточной сети. Каждый фильтр расположен на определенном участке в поле зрения. Предпочтительные входные сигналы некоторых фильтров ориентированы как простые клетки в зрительной коре. Предпочтительные входные сигналы на втором слое более вытянутые и имеют сложные формы [Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton, ImageNet Classification with Deep Convolutional Neural Networks, Advances in Neural Information Processing Systems 25 (NIPS 2012)]
За прошедшие годы в сверточные сети внесли множество улучшений (см. рис. 9.3). Важным дополнением стало объединение каждого признака по областям, получившее название пулинг (pooling). Оно обеспечивает перенос изображения в неизменном виде и похоже на работу сложных клеток, обнаруженных Хьюбелом и Визелем в первичной зрительной коре (см. рис. 5.5), которые реагируют на линии с одинаковой ориентацией на всем участке поля зрения. Еще одной полезной функцией стала нормализация усиления, регулирующего уровень входных сигналов таким образом, чтобы каждый блок работал в пределах определенного диапазона (в коре это реализовано через подавление обратной связи). Сигмоидная функция выхода также была заменена блоками линейной ректификации (ReLUs), которые имеют нулевой выход до четкого порогового значения и линейно увеличиваются выше него. Элементы ниже порогового значения эффективно исключаются из сети, что ближе к тому, как работает пороговое значение у настоящего нейрона.
С тех пор как сверточные сети были усовершенствованы, они стали больше напоминать архитектуру зрительной коры, какой ее представляли в 1960-х годах. Однако все изменения имели математическое обоснования и эффективность повысили способами, которые способен понять инженер, в то время как в 1960-х годах мы могли только догадываться о функциях простых и сложных клеток или о том, для чего нужно распределенное представление на вершине иерархии. Это пример того, как много могут дать тесные взаимосвязи между биологией и глубоким обучением.
Столкновение глубокого обучения и визуальной иерархии