Сверточная нейронная сеть ( CNN ) — это регуляризованный тип нейронной сети с прямой связью , которая самостоятельно изучает разработку функций посредством оптимизации фильтров (или ядра). Исчезающие и взрывные градиенты, наблюдаемые во время обратного распространения ошибки в более ранних нейронных сетях, предотвращаются за счет использования регуляризованных весов для меньшего количества соединений. [1] [2] Например, для каждого нейрона в полносвязном слое потребуется 10 000 весов для обработки изображения размером 100 × 100 пикселей. Однако, применяя ядра каскадной свертки (или взаимной корреляции), [3] [4] для обработки плиток размером 5x5 требуется всего 25 нейронов. [5] [6] Функции более высокого уровня извлекаются из более широких контекстных окон по сравнению с функциями более низкого уровня.
У них есть приложения:
CNN также известны как инвариантные к сдвигу или инвариантные к пространству искусственные нейронные сети ( SIANN ), основанные на архитектуре с общим весом ядер или фильтров свертки, которые скользят вдоль входных признаков и обеспечивают трансляционно- эквивариантные ответы, известные как карты признаков. [12] [13] Как ни странно, большинство сверточных нейронных сетей не инвариантны к трансляции из-за операции понижения дискретизации, которую они применяют к входным данным. [14]
Нейронные сети прямого распространения обычно представляют собой полносвязные сети, то есть каждый нейрон в одном слое связан со всеми нейронами в следующем слое . «Полная связность» этих сетей делает их склонными к переобучению данных. Типичные способы регуляризации или предотвращения переобучения включают в себя: наложение штрафов на параметры во время обучения (например, снижение веса) или обрезку связности (пропущенные соединения, выпадение и т. д.). Надежные наборы данных также увеличивают вероятность того, что CNN изучат обобщенные принципы, которые характеризуют данный набор данных, а не предвзятость малонаселенного набора. [15]
Сверточные сети были вдохновлены биологическими процессами [16] [17] [18] [19] в том смысле , что структура связей между нейронами напоминает организацию зрительной коры головного мозга животных . Отдельные кортикальные нейроны реагируют на стимулы только в ограниченной области поля зрения , известной как рецептивное поле . Рецептивные поля разных нейронов частично перекрываются и охватывают все поле зрения.
CNN используют относительно небольшую предварительную обработку по сравнению с другими алгоритмами классификации изображений . Это означает, что сеть учится оптимизировать фильтры (или ядра) посредством автоматического обучения, тогда как в традиционных алгоритмах эти фильтры разрабатываются вручную . Эта независимость от предварительных знаний и вмешательства человека в извлечение признаков является основным преимуществом. [ кому? ]
Сверточная нейронная сеть состоит из входного слоя, скрытых слоев и выходного слоя. В сверточной нейронной сети скрытые слои включают один или несколько слоев, выполняющих свертки. Обычно это включает в себя слой, который выполняет скалярное произведение ядра свертки с входной матрицей слоя. Этот продукт обычно является внутренним продуктом Фробениуса , а его функция активации обычно ReLU . Когда ядро свертки скользит по входной матрице слоя, операция свертки генерирует карту объектов, которая, в свою очередь, вносит вклад во входные данные следующего слоя. За этим следуют другие уровни, такие как слои пула, полностью связанные слои и слои нормализации. Здесь следует отметить, насколько близки сверточные нейронные сети к согласованному фильтру . [20]
В CNN входные данные представляют собой тензор формы:
(количество входов) × (высота входа) × (ширина входа) × (входные каналы )
После прохождения сверточного слоя изображение абстрагируется на карту объектов, также называемую картой активации, с формой:
(количество входов) × (высота карты объектов) × (ширина карты объектов) × ( каналы карты функций ).
Сверточные слои свертывают входные данные и передают результат на следующий слой. Это похоже на реакцию нейрона зрительной коры на определенный стимул. [21] Каждый сверточный нейрон обрабатывает данные только для своего рецептивного поля .
Хотя полностью связанные нейронные сети прямого распространения могут использоваться для изучения функций и классификации данных, эта архитектура, как правило, непрактична для больших входных данных (например, изображений с высоким разрешением), для которых потребуется огромное количество нейронов, поскольку каждый пиксель является значимым входным признаком. Полносвязный слой для изображения размером 100×100 имеет 10 000 весов для каждого нейрона второго слоя. Свертка уменьшает количество свободных параметров, позволяя сделать сеть более глубокой. [5] Например, для использования области мозаики 5 × 5, каждая из которых имеет одинаковый общий вес, требуется всего 25 нейронов. Использование регуляризованных весов для меньшего количества параметров позволяет избежать проблем с исчезающими и взрывными градиентами, которые наблюдались во время обратного распространения ошибки в более ранних нейронных сетях. [1] [2]
Для ускорения обработки стандартные сверточные слои можно заменить сверточными слоями с разделением по глубине, [22] которые основаны на глубинной свертке, за которой следует точечная свертка. Глубинная свертка — это пространственная свертка, применяемая независимо к каждому каналу входного тензора, тогда как точечная свертка — это стандартная свертка, ограниченная использованием ядер.
Сверточные сети могут включать в себя локальные и/или глобальные уровни пула наряду с традиционными сверточными уровнями. Слои объединения уменьшают размеры данных за счет объединения выходных данных кластеров нейронов одного слоя в один нейрон следующего слоя. Локальный пул объединяет небольшие кластеры, обычно используются тайлы размером 2 × 2. Глобальное объединение действует на все нейроны карты объектов. [23] [24] Существует два распространенных типа объединения: максимальное и среднее. При максимальном пуле используется максимальное значение каждого локального кластера нейронов на карте объектов, [25] [26], тогда как при среднем пуле принимается среднее значение.
Полностью связанные слои соединяют каждый нейрон одного слоя с каждым нейроном другого слоя. Это то же самое, что и традиционная многослойная нейронная сеть перцептрона (MLP). Сплющенная матрица проходит через полностью связный слой для классификации изображений.
В нейронных сетях каждый нейрон получает входные данные из некоторого количества мест предыдущего слоя. В сверточном слое каждый нейрон получает входные данные только из ограниченной области предыдущего слоя, называемой рецептивным полем нейрона . Обычно область представляет собой квадрат (например, 5 на 5 нейронов). Тогда как в полносвязном слое рецептивное поле — это весь предыдущий слой . Таким образом, в каждом сверточном слое каждый нейрон получает входные данные из большей области входных данных, чем предыдущие слои. Это происходит из-за многократного применения свертки, которая учитывает значение пикселя, а также окружающих его пикселей. При использовании расширенных слоев количество пикселей в рецептивном поле остается постоянным, однако поле становится более разреженным, поскольку его размеры растут при объединении эффекта нескольких слоев.
Чтобы манипулировать размером рецептивного поля по желанию, существует несколько альтернатив стандартному сверточному слою. Например, атральная или расширенная свертка [27] [28] расширяет размер рецептивного поля без увеличения количества параметров за счет чередования видимых и слепых областей. Более того, один расширенный сверточный слой может содержать фильтры с несколькими коэффициентами расширения, [29] таким образом, имея переменный размер рецептивного поля.
Каждый нейрон в нейронной сети вычисляет выходное значение, применяя определенную функцию к входным значениям, полученным из рецептивного поля на предыдущем слое. Функция, которая применяется к входным значениям, определяется вектором весов и смещением (обычно действительными числами). Обучение состоит из итеративной корректировки этих предубеждений и весов.
Векторы весов и смещений называются фильтрами и представляют собой определенные характеристики входных данных (например, определенную форму). Отличительной особенностью CNN является то, что многие нейроны могут использовать один и тот же фильтр. Это уменьшает объем памяти , поскольку для всех рецептивных полей, которые используют этот фильтр, используется одно смещение и один вектор весов, в отличие от того, что каждое рецептивное поле имеет свое собственное смещение и векторное взвешивание. [30]
CNN часто сравнивают с тем, как мозг обрабатывает зрение в живых организмах . [31] [32]
Работа Хьюбела и Визеля в 1950-х и 1960-х годах показала, что зрительная кора кошки содержит нейроны, которые индивидуально реагируют на небольшие области зрительного поля . При условии, что глаза неподвижны, область зрительного пространства, в которой зрительные стимулы влияют на срабатывание одного нейрона, называется его рецептивным полем . [33] Соседние клетки имеют схожие и перекрывающиеся рецептивные поля. [31] Размер и расположение рецептивного поля систематически варьируются по всей коре, образуя полную карту зрительного пространства. [31] [ нужна ссылка ] Кора в каждом полушарии представляет контралатеральное поле зрения . [ нужна цитата ]
Их статья 1968 года определила два основных типа зрительных клеток в мозге: [17]
Хьюбел и Визель также предложили каскадную модель этих двух типов клеток для использования в задачах распознавания образов. [34] [33]
« Неокогнитрон » [16] был представлен Кунихико Фукусимой в 1980 году. [18] [26] [35] Он был вдохновлен вышеупомянутой работой Хьюбела и Визеля. Неокогнитрон представил два основных типа слоев в CNN:
В 1969 году Кунихико Фукусима также представил функцию активации ReLU (выпрямленная линейная единица) . [36] [37] Выпрямитель стал самой популярной функцией активации для CNN и глубоких нейронных сетей в целом. [38]
В варианте неокогнитрона, называемом кресцептроном, вместо использования пространственного усреднения Фукусимы Дж. Венг и др. в 1993 году был представлен метод под названием max-pooling, при котором модуль понижающей дискретизации вычисляет максимальное количество активаций модулей в своем патче. [39] Макс-пулинг часто используется в современных CNN. [40]
На протяжении десятилетий для тренировки весов неокогнитрона было предложено несколько алгоритмов обучения с учителем и без него. [16] Однако сегодня архитектура CNN обычно обучается посредством обратного распространения ошибки .
Неокогнитрон — это первая CNN, которая требует , чтобы единицы, расположенные в нескольких позициях сети, имели общий вес.
Сверточные нейронные сети были представлены на семинаре по обработке нейронной информации в 1987 году, автоматически анализируя изменяющиеся во времени сигналы путем замены выученного умножения на свертку во времени, и были продемонстрированы для распознавания речи. [41]
Нейронная сеть с временной задержкой (TDNN) была представлена в 1987 году Алексом Вайбелем и др. и была одной из первых сверточных сетей, поскольку она достигла сдвиговой инвариантности. [42] Это было достигнуто за счет использования распределения веса в сочетании с тренировкой обратного распространения ошибки . [43] Таким образом, хотя он также использует пирамидальную структуру, как в неокогнитроне, он выполняет глобальную оптимизацию весов вместо локальной. [42]
TDNN — это сверточные сети, которые имеют общие веса во временном измерении. [44] Они позволяют обрабатывать речевые сигналы независимо от времени. В 1990 году Хэмпшир и Вайбель представили вариант, выполняющий двумерную свертку. [45] Поскольку эти TDNN работали на спектрограммах, полученная система распознавания фонем была инвариантной как к сдвигам во времени, так и к частоте. Это вдохновило на инвариантность перевода при обработке изображений с помощью CNN. [43] Мозаичное распределение выходов нейронов может охватывать временные этапы. [46]
TDNN сейчас [ когда? ] достичь наилучшей производительности в распознавании речи на большом расстоянии. [47]
В 1990 году Ямагути и др. представил концепцию максимального пула, который представляет собой фиксированную операцию фильтрации, которая вычисляет и распространяет максимальное значение данного региона. Они сделали это, объединив TDNN с максимальным пулом, чтобы реализовать независимую от говорящего систему распознавания изолированных слов. [25] В своей системе они использовали несколько TDNN на слово, по одному на каждый слог . Результаты каждого TDNN по входному сигналу объединялись с использованием максимального пула, а выходные данные слоев пула затем передавались в сети, выполняющие фактическую классификацию слов.
Система распознавания рукописных номеров почтовых индексов [48] включала свертки, в которых коэффициенты ядра тщательно разрабатывались вручную. [49]
Янн ЛеКун и др. (1989) [49] использовали обратное распространение ошибки для изучения коэффициентов ядра свертки непосредственно по изображениям рукописных чисел. Таким образом, обучение было полностью автоматическим, работало лучше, чем ручное проектирование коэффициентов, и подходило для более широкого спектра задач распознавания изображений и типов изображений.
Вэй Чжан и др. (1988) [12] [13] использовали обратное распространение ошибки для обучения ядер свертки CNN для распознавания алфавитов. Модель называлась Shift-Invariant Artificial Neural Network (SIANN) до того, как позже, в начале 1990-х годов, было придумано название CNN. Вэй Чжан и др. также применил ту же самую CNN без последнего полносвязного слоя для сегментации объектов медицинских изображений (1991) [50] и обнаружения рака молочной железы на маммограммах (1994). [51]
Этот подход стал основой современного компьютерного зрения .
LeNet-5, новаторская 7-уровневая сверточная сеть, разработанная LeCun et al. в 1995 году [52] , классифицирующий цифры, был применен несколькими банками для распознавания рукописных чисел на чеках ( британский английский : checks ), оцифрованных в изображениях размером 32x32 пикселя. Способность обрабатывать изображения с более высоким разрешением требует все большего количества слоев сверточных нейронных сетей, поэтому этот метод ограничен доступностью вычислительных ресурсов.
Нейронная сеть, инвариантная к сдвигу, была предложена Вэй Чжан и др. для распознавания символов изображения в 1988 году. [12] [13] Это модифицированный неокогнитрон, сохраняющий только сверточные взаимосвязи между слоями признаков изображения и последним полностью связанным слоем. Модель была обучена с помощью обратного распространения ошибки. Алгоритм обучения был дополнительно усовершенствован в 1991 году [53] для улучшения его способности к обобщению. Архитектура модели была модифицирована путем удаления последнего полностью связанного слоя и применена для сегментации медицинских изображений (1991 г.) [50] и автоматического обнаружения рака молочной железы на маммограммах (1994 г.) . [51]
Другая конструкция, основанная на свертке, была предложена в 1988 году [54] для применения для разложения одномерных свернутых сигналов электромиографии посредством обратной свертки. Эта конструкция была изменена в 1989 году на другие конструкции, основанные на деконволюции. [55] [56]
Архитектура сверточных нейронных сетей с прямой связью была расширена в пирамиде нейронной абстракции [57] за счет боковых связей и связей обратной связи. Получающаяся в результате рекуррентная сверточная сеть позволяет гибко включать контекстную информацию для итеративного разрешения локальных неоднозначностей. В отличие от предыдущих моделей, выходные данные, подобные изображениям, были созданы с самым высоким разрешением, например, для задач семантической сегментации, реконструкции изображения и локализации объектов.
Хотя CNN были изобретены в 1980-х годах, их прорыв в 2000-х потребовал быстрого внедрения графических процессоров (GPU).
В 2004 году К.С. Ох и К. Юнг показали, что стандартные нейронные сети можно значительно ускорить на графических процессорах. Их реализация была в 20 раз быстрее, чем эквивалентная реализация на CPU . [58] [40] В 2005 году в другой статье также подчеркивалась ценность GPGPU для машинного обучения . [59]
Первая реализация CNN на графическом процессоре была описана в 2006 году К. Челлапилла и др. Их реализация была в 4 раза быстрее, чем эквивалентная реализация на ЦП. [60] В последующих работах также использовались графические процессоры, первоначально для других типов нейронных сетей (отличных от CNN), особенно для неконтролируемых нейронных сетей. [61] [62] [63] [64]
В 2010 году Дэн Чиресан и др. в IDSIA показали, что даже глубокие стандартные нейронные сети с множеством слоев можно быстро обучить на графическом процессоре с помощью контролируемого обучения с помощью старого метода, известного как обратное распространение ошибки . Их сеть превзошла предыдущие методы машинного обучения в тесте рукописных цифр MNIST . [65] В 2011 году они распространили этот подход на основе графического процессора на CNN, добившись коэффициента ускорения 60 и получив впечатляющие результаты. [23] В 2011 году они использовали такие CNN на графическом процессоре, чтобы выиграть конкурс по распознаванию изображений, где они впервые достигли сверхчеловеческой производительности. [66] В период с 15 мая 2011 г. по 30 сентября 2012 г. их телеканалы CNN выиграли не менее четырех имиджевых конкурсов. [67] [40] В 2012 году они также значительно улучшили лучшую в литературе производительность для нескольких баз данных изображений , включая базу данных MNIST , базу данных NORB, набор данных HWDB1.0 (китайские иероглифы) и набор данных CIFAR10 (набор данных 60 000 изображений размером 32x32 с маркировкой RGB ). [26]
Впоследствии аналогичный CNN на базе графического процессора, разработанный Алексом Крижевским и др. выиграл конкурс ImageNet Large Scale Visual Recognition Challenge 2012. [68] Очень глубокая CNN с более чем 100 слоями от Microsoft выиграла конкурс ImageNet 2015. [69]
По сравнению с обучением CNN с использованием графических процессоров , сопроцессору Intel Xeon Phi уделялось мало внимания . [70] Заметным достижением является метод распараллеливания для обучения сверточных нейронных сетей на процессоре Intel Xeon Phi, получивший название Controlled Hogwild с произвольным порядком синхронизации (CHAOS). [71] CHAOS использует параллелизм на уровне потоков и SIMD , доступный в Intel Xeon Phi.
Раньше для распознавания изображений использовались традиционные модели многослойного перцептрона (MLP). [ нужен пример ] Однако полная связность между узлами вызывала проклятие размерности и была вычислительно неразрешима для изображений с более высоким разрешением. Изображение размером 1000×1000 пикселей с цветовыми каналами RGB имеет 3 миллиона весов на полностью связанный нейрон, что слишком много для эффективной обработки в масштабе.
Например, в CIFAR-10 изображения имеют размер всего 32×32×3 (32 в ширину, 32 в высоту, 3 цветовых канала), поэтому один полностью связанный нейрон в первом скрытом слое обычной нейронной сети будет иметь 32* 32*3 = 3072 веса. Однако изображение размером 200×200 приведет к тому, что нейроны будут иметь веса 200*200*3 = 120 000.
Кроме того, такая сетевая архитектура не учитывает пространственную структуру данных, обрабатывая входные пиксели, находящиеся далеко друг от друга, так же, как и пиксели, находящиеся близко друг к другу. При этом игнорируется локальность ссылки в данных с топологией сетки (например, изображениях) как в вычислительном, так и в семантическом плане. Таким образом, полная связность нейронов является расточительной для таких целей, как распознавание изображений, в которых доминируют пространственно-локальные входные шаблоны.
Сверточные нейронные сети — это варианты многослойных перцептронов, предназначенные для имитации поведения зрительной коры . Эти модели смягчают проблемы, связанные с архитектурой MLP, используя сильную пространственно-локальную корреляцию, присутствующую в естественных изображениях. В отличие от MLP, CNN имеют следующие отличительные особенности:
Вместе эти свойства позволяют CNN добиться лучшего обобщения проблем со зрением . Распределение веса значительно сокращает количество изучаемых свободных параметров , тем самым снижая требования к памяти для работы сети и позволяя обучать более крупные и мощные сети.
Архитектура CNN формируется стеком отдельных слоев, которые преобразуют входной объем в выходной объем (например, сохраняя оценки классов) с помощью дифференцируемой функции. Обычно используются несколько различных типов слоев. Они обсуждаются ниже.
Сверточный слой является основным строительным блоком CNN. Параметры слоя состоят из набора обучаемых фильтров (или ядер ), которые имеют небольшое восприимчивое поле, но простираются на всю глубину входного объема. Во время прямого прохода каждый фильтр свертывается по ширине и высоте входного объема, вычисляя скалярное произведение между записями фильтра и входными данными, создавая двумерную карту активации этого фильтра. В результате сеть изучает фильтры, которые активируются, когда она обнаруживает какой-то конкретный тип объекта в некоторой пространственной позиции во входных данных. [74] [№ 1]
Сложение карт активации для всех фильтров по измерению глубины формирует полный выходной объем слоя свертки. Таким образом, каждую запись в выходном объеме можно интерпретировать как выходной сигнал нейрона, который просматривает небольшую область входных данных. Каждая запись в карте активации использует один и тот же набор параметров, которые определяют фильтр.
Самоконтролируемое обучение было адаптировано для использования в сверточных слоях за счет использования разреженных патчей с высоким коэффициентом маски и слоя нормализации глобального ответа. [75]
При работе с многомерными входными данными, такими как изображения, непрактично соединять нейроны со всеми нейронами в предыдущем томе, поскольку такая сетевая архитектура не учитывает пространственную структуру данных. Сверточные сети используют пространственно-локальную корреляцию, обеспечивая разреженный шаблон локальной связи между нейронами соседних слоев: каждый нейрон связан только с небольшой областью входного объема.
Степень этой связи определяется гиперпараметром, называемым рецептивным полем нейрона. Связи локальны в пространстве (по ширине и высоте), но всегда распространяются по всей глубине входного объема. Такая архитектура гарантирует, что изученные ( британский английский : выученные ) фильтры производят самый сильный ответ на пространственно-локальный входной шаблон.
Три гиперпараметра управляют размером выходного объема сверточного слоя: глубина, шаг и размер заполнения:
Пространственный размер выходного тома является функцией размера входного тома , размера поля ядра нейронов сверточного слоя, шага и количества заполнения нулями на границе. Тогда количество нейронов, «помещающихся» в данном объеме, равно:
Если это число не является целым числом , то шаги неверны, и нейроны не могут быть выложены плиткой, чтобы симметрично разместиться во входном объеме . В общем, установка заполнения нулями при шаге гарантирует, что входной и выходной объемы будут иметь одинаковый пространственный размер. Однако не всегда полностью необходимо задействовать все нейроны предыдущего слоя. Например, разработчик нейронной сети может решить использовать только часть заполнения.
Схема совместного использования параметров используется в сверточных слоях для управления количеством свободных параметров. Он основан на предположении, что если объект-заплатку полезно вычислить в какой-то пространственной позиции, то его также полезно вычислить и в других позициях. Обозначая одиночный двумерный срез глубины как срез глубины , нейроны в каждом срезе глубины ограничены использованием одних и тех же весов и смещений.
Поскольку все нейроны в одном срезе глубины имеют одни и те же параметры, прямой проход в каждом срезе глубины сверточного слоя можно вычислить как свертку весов нейронов с входным объемом. [nb 2] Поэтому наборы весов принято называть фильтром (или ядром ) , который свернут с входными данными. Результатом этой свертки является карта активации , а набор карт активации для каждого отдельного фильтра складываются вместе по измерению глубины для получения выходного объема. Совместное использование параметров способствует трансляционной инвариантности архитектуры CNN. [14]
Иногда предположение о совместном использовании параметров может не иметь смысла. Это особенно актуально, когда входные изображения в CNN имеют определенную центрированную структуру; для которого мы ожидаем, что в разных пространственных точках будут изучены совершенно разные функции. Одним из практических примеров является случай, когда входными данными являются лица, которые были центрированы на изображении: мы могли бы ожидать, что в разных частях изображения будут изучены разные особенности глаз или волос. В этом случае принято ослаблять схему совместного использования параметров и вместо этого просто называть уровень «локально подключенным уровнем».
Другой важной концепцией CNN является объединение, которое представляет собой форму нелинейной понижающей выборки . Существует несколько нелинейных функций для реализации пула, наиболее распространенной из которых является максимальный пул . Он разбивает входное изображение на набор прямоугольников и для каждой такой подобласти выводит максимум.
Интуитивно понятно, что точное местоположение объекта менее важно, чем его приблизительное расположение относительно других объектов. В этом заключается идея использования пула в сверточных нейронных сетях. Уровень объединения служит для постепенного уменьшения пространственного размера представления, уменьшения количества параметров, объема памяти и объема вычислений в сети и, следовательно, для контроля переобучения . Это известно как понижающая выборка. Обычно в архитектуре CNN периодически вставляют слой пула между последовательными сверточными уровнями (за каждым из которых обычно следует функция активации, такая как уровень ReLU). [74] : 460–461 Хотя слои объединения способствуют локальной трансляционной инвариантности, они не обеспечивают глобальную трансляционную инвариантность в CNN, если не используется форма глобального объединения. [14] [73] Слой объединения обычно работает независимо на каждой глубине или срезе входных данных и изменяет их размеры в пространстве. Очень распространенной формой максимального пула является слой с фильтрами размера 2×2, применяемыми с шагом 2, который субдискретизирует каждый срез глубины во входных данных на 2 по ширине и высоте, отбрасывая 75% активаций:
В дополнение к максимальному объединению, объединяющие единицы могут использовать другие функции, такие как среднее объединение или объединение ℓ 2 -нормы . Исторически часто использовалось среднее объединение, но в последнее время оно вышло из употребления по сравнению с максимальным объединением, которое на практике обычно работает лучше. [77]
Из-за эффектов быстрого пространственного уменьшения размера представления [ какой? ] в последнее время наблюдается тенденция к использованию фильтров меньшего размера [78] или полному отказу от слоев пула. [79]
Объединение « области интереса » (также известное как объединение областей интереса) — это вариант максимального объединения, при котором выходной размер фиксирован, а входной прямоугольник является параметром. [80]
Пул — это метод понижающей дискретизации и важный компонент сверточных нейронных сетей для обнаружения объектов на основе архитектуры Fast R-CNN [81] .
Уровень операций CMP выполняет операцию MP вдоль стороны канала среди соответствующих позиций последовательных карт признаков с целью устранения избыточной информации. CMP позволяет собрать важные функции в меньшем количестве каналов, что важно для более детальной классификации изображений, требующей большего количества различающих функций. Между тем, еще одним преимуществом операции CMP является уменьшение количества каналов карт объектов перед их подключением к первому полносвязному (FC) уровню. Подобно операции MP, мы обозначаем входные карты признаков и выходные карты признаков слоя CMP как F ∈ R(C×M×N) и C ∈ R(c×M×N) соответственно, где C и c — это номера каналов входных и выходных карт объектов, M и N — это ширина и высота карт объектов соответственно. Обратите внимание, что операция CMP изменяет только номер канала карт объектов. Ширина и высота карт объектов не изменяются, в отличие от операции MP. [82]
ReLU — это аббревиатура выпрямленной линейной единицы , введенная Кунихико Фукусимой в 1969 году. [36] [37] ReLU применяет ненасыщающую функцию активации . [68] Он эффективно удаляет отрицательные значения из карты активации, устанавливая их на ноль. [83] Это вносит нелинейность в функцию принятия решения и в сеть в целом, не затрагивая восприимчивые поля сверточных слоев. В 2011 году Ксавье Глоро, Антуан Бордес и Йошуа Бенджио обнаружили, что ReLU позволяет лучше обучать более глубокие сети [84] по сравнению с широко используемыми функциями активации до 2011 года.
Для увеличения нелинейности также можно использовать другие функции , например насыщающий гиперболический тангенс и сигмовидную функцию . ReLU часто предпочтительнее других функций, поскольку он обучает нейронную сеть в несколько раз быстрее без значительного снижения точности обобщения . [85]
После нескольких сверточных слоев и слоев максимального пула окончательная классификация выполняется через полностью связанные слои. Нейроны в полностью связном слое имеют связи со всеми активациями предыдущего слоя, как это видно в обычных (несверточных) искусственных нейронных сетях . Таким образом, их активации можно вычислить как аффинное преобразование с умножением матрицы , за которым следует смещение смещения ( векторное сложение изученного или фиксированного термина смещения).
«Уровень потерь» или « функция потерь » определяет, как обучение наказывает за отклонение между прогнозируемыми выходными данными сети и истинными метками данных (во время контролируемого обучения). В зависимости от конкретной задачи могут использоваться различные функции потерь .
Функция потерь Softmax используется для прогнозирования одного класса из K взаимоисключающих классов. [nb 3] Сигмоидальная кросс-энтропийная потеря используется для прогнозирования K независимых значений вероятности в . Евклидова потеря используется для регрессии к меткам с действительным значением .
Гиперпараметры — это различные настройки, которые используются для управления процессом обучения. CNN используют больше гиперпараметров , чем стандартный многослойный перцептрон (MLP).
Ядро — это количество пикселей, обработанных вместе. Обычно это выражается в размерах ядра, например, 2x2 или 3x3.
Заполнение — это добавление (обычно) пикселей со значением 0 на границах изображения. Это делается для того, чтобы граничные пиксели не были занижены (не потеряны) в выходных данных, поскольку обычно они участвуют только в одном экземпляре рецептивного поля. Применяемое дополнение обычно на единицу меньше соответствующего размера ядра. Например, сверточный слой, использующий ядра 3x3, получит 2-пиксельную площадку, то есть по 1 пикселю с каждой стороны изображения. [86]
Шаг — это количество пикселей, на которое окно анализа перемещается на каждой итерации. Шаг 2 означает, что каждое ядро смещено на 2 пикселя относительно своего предшественника.
Поскольку размер карты объектов уменьшается с глубиной, слои рядом с входным слоем, как правило, имеют меньше фильтров, а более высокие слои могут иметь больше. Чтобы уравнять вычисления на каждом слое, произведение значений признаков v a на положение пикселя поддерживается примерно постоянным на всех слоях. Для сохранения большего количества информации о входных данных потребуется, чтобы общее количество активаций (количество карт объектов, умноженное на количество позиций пикселей) не уменьшалось от одного слоя к другому.
Количество карт признаков напрямую влияет на емкость и зависит от количества доступных примеров и сложности задачи.
Общие размеры фильтров, встречающиеся в литературе, сильно различаются и обычно выбираются на основе набора данных.
Задача состоит в том, чтобы найти правильный уровень детализации, чтобы создавать абстракции в нужном масштабе с учетом конкретного набора данных и без переобучения .
Обычно используется максимальное объединение , часто с размером 2x2. Это означает, что входные данные значительно уменьшаются , что снижает затраты на обработку.
Большие объемы входных данных могут потребовать объединения 4×4 на нижних уровнях. [87] Увеличение пула уменьшает размерность сигнала и может привести к неприемлемой потере информации . Зачастую лучше всего работают непересекающиеся окна пула. [77]
Расширение предполагает игнорирование пикселей внутри ядра. Это потенциально уменьшает обработку/память без значительной потери сигнала. Расширение 2 в ядре 3x3 расширяет ядро до 5x5, при этом все еще обрабатывается 9 (равномерно расположенных) пикселей. Соответственно, расширение 4 расширяет ядро до 9x9. [88] [89]
Обычно предполагается, что CNN инвариантны к сдвигам входных данных. Слои свертки или объединения внутри CNN, шаг которых не превышает единицы, действительно эквивалентны переводам входных данных. [73] Однако слои с шагом больше единицы игнорируют теорему выборки Найквиста-Шеннона и могут привести к сглаживанию входного сигнала . [73] Хотя в принципе CNN способны реализовывать фильтры сглаживания, наблюдалось что на практике этого не происходит [90] и приводят к моделям, неэквивариантным переводам. Более того, если CNN использует полносвязные слои, трансляционная эквивалентность не подразумевает трансляционную инвариантность, поскольку полносвязные слои не инвариантны к сдвигам входных данных. [91] [14] Одним из решений для обеспечения полной трансляционной инвариантности является отказ от понижающей выборки во всей сети и применение глобального среднего пула на последнем уровне. [73] Кроме того, было предложено несколько других частичных решений, таких как сглаживание перед операциями понижения дискретизации, [92] сети пространственных преобразователей, [93] увеличение данных , субдискретизация в сочетании с объединением в пул, [14] и капсульные нейронные сети . [94]
Точность окончательной модели основана на части набора данных, выделенной в начале и часто называемой тестовым набором. В других случаях применяются такие методы, как k -кратная перекрестная проверка . Другие стратегии включают использование конформного предсказания . [95] [96]
Регуляризация — это процесс введения дополнительной информации для решения некорректной задачи или предотвращения переобучения . CNN используют различные типы регуляризации.
Поскольку полносвязный слой занимает большую часть параметров, он склонен к переобучению. Одним из методов уменьшения переоснащения является dropout , введенный в 2014 году. [97] [98] На каждом этапе обучения отдельные узлы либо «выпадают» из сети (игнорируются) с вероятностью, либо сохраняются с вероятностью , так что сокращенная сеть левый; входящие и исходящие ребра к выпавшему узлу также удаляются. На этом этапе на данных обучается только сокращенная сеть. Удаленные узлы затем повторно вставляются в сеть с их первоначальными весами.
На этапах обучения обычно составляет 0,5; для входных узлов оно обычно намного выше, поскольку информация напрямую теряется, когда входные узлы игнорируются.
Во время тестирования после завершения обучения нам в идеале хотелось бы найти выборочное среднее значение всех возможных исключенных сетей; к сожалению, это невозможно для больших значений . Однако мы можем найти приближение, используя полную сеть с выходными данными каждого узла, взвешенными с коэффициентом , поэтому ожидаемое значение выходных данных любого узла такое же, как и на этапах обучения. Это самый большой вклад метода отсева: хотя он эффективно генерирует нейронные сети и, как таковой, позволяет комбинировать модели, во время тестирования необходимо тестировать только одну сеть.
Избегая обучения всех узлов на всех обучающих данных, отсев уменьшает переобучение. Метод также значительно повышает скорость обучения. Это делает комбинацию моделей практичной даже для глубоких нейронных сетей . Кажется, что этот метод уменьшает взаимодействие узлов, что приводит к тому, что они изучают более надежные функции [ необходимы пояснения ] , которые лучше обобщаются на новые данные.
DropConnect — это обобщение исключения, при котором с вероятностью может быть отброшено каждое соединение, а не каждый выходной блок . Таким образом, каждый блок получает входные данные от случайного подмножества блоков на предыдущем уровне. [99]
DropConnect аналогичен исключению, поскольку он вводит динамическую разреженность в модели, но отличается тем, что разреженность связана с весами, а не с выходными векторами слоя. Другими словами, полностью связанный уровень с DropConnect становится разреженным слоем, в котором соединения выбираются случайным образом на этапе обучения.
Основным недостатком Dropout является то, что он не дает тех же преимуществ для сверточных слоев, где нейроны не полностью связаны.
Еще до Dropout, в 2013 году, метод, называемый стохастическим объединением, [100] традиционные детерминированные операции объединения были заменены стохастической процедурой, где активация в каждой области объединения выбирается случайным образом в соответствии с полиномиальным распределением , заданным действиями в объединении. область, край. Этот подход не содержит гиперпараметров и может сочетаться с другими подходами к регуляризации, такими как исключение и увеличение данных .
Альтернативный взгляд на стохастическое объединение состоит в том, что оно эквивалентно стандартному максимальному объединению, но со многими копиями входного изображения, каждая из которых имеет небольшие локальные деформации . Это похоже на явные упругие деформации входных изображений [101] , что обеспечивает превосходную производительность при работе с набором данных MNIST . [101] Использование стохастического объединения в многослойной модели приводит к экспоненциальному числу деформаций, поскольку выборка в более высоких слоях не зависит от выборки в нижних слоях.
Поскольку степень переобучения модели определяется как ее мощностью, так и объемом обучения, которое она получает, предоставление сверточной сети большего количества обучающих примеров может уменьшить переобучение. Поскольку доступных данных для обучения часто недостаточно, особенно если учесть, что некоторую часть следует сохранить для последующего тестирования, есть два подхода: либо сгенерировать новые данные с нуля (если это возможно), либо изменить существующие данные для создания новых. Последний используется с середины 1990-х годов. [52] Например, входные изображения можно обрезать, вращать или масштабировать для создания новых примеров с теми же метками, что и исходный обучающий набор. [102]
Один из самых простых способов предотвратить переобучение сети — просто остановить обучение до того, как произойдет переобучение. Недостатком этого является то, что процесс обучения останавливается.
Еще один простой способ предотвратить переоснащение — ограничить количество параметров, обычно путем ограничения количества скрытых модулей в каждом слое или ограничения глубины сети. Для сверточных сетей размер фильтра также влияет на количество параметров. Ограничение количества параметров напрямую ограничивает прогнозирующую способность сети, уменьшая сложность функции, которую она может выполнять с данными, и, таким образом, ограничивает количество переобучения. Это эквивалентно « нулевой норме ».
Простая форма добавленного регуляризатора — это затухание веса, которое просто добавляет дополнительную ошибку, пропорциональную сумме весов ( норма L1 ) или квадрату величины ( норма L2 ) весового вектора, к ошибке в каждом узле. Уровень приемлемой сложности модели можно снизить, увеличив константу пропорциональности (гиперпараметр «альфа»), тем самым увеличив штраф за большие весовые векторы.
Регуляризация L2 — наиболее распространенная форма регуляризации. Это можно реализовать путем штрафования квадратов всех параметров непосредственно в цели. Регуляризация L2 имеет интуитивную интерпретацию, заключающуюся в строгом наказании пиковых весовых векторов и предпочтении диффузных весовых векторов. Из-за мультипликативного взаимодействия между весами и входными данными это имеет полезное свойство, побуждающее сеть использовать все свои входные данные понемногу, а не часто использовать некоторые из своих входных данных.
Регуляризация L1 также распространена. Это делает весовые векторы разреженными во время оптимизации. Другими словами, нейроны с регуляризацией L1 в конечном итоге используют только разреженное подмножество своих наиболее важных входных данных и становятся почти инвариантными к зашумленным входным сигналам. Регуляризацию L1 и L2 можно комбинировать; это называется эластичной сетевой регуляризацией .
Другая форма регуляризации — установить абсолютную верхнюю границу величины весового вектора для каждого нейрона и использовать прогнозируемый градиентный спуск для обеспечения соблюдения ограничения. На практике это соответствует обычному обновлению параметров, а затем обеспечению соблюдения ограничения путем фиксации весового вектора каждого нейрона для удовлетворения . Типичные значения порядка 3–4. В некоторых статьях сообщается об улучшениях [103] при использовании этой формы регуляризации.
При объединении теряются точные пространственные отношения между частями высокого уровня (такими как нос и рот на изображении лица). Эти отношения необходимы для распознавания личности. Перекрытие пулов, так что каждый объект встречается в нескольких пулах, помогает сохранить информацию. Сам по себе перевод не может экстраполировать понимание геометрических отношений на радикально новую точку зрения, например, на другую ориентацию или масштаб. С другой стороны, люди очень хорошо умеют экстраполировать; увидев новую форму, они смогут распознать ее с другой точки зрения. [104]
Более ранний распространенный способ решения этой проблемы — обучение сети на преобразованных данных в разных ориентациях, масштабах, освещении и т. д., чтобы сеть могла справиться с этими изменениями. Это требует больших вычислительных ресурсов для больших наборов данных. Альтернативой является использование иерархии систем координат и использование группы нейронов для представления сочетания формы объекта и его положения относительно сетчатки . Поза относительно сетчатки — это взаимосвязь между системой координат сетчатки и системой координат внутренних особенностей. [105]
Таким образом, один из способов представить что-либо — это встроить в него систему координат. Это позволяет распознавать крупные черты лица, используя согласованность поз их частей (например, позы носа и рта позволяют последовательно прогнозировать позу всего лица). Этот подход гарантирует, что объект более высокого уровня (например, лицо) присутствует, когда объект более низкого уровня (например, нос и рот) соглашается с прогнозом позы. Векторы активности нейронов, представляющие позу («векторы позы»), позволяют осуществлять пространственные преобразования, моделируемые как линейные операции, которые облегчают сети изучение иерархии визуальных объектов и обобщение точек зрения. Это похоже на то, как зрительная система человека накладывает рамки координат для представления форм. [106]
CNN часто используются в системах распознавания изображений . В 2012 году сообщалось о частоте ошибок в базе данных MNIST 0,23% . [26] В другой статье об использовании CNN для классификации изображений сообщается, что процесс обучения был «на удивление быстрым»; в той же статье лучшие опубликованные результаты по состоянию на 2011 год были достигнуты в базе данных MNIST и базе данных NORB. [23] Впоследствии аналогичная CNN под названием AlexNet [107] выиграла конкурс ImageNet Large Scale Visual Recognition Challenge 2012.
Применительно к распознаванию лиц CNN добились значительного снижения частоты ошибок. [108] В другой статье сообщалось о 97,6% распознавании «5600 неподвижных изображений более 10 предметов». [19] CNN использовались для объективной оценки качества видео после ручного обучения; полученная система имела очень низкую среднеквадратическую ошибку . [46]
Масштабный конкурс визуального распознавания ImageNet — это эталон в классификации и обнаружении объектов, в котором участвуют миллионы изображений и сотни классов объектов. В ILSVRC 2014, [109] крупномасштабном соревновании по визуальному распознаванию, почти каждая команда с высоким рейтингом использовала CNN в качестве базовой структуры. Победитель GoogLeNet [110] (основатель DeepDream ) увеличил среднюю точность обнаружения объектов до 0,439329 и снизил ошибку классификации до 0,06656, что является лучшим результатом на сегодняшний день. В его сети применено более 30 слоев. Производительность сверточных нейронных сетей в тестах ImageNet была близка к показателям людей. [111] Лучшие алгоритмы по-прежнему с трудом справляются с маленькими или тонкими объектами, такими как маленький муравей на стебле цветка или человек, держащий в руке перо. У них также возникают проблемы с изображениями, искаженными фильтрами, что является все более распространенным явлением в современных цифровых камерах. Напротив, подобные изображения редко беспокоят людей. Однако у людей, как правило, возникают проблемы с другими проблемами. Например, они не умеют классифицировать объекты по детальным категориям, таким как конкретная порода собак или вид птиц, тогда как сверточные нейронные сети справляются с этим. [ нужна цитата ]
В 2015 году многослойная CNN продемонстрировала способность распознавать лица под разными углами, в том числе перевернутыми, даже при частичном закрытии, с конкурентоспособными характеристиками. Сеть была обучена на базе данных из 200 000 изображений, включающих лица под разными углами и ориентациями, а также еще 20 миллионов изображений без лиц. Они использовали пакеты по 128 изображений в течение 50 000 итераций. [112]
По сравнению с доменами данных изображений, работы по применению CNN для классификации видео относительно мало. Видео сложнее изображений, поскольку оно имеет другое (временное) измерение. Тем не менее, были изучены некоторые расширения CNN в область видео. Один из подходов состоит в том, чтобы рассматривать пространство и время как эквивалентные измерения входных данных и выполнять свертки как во времени, так и в пространстве. [113] [114] Другой способ — объединить характеристики двух сверточных нейронных сетей: одной для пространственного и одной для временного потока. [115] [116] [117] Рекуррентные единицы долговременной краткосрочной памяти (LSTM) обычно включаются после CNN для учета зависимостей между кадрами или между клипами. [118] [119] Были введены схемы обучения без учителя для обучения пространственно-временных характеристик, основанные на сверточных вентилируемых ограниченных машинах Больцмана [120] и независимом анализе подпространства. [121] Это приложение можно увидеть в модели преобразования текста в видео . [122]
CNN также использовались для обработки естественного языка . Модели CNN эффективны для решения различных задач НЛП и достигли отличных результатов в семантическом анализе , [123] поиске поисковых запросов, [124] моделировании предложений, [125] классификации, [126] прогнозировании [127] и других традиционных задачах НЛП. [128] По сравнению с традиционными методами обработки языка, такими как рекуррентные нейронные сети , CNN могут представлять различные контекстуальные реалии языка, которые не полагаются на предположение о последовательностях рядов, в то время как RNN лучше подходят, когда требуется классическое моделирование временных рядов. [129] [130] [131] [132]
CNN с одномерными свертками использовалась во временных рядах в частотной области (спектральный остаток) с помощью неконтролируемой модели для обнаружения аномалий во временной области. [133]
CNN использовались при открытии лекарств . Прогнозирование взаимодействия между молекулами и биологическими белками может определить потенциальные методы лечения. В 2015 году Atomwise представила AtomNet, первую нейронную сеть глубокого обучения для разработки лекарств на основе структуры . [134] Система обучается непосредственно на трехмерных представлениях химических взаимодействий. Подобно тому, как сети распознавания изображений учатся объединять меньшие, пространственно близкие элементы в более крупные и сложные структуры, [135] AtomNet обнаруживает химические особенности, такие как ароматичность , атомы углерода sp 3 и водородные связи . Впоследствии AtomNet использовался для прогнозирования новых биомолекул -кандидатов для лечения множества заболеваний, в первую очередь для лечения вируса Эбола [136] и рассеянного склероза . [137]
CNN использовались в игре в шашки . С 1999 по 2001 год Фогель и Челлапилла опубликовали статьи, показывающие, как сверточная нейронная сеть может научиться играть в шашку , используя коэволюцию. В процессе обучения не использовались предшествующие человеческие профессиональные игры, а, скорее, основное внимание уделялось минимальному набору информации, содержащейся в шахматной доске: расположению и типу фигур, а также разнице в количестве фигур на двух сторонах. В конечном итоге программа ( Blondie24 ) была протестирована на 165 играх против игроков и заняла высшие 0,4%. [138] [139] Он также одержал победу над программой Chinook на ее «экспертном» уровне игры. [140]
CNN использовались в компьютерном Go . В декабре 2014 года Кларк и Сторки опубликовали статью, показывающую, что CNN, обученная контролируемым обучением на основе базы данных профессиональных игр людей, может превзойти GNU Go и выиграть несколько игр против поиска по дереву Монте-Карло Fuego 1.1 за долю времени, которое потребовалось Fuego играть. [141] Позже было объявлено, что большая 12-слойная сверточная нейронная сеть правильно предсказала профессиональный ход в 55% позиций, что соответствует точности игрока- человека с 6 даном . Когда обученная сверточная сеть использовалась непосредственно для игр в Го, без какого-либо поиска, она превзошла традиционную программу поиска GNU Go в 97% игр и сравнялась по производительности с программой поиска по дереву Монте-Карло Fuego, имитирующей десять тысяч игр (около миллион позиций) за ход. [142]
Пара CNN для выбора ходов («политическая сеть») и оценки позиций («сеть ценности»), управляющих MCTS, использовалась AlphaGo , первой, кто обыграл лучшего игрока-человека того времени. [143]
Рекуррентные нейронные сети обычно считаются лучшими архитектурами нейронных сетей для прогнозирования временных рядов (и моделирования последовательностей в целом), но недавние исследования показывают, что сверточные сети могут работать сопоставимо или даже лучше. [144] [11] Расширенные свертки [145] могут позволить одномерным сверточным нейронным сетям эффективно изучать зависимости временных рядов. [146] Свертки могут быть реализованы более эффективно, чем решения на основе RNN, и они не страдают от исчезновения (или взрыва) градиентов. [147] Сверточные сети могут обеспечить повышенную эффективность прогнозирования, когда имеется несколько похожих временных рядов, на которых можно учиться. [148] CNN также можно применять для дальнейших задач анализа временных рядов (например, классификации временных рядов [149] или квантильного прогнозирования [150] ).
Поскольку археологические находки, такие как глиняные таблички с клинописью , все чаще приобретаются с помощью 3D-сканеров , становятся доступными первые наборы эталонных данных, такие как HeiCuBeDa [151] , предоставляющие почти 2000 нормализованных наборов 2D- и 3D-данных, подготовленных с помощью GigaMesh Software Framework . [152] Таким образом, измерения на основе кривизны используются в сочетании с геометрическими нейронными сетями (GNN), например, для классификации периода тех глиняных табличек, которые являются одними из старейших документов истории человечества. [153] [154]
Для многих приложений данные обучения менее доступны. Сверточные нейронные сети обычно требуют большого объема обучающих данных, чтобы избежать переобучения . Распространенным методом является обучение сети на большем наборе данных из связанной области. После того как параметры сети сошлись, выполняется дополнительный этап обучения с использованием внутридоменных данных для точной настройки весов сети. Это называется трансферным обучением . Более того, этот метод позволяет успешно применять сверточные сетевые архитектуры для решения задач с крошечными обучающими наборами. [155]
Сквозное обучение и прогнозирование — обычная практика в компьютерном зрении . Однако для таких критически важных систем , как беспилотные автомобили, требуются понятные человеку объяснения . [156] Благодаря недавним достижениям в области визуальной значимости , пространственного внимания и временного внимания , наиболее важные пространственные области/временные моменты могут быть визуализированы, чтобы оправдать предсказания CNN. [157] [158]
Глубокая Q-сеть (DQN) — это тип модели глубокого обучения, которая сочетает в себе глубокую нейронную сеть с Q-обучением , формой обучения с подкреплением . В отличие от более ранних агентов обучения с подкреплением, DQN, использующие CNN, могут учиться непосредственно на многомерных сенсорных входных данных посредством обучения с подкреплением. [159]
Предварительные результаты были представлены в 2014 году, а сопроводительная статья — в феврале 2015 года. [160] В исследовании описывалось приложение для игр Atari 2600 . Этому предшествовали другие модели глубокого обучения с подкреплением. [161]
Сверточные сети глубокого убеждения (CDBN) имеют структуру, очень похожую на сверточные нейронные сети, и обучаются аналогично сетям глубокого убеждения. Поэтому они используют двумерную структуру изображений, как это делают CNN, и используют предварительное обучение, например, сети глубокого убеждения . Они предоставляют общую структуру, которую можно использовать во многих задачах обработки изображений и сигналов. Результаты сравнительного тестирования стандартных наборов данных изображений, таких как CIFAR [162], были получены с использованием CDBN. [163]
Сверточные нейронные сети представляют собой архитектуры глубокого обучения, которые в настоящее время используются в широком спектре приложений, включая компьютерное зрение, распознавание речи, обнаружение вредоносных программ, анализ временных рядов в финансах и многие другие.
{{cite book}}
: CS1 maint: location missing publisher (link) CS1 maint: multiple names: authors list (link){{cite journal}}
: CS1 maint: multiple names: authors list (link)Сверточные нейронные сети — перспективный инструмент для решения задачи распознавания образов.
Функции активации выпрямителя и softplus.
Второй вариант является более гладкой версией первого.
{{cite journal}}
: CS1 maint: multiple names: authors list (link){{cite book}}
: CS1 maint: multiple names: authors list (link)