Перейти к содержанию

5.2.4.2 Когнитрон и неокогнитрон Кунихико Фукусимы

Материал из Охота на электроовец: Большая Книга Искусственного Интеллекта

Первой нейросетевой архитектурой, воплотившей в себе эти принципы, стал неокогнитрон (Neocognitron) японского учёного Кунихико Фукусимы. В 1970-е гг. Фукусима стал одним из наиболее ярких лидеров японских коннекционистов. Получив в 1958 г. степень бакалавра в области электроники, Фукусима устроился на работу в исследовательскую лабораторию Японской радиовещательной корпорации (NHK), а в 1966 г. защитил диссертацию в области электроники. Исследовательские интересы Фукусимы были сосредоточены на изучении алгоритмов обработки информации в мозге, создании искусственных нейронных сетей для распознавания образов, а также на других исследованиях в области машинного обучения. В 1970-е гг. доктор Фукусима стал автором ряда научных статей и двух монографий: «Физиология и бионика визуальных систем» (1976) и «Нейронные сети и самоорганизация» (1979)[1].

Как несложно догадаться, неокогнитрон не был первой нейросетевой архитектурой, разработанной Фукусимой. Первой стал собственно когнитрон (Cognitron) — самоорганизующаяся многослойная нейронная сеть, описанная в статье 1975 г.

Идея, лежащая в основе когнитрона, была довольно простой. При обучении сети вес синапса, направленного от нейрона x к нейрону y, увеличивается, если x срабатывает в условиях, когда ни один из нейронов в окрестностях y не срабатывает сильнее, чем y. Основываясь на этом принципе, Фукусима описывает алгоритм обучения нейронной сети и предлагает основанную на нём самоорганизующуюся многослойную сеть под названием «когнитрон». В результате обучения каждая ячейка в последнем слое когнитрона начинает выборочно реагировать на определённую структуру стимула или на некоторый признак.

Рассуждая о процессах, происходящих в такой сети в процессе обучения, Фукусима поэтично сравнивает пространственную схему распределения выходов возбуждающих нейронов с горой Фудзи. Вообще работа Фукусимы интересна в данном случае не только и не столько в качестве описания нового метода обучения нейронных сетей без привлечения учителя, но и как исследование, уделяющее особое внимание принципам пространственной организации связей нейронов.

Фукусима провёл ряд компьютерных симуляций когнитрона с использованием цифровой вычислительной машины. В ходе симуляций он моделировал работу когнитрона, состоящего из четырёх слоёв, каждый из которых содержал 12 × 12 = 144 возбуждающих и столько же тормозящих нейронов.

Каждый нейрон мог иметь афферентные (входные) синапсы только от групп нейронов, расположенных в определённой области, называемой «соединимой областью» [connectable area]. В компьютерной симуляции Фукусимы соединимая область каждого из нейронов состояла из квадратной по форме зоны (5 × 5 нейронов) предыдущего слоя, центр которой непосредственно предшествовал данному нейрону. Окрестности нейрона, в пределах которых происходит сравнение уровня его возбуждения с другими нейронами, представляли собой зону в том же слое, имеющую форму ромба с диагональю 5 (включающую 12 соседних нейронов). Также каждый возбуждающий нейрон получал латеральное (боковое) торможение [lateral inhibition] от соседних тормозящих нейронов в пределах квадратной зоны размером 7 × 7 клеток.

В ходе экспериментов Фукусима циклически «предъявлял» когнитрону пять картинок (изображения цифр от 0 до 4) и наблюдал, как нейронная сеть формирует в последнем слое типичные отклики на эти стимулы. Также Фукусима осуществлял «обратное воспроизведение», направляя сигналы через обученную сеть в обратном направлении — от специфического нейрона последнего слоя, реагирующего выборочно на один из стимулов, к первому слою, чтобы наблюдать набор нейронов входного слоя, возбуждение которых приводит к возбуждению выбранного нейрона выходного слоя[2]. В наши дни подобный способ также иногда применяют для поиска специфических визуальных структур, на которые реагирует обученная нейронная сеть.

Неокогнитрон представлял собой развитие идей, лежавших в основе когнитрона. Причём источником вдохновения для Фукусимы стали во многом работы Хьюбела и Визеля, ссылки на работы которых сопровождают рассуждения создателя неокогнитрона о принципах организации синаптических связей нейронной сети. Главной проблемой, которую решал Фукусима, стала способность сети реагировать на стимулы, предъявляемые с различным горизонтальным и вертикальным смещением. Стремясь добиться инвариантного (неизменного) относительно сдвига стимула ответа сети, Фукусима пришёл к выводу, что каждый слой сети можно составить из нейронов, использующих для своего набора входных синапсов один и тот же набор значений (весов). Такие нейроны будут похожи на клетки, которые в экспериментах Хьюбела и Визеля реагировали на предъявление глазу специфических геометрических структур. Вне зависимости от того, в каком именно участке слоя окажется искомая структура, один из нейронов, в соединимой области которого она окажется, среагирует на её появление. При этом реакция нейронов слоя будет единообразной, поскольку, благодаря общему набору входных синаптических весов для каждого из нейронов, их ответ на предъявление одной и той же геометрической структуры на входе будет одинаковым. С математической точки зрения операция, производимая таким слоем, называется операцией взаимной корреляции (или кросс-корреляции), применяемой к двум матрицам: матрице входных сигналов и «ядру» — вышеупомянутому набору значений входных синапсов, одинаковых для всех нейронов слоя (если строго, то это матрица синаптических весов, размерность которой равна размеру соединимой области нейронов, а её элементами являются значения данных синаптических весов). Из-за того что в названии «свёрточная сеть» присутствует слово «свёртка», возникла путаница: многие авторы вполне разумно предполагают, что в основе свёрточных сетей лежит именно операция свёртки. Настоящая свёртка почти идентична кросс-корреляции с той лишь разницей, что при свёртке происходит «переворот» ядра[3], [4]. Далее по тексту в отношении операции кросс-корреляции мы будем использовать термин «свёртка», поскольку он является устоявшимся среди специалистов по глубокому обучению.

Слой, составленный из описанных выше нейронов, в наши дни принято называть свёрточным слоем, а сеть с таким слоем — свёрточной сетью. Благодаря наличию в неокогнитроне такого способа соединения нейронов, по современной классификации его можно считать свёрточной нейронной сетью, хотя сам Фукусима в то время не употреблял этот термин и не использовал понятие свёртки, а сами свёрточные слои неокогнитрона получили у автора название S-слоёв.

По сравнению с полносвязным слоем или слоем когнитрона свёрточный слой описывается сравнительно небольшим числом параметров, что снижает вычислительные затраты на обучение. Фукусима сделал ещё один важный шаг вперёд, когда пришёл к выводу, что свёрточный слой может быть основан не на одном, а на нескольких ядрах свёртки. Каждому из ядер свёртки соответствует отдельная «плоскость» [cell-plane] следующего слоя сети. Выход свёрточного слоя сегодня принято называть «картой признаков» [feature map]. Карта признаков представляет собой трёхмерный массив (или, как модно говорить в наши дни, трёхмерный тензор), составленный из плоскостей для каждого из ядер свёртки (сейчас вместо термина «плоскость» чаще используется термин «канал»).

Если сеть составить только из описанных выше свёрточных слоёв, то каждый следующий слой будет содержать всё большее и большее количество нейронов, ведь входу каждого свёрточного слоя размером w × h нейронов (где w — ширина, а h — высота слоя) будет соответствовать выход размером w × h × d (где d — количество каналов карты признаков). Понимая это, Фукусима использовал также специальные слои сети для понижения размерности данных, так называемые C-слои. Каждый C-нейрон, так же как и S-нейрон, получал сигналы от нейронов в квадратной по форме зоне предыдущего слоя, однако эти соединимые области C-нейронов не пересекались между собой. Далее C-нейрон усреднял сигналы, полученные им на вход, и передавал в следующий слой полученное усреднённое значение. Производимая им операция напоминает понижение размера картинки в графическом редакторе: уменьшая картинку размером 100 × 100 пикселей до размера 50 × 50, графический редактор обычно просто разделяет исходную картинку на квадратики размером 2 × 2 пикселя, усредняет цвет внутри квадратика и этот усреднённый цвет делает цветом соответствующего пикселя результирующего изображения. Сегодня такие слои называют слоями «пулинга» [pooling] или «субдискретизации» [subsampling]. Вместо функции усреднения в наши дни чаще всего используют операцию «максимизирующего пулинга» [max pooling], при котором C-нейрон не усредняет входные значения, а отбирает среди них максимальное, а разновидность пулинга, использованная Фукусимой, сегодня называется «усредняющим пулингом» [mean pooling].

На момент изобретения неокогнитрона Фукусима не был знаком с методом обратного распространения ошибки. Фокус его исследований был сосредоточен на собственном методе обучения сети без учителя — и это, конечно, серьёзно ограничивало возможности новой модели.

Loading comments...
  1. Contributors (1983) / IEEE Transactions on Systems, Man, and Cybernetics, Vol. SMC-13, No. 5, September/October 1983
  2. Fukushima K. (1975). Cognitron: A self-organizing multilayered neural network / Biological Cybernetics, 20(3-4), 121–136 // https://doi.org/10.1007/bf00342633
  3. Draelos R. (2019). Convolution vs. Cross-Correlation / GLASS BOX: Machine Learning and Medicine, by Rachel Lea Ballantyne Draelos, July 26, 2019 // https://glassboxmedicine.com/2019/07/26/convolution-vs-cross-correlation/
  4. Rosebrock A. (2021). Convolution and cross-correlation in neural networks / pyimagesearch, May 14, 2021 // https://www.pyimagesearch.com/2021/05/14/convolution-and-cross-correlation-in-neural-networks/