Лекция
Привет, Вы узнаете о том , что такое свёрточная нейронная сеть, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое свёрточная нейронная сеть, сверточная нейронная сеть, convolutional neural network, cnn , настоятельно рекомендую прочитать все из категории Распознавание образов.
сверточная нейронная сеть (англ. convolutional neural network, CNN) — специальная архитектура искусственных нейронных сетей, предложенная Яном Лекуном и нацеленная на эффективное распознавание изображений, входит в состав технологий глубокого обучения (англ. deep learning). Использует некоторые особенностизрительной коры, в которой были открыты так называемые простые клетки, реагирующие на прямые линии под разными углами, и сложные клетки, реакция которых связана с активацией определенного набора простых клеток. Таким образом, идея сверточных нейронных сетей заключается в чередовании сверточных слоев (англ. convolution layers) и субдискретизирующих слоев (англ. subsampling layers, слоев подвыборки). Структура сети — однонаправленная (без обратных связей), принципиально многослойная. Для обучения используются стандартные методы, чаще всего метод обратного распространения ошибки. Функция активации нейронов (передаточная функция) — любая, по выбору исследователя.
Название архитектура сети получила из-за наличия операции свертки, суть которой в том, что каждый фрагмент изображения умножается на матрицу (ядро) свертки поэлементно, а результат суммируется и записывается в аналогичную позицию выходного изображения.
В машинном обучении сверточная нейронная сеть (СНС, англ. Convolutional neural network, CNN, ConvNet) - это такой тип искусственной нейронной сети прямого распространения , в котором отдельные нейроны заключен таким образом, что они реагируют на области зрительного поля , которые частично перекрываются. свертка сети было воодушевленныебиологическими процессами, они являются вариациями многослойных перцептронов , разработанными для использования минимальной предварительной обработки . они имеют широкое применение в распознавании изображений и видео , рекомендательных системах и обработке естественного языка .
Сверточные нейронные сети (СНС). Звучит как странное сочетание биологии и математики с примесью информатики, но как бы оно не звучало, эти сети — одни из самых влиятельных инноваций в области компьютерного зрения. Впервые нейронные сети привлекли всеобщее внимание в 2012 году, когда Алекс Крижевски благодаря им выиграл конкурс ImageNet (грубо говоря, это ежегодная олимпиада по машинному зрению), снизив рекорд ошибок классификации с 26% до 15%, что тогда стало прорывом. Сегодня глубинное обучения лежит в основе услуг многих компаний: Facebook использует нейронные сети для алгоритмов автоматического проставления тегов, Google — для поиска среди фотографий пользователя, Amazon — для генерации рекомендаций товаров, Pinterest — для персонализации домашней страницы пользователя, а Instagram — для поисковой инфраструктуры.
При применении для распознавания изображений сверточные нейронные сети (СНС) состоят из нескольких слоев небольших сборников нейронов, которые обрабатывают части входного изображения, называемые рецептивными полями .Выходы этих сборников затем укладываются таким образом, чтобы они перекрывались, для получения лучшего представления первичного изображения это повторяется для каждого такого слоя. Заключение с перекрытием позволяет СНС быть терпимыми к параллельных переносов входного изображения.
Сверточные сети могут включать слои локальной или глобальной подвыборки, которые сочетают выходы кластеров нейронов. Они также состоят из различных комбинаций сверточных и полносвязных слоев, с применением поточечной нелинейности в конце каждого слоя. для снижения числа свободных параметров и улучшения обобщения вводится операция свертки на малых областях входа. Одним из главных преимуществ сверточных сетей является использование совместной веса в сверточных слоях, что означает, что для каждого пикселя слоя используется один и тот же фильтр (банк веса) это как уменьшает объем требуемой памяти, так и улучшает производительность.
Очень подобную сверточных нейронных сетей архитектуру также применяют и некоторые нейронные сети с временной задержкой , особенно предназначенные для задач распознавания и / или классификации изображений, поскольку заключения выходов нейронов может быть осуществлено через определенные промежутки времени, удобным для анализа изображений образом.
По сравнению с другими алгоритмами классификации изображений, сверточные нейронные сети используют относительно мало предварительной обработки. Это означает, что сеть несет ответственность за обучение фильтров, в традиционных алгоритмах разрабатывались вручную . Отсутствие зависимости в разработке признаков от априорных знаний и человеческих усилий является большим преимуществом ОНР.
Разработка сверточныхнейронных сетей последовала за открытием зрительных механизмов в живых организмах. Ранняя работа 1968 показала, что зрительная кора животных содержит сложные компоновки клеток, чувствительные к выявлению света в малых подобластей зрительного поля, которые перекрываются, названных рецептивными полями. Эта работа идентифицировала два основных типа клеток: простые клетки , реагирующие максимально особых контуроподибни образы в их рецептивных полях, и сложные клетки , имеющих большие рецептивные поля, и является локально инвариантными к точного положения образа. Эти клетки действуют как локальные фильтры над пространством входа.
Неокогнитрон , предшественник сверточных сетей, был представлено в работе 1980 года. 1988 году их количество было разработано отдельно, с явными параллельными и способными к обучению свертками для сигналов, распространяющихся во времени. Их конструкцию была усовершенствована 1998 года, обобщены 2003 и того же года упрощенно. Знаменитая сеть LeNet-5 может успешно классифицировать цифры, и применяется для распознавания цифр в чеках.Однако при более сложных задачах широта размаха и глубина сети растут, и становятся ограниченными вычислительными ресурсами и сдерживают производительность.
В 1988 году был предложен отличную конструкцию ОНР для разложения одномерных сигналов электромиографии . 1989 года она была видоизменена для других схем на основе свертки.
С появлением эффективных вычислений на ГП стало возможным тренировать большие сети. 2006 несколько публикаций описали эффективные пути тренировки сверточных нейронных сетей с большим количеством слоев. 2011 года их было уточнено и реализовано на ГП , с впечатляющими результатами. 2012Чирешан и др. значительно усовершенствовали лучшую производительность в литературе для нескольких наборов изображений, включая базы данных MNIST , базой данных NORB, набором символов HWDB1.0 (китайские символы), набором данных CIFAR10 (набор из 60000 меченых изображений RGB 32 × 32) и набором данных ImageNet.
В то время как традиционные модели многослойного персептрона успешно применялись для распознавания изображений, из-за полного связность между узлами они страдают от проклятия размерности , и, следовательно, не очень хорошо масштабируются на изображение высших разрешения .
Слои СНС, расположенные в 3 измерениях
Например, в наборе CIFAR-10 изображения имеют размер всего 32 × 32 × 3 (ширина 32, высота 32, 3 канала цвета), поэтому один полносвязный нейрон в первом скрытом слое обычной нейронной сети будет 32 * 32 * 3 = 3072 весовые коэффициенты.Однако изображения 200 × 200 приведет к нейронов, имеющих 200 * 200 * 3 = 120 000 весовых коэффициентов.
Такие сетевые архитектуры не принимают во внимание пространственную структуру данных, рассматривая входные пиксели, далеко и близко друг от друга, на равных началах. Очевидно, что полная связность нейронов в рамках распознавания изображений является расточительной, а огромное количество параметров быстро ведет к переобучению.
Сверточные нейронные сети являются биологически воодушевленными вариантами многослойных перцептронов, разработанными для имитации поведения зрительной коры. Эти модели смягчают вызовы, поставленные архитектурой БШП,используя сильную пространственно локальную корреляцию, присутствующую в природных изображениях. В противоположность БШП, CNN имеют следующие отличительные признаки:
Вместе эти свойства позволяют сверточных нейронным сетям достигать лучшего обобщения на задачах видения. Также помогает и разделение веса, резко уменьшая количество свободных параметров, которые нужно учиться, снижая таким образом требования к памяти для работы сети. Снижение объема памяти позволяет тренировки больших, мощных сетей.
Архитектура CNN формируется кипой различных слоев превращают входной объем на выходной объем (что, например, сохраняет уровне отношение к классам) с помощью дифференцируемой функции. Обычно применяется несколько различных типов слоев. Мы обсудим их ниже:
В обычном перцептроне, который представляет собой полносвязную нейронную сеть, каждый нейрон связан со всеми нейронами предыдущего слоя, причем каждая связь имеет свой персональный весовой коэффициент. В сверточной нейронной сети в операции свертки используется лишь ограниченная матрица весов небольшого размера, которую «двигают» по всему обрабатываемому слою (в самом начале — непосредственно по входному изображению), формируя после каждого сдвига сигнал активации для нейрона следующего слоя с аналогичной позицией. То есть для различных нейронов выходного слоя используются общие веса — матрица весов, которую также называют набором весов или ядром свертки. Она построена таким образом, что графически кодирует какой-либо один признак, например, наличие наклонной линии под определенным углом. Тогда следующий слой, получившийся в результате операции свертки такой матрицей весов, показывает наличие данной наклонной линии в обрабатываемом слое и ее координаты, формируя так называемую карту признаков (англ. feature map). Естественно, в сверточной нейронной сети набор весов не один, а целая гамма, кодирующая всевозможные линии и дуги под разными углами. При этом такие ядра свертки не закладываются исследователем заранее, а формируются самостоятельно путем обучения сети классическим методом распространения ошибки. Проход каждым набором весов формирует свой собственный экземпляр карты признаков, делая нейронную сеть многомерной (много независимых карт признаков на одном слое). Также следует отметить, что при переборе слоя матрицей весов ее передвигают обычно не на полный шаг (размер этой матрицы), а на небольшое расстояние. Так, например, при размерности матрицы весов 5×5 ее сдвигают на один или два нейрона (пикселя) вместо пяти, чтобы не «перешагнуть» искомый признак.
Операция субдискретизации (англ. subsampling, англ. pooling, также переводимая как «операция подвыборки» или операция объединения), выполняет уменьшение размерности сформированных карт признаков. В данной архитектуре сети считается, что информация о факте наличия искомого признака важнее точного знания его координат, поэтому из нескольких соседних нейронов карты признаков выбирается максимальный и принимается за один нейрон карты признаков уменьшенной размерности. Также иногда применяют операцию нахождения среднего между соседними нейронами. За счет данной операции, помимо ускорения дальнейших вычислений, сеть становится более инвариантной к масштабу входного изображения.
Таким образом, повторяя друг за другом несколько слоев свертки и субдискретизации строится сверточная нейронная сеть. Чередование слоев позволяет составлять карты признаков из карт признаков, что на практике означает способность распознавания сложных иерархий признаков. Обычно после прохождения нескольких слоев карта признаков вырождается в вектор или даже скаляр, но таких карт признаков становится сотни. На выходе сети часто дополнительно устанавливают несколько слоев полносвязной нейронной сети (перцептрон), на вход которому подаются оконечные карты признаков.
Если на первом слое ядро свертки проходит только по одному исходному изображению, то на внутренних слоях одно и то же ядро проходит параллельно по всем картам признаков этого слоя, а результат свертки суммируется , формируя (после прохождения функции активации) одну карту признаков следующего слоя, соответствующую этому ядру свертки.
Модель сверточной сети, которую мы рассмотрим в этой статье, состоит из трех типов слоев: сверточные (convolutional) слои, субдискретизирующие (subsampling,подвыборка) слои и слои "обычной"нейронной сети – перцептрона.
Рис.1: схема сверточной сети (с сайта http://deeplearning.net)
Первые два типа слоев (convolutional,subsampling), чередуясь между собой, формируют входной вектор признаков для многослойного перцептрона. Сеть можно обучать с помощью градиентных методов .
Свое название сверточная сеть получила по названию операции – свертка , она часто используется для обработки изображений и может быть описана следующей формулой.
Здесь f - исходная матрица изображения, g - ядро (матрица) свертки.
Неформально эту операцию можно описать следующим образом - окном размера ядра g проходим с заданным шагом (обычно 1) все изображение f, на каждом шаге поэлементно умножаем содержимое окна на ядро g, результат суммируется и записывается в матрицу результата.
При этом в зависимости от метода обработки краев исходной матрицы результат может быть меньше исходного изображения (valid), такого же размера (same) или большего размера (full).
|
|
|
В этом разделе мы рассмотрим устройство сверточного слоя.
Сверточный слой реализует идею т.н. локальных рецептивных полей, т.е. каждый выходной нейрон соединен только с определенной (небольшой) областью входной матрицы и таким образом моделирует некоторые особенности человеческого зрения.
В упрощенном виде этот слой можно описать следующей формулой.
Здесь xl - выход слоя l, f() - функция активации, b - коэффициент сдвига, символом ∗ обозначена операция свертки входа x с ядром k.
При этом за счет краевых эффектов размер исходных матриц уменьшается.
Здесь xjl - карта признаков j (выход слоя l), f() - функция активации, b j - коэффициент сдвига для карты признаков j, kj - ядро свертки номер j, xil−1 - карты признаков предыдущего слоя.
В этом разделе мы поговорим про субдискретизирующий (subsampling) слой. Слои этого типа выполняют уменьшение размера входной карты признаков (обычно в 2 раза). Это можно делать разными способами, в данном случае мы рассмотрим метод выбора максимального элемента (max-pooling) - вся карта признаков разделяется на ячейки 2х2 элемента, из которых выбираются максимальные по значению. Формально слой может быть описан следующим образом.
Здесь xl - выход слоя l, f() - функция активации, a,b - коэффициенты, subsample() - операция выборки локальных максимальных значений.
Использование этого слоя позволяет улучшить распознавание образцов с измененным масштабом (уменьшенных или увеличенных).
Последний из типов слоев это слой ”обычного” многослойного перцептрона (MLP), его можно описать следующим соотношением.
Здесь xl - выход слоя l, f() - функция активации, b - коэффициент сдвига, w - матрица весовых коэффициентов.
В этом разделе мы поговорим о схеме соединения слоев между собой.
Рассмотрим сверточную сеть из 7 слоев, порядок их следования описан ниже.
При этом, нейроны (карты признаков) второго субдискретизирующего слоя и третьего сверточного слоя соединяются выборочно т.е. в соответствии с матрицей смежности, которая задается как параметр сети. Для сети с количеством карт признаков во втором слое 7 и 9 в третьем слое, она может выглядеть следующим образом.
Таблица 1: пример матрицы смежности связей сверточных слоев
Таким образом, каждая выходная карта формируеться частичной суммой результатов сверток входных карт, для каждой такой частичной суммы свой набор ядер свертки.
Соединение всех карт второго слоя со всеми картами третьего слоя значительно увеличило бы количество связей.
Соединение карт одна к одной стало бы еще одним повторением свертки, которое уже присутствовало между слоями.
Как правило, архитектор сети сам принимает решение о том, по какому принципу организовывать соединение карт слоев.
сверточный слой ( англ. Convolutional layer ) является основным строительным блоком ОНР. Параметры слоя состоят из набора фильтров для обучения (или ядер ), которые имеют небольшое рецептивное поле, но простираются на всю глубину входного объема. В течение прямого прохода каждый фильтр осуществляет свертку по ширине и высоте входного объема, вычисляяскалярное произведение данных фильтра и входа, и формируя 2-мерную карту активации этого фильтра. В результате сеть учится, какие фильтры активируются, когда они видят определенный конкретный тип признаки в определенном пространственном положении при входе.
Составление активационных карт всех фильтров вдоль измерения глубины формирует полный исходный объем сверточного слоя. Таким образом, каждая запись в исходном объеме может также трактоваться как выход нейрона, который смотрит на небольшую область в входе, и делит параметры с нейронами той же активационной карты.
Локальная соединеннность
При обработке входов высокой размерности, таких как изображения, нецелесообразно соединять нейроны со всеми нейронами предыдущего объема, поскольку такая архитектура сети не принимает во внимание пространственную структуру данных. Сверточные сети используют пространственно локальную корреляцию путем обеспечения схемы локальной зьеднаности между нейронами соседних слоев: каждый нейрон соединяется лишь с небольшой областью входящего объема. Весь объем этой зьеднаности является гиперпараметром , что называется рецептивным полем нейрона. Соединение являются локальными в пространстве (вдоль ширины и высоты), но всегда распространяются вдоль всей глубины входящего объема. Такая архитектура обеспечивает, чтобы обученные фильтры производили сильный отклик на пространственно локальных входных образов.
Пространственная организация
Размер выходного объема сверточного слоя контролируют три гиперпараметра : глубина , шаг и нулевое дополнения .
Пространственный размер выходного объема может исчисляться как функция от размера входного объема , размера рецептивного поля нейронов сверточного слоя , шага, с которым они применяются, и величины нулевого дополнения , применяемой на краях. Об этом говорит сайт https://intellect.icu . Формула для вычисления того, сколько нейронов «умещается» в заданного объема, задается как .Если это число не является целым, то шаги установлено неправильно, и нейроны не может быть размещено вдоль входного объема симметричным образом. В общем, установление нулевого дополнения в , когда шагом является , обеспечивает, чтобы входной и выходной объемы имели одинаковый пространственный размер.
Совместное использование параметров
Схема совместного использования параметров применяется в сверточных слоях для того, чтобы контролировать количество свободных параметров. Она опирается на одно разумное предположение: если одна лоскутное признак является полезной для вычисления в определенном пространственном положении, то она также должна быть полезной для вычисления в другом положении. Иными словами, обозначая 2-мерный срез по глубине как срез глубины , мы ограничиваем нейроны в каждом срезе глубины использованием одних и тех же веса и предубеждения.
Поскольку все нейроны в едином срезе делят между собой одну и ту же параметризации, то прямой проход в каждом срезе глубины сверточного ( англ. CONV ) слоя может быть вычислено как свертке весовых коэффициентов нейронов с входным объемом (отсюда и название: сверточный слой) . Таким образом, является обычным называть наборы весовых коэффициентов фильтром (или ядром ), который сворачивается с входом. Результатом этой свертки является активационная карта, и набор активационных карт для каждого из различных фильтров состоит вместе вдоль измерения глубины для получения исходного объема. Совместное использование параметров способствует инвариантности архитектуры ОНР относительно сдвига.
Важно заметить, что допущение совместного использования параметров иногда может не иметь смысла. Особенно в том случае, коды входные изображения в ОНР имеют определенную особую центрированную структуру, в которой мы ожидаем обучение совершенно разных признаков в различных пространственных положениях.Одним из практических примеров является когда вход является лицами, было отцентрирован в картинке: мы можем ожидать, что учиться различных особых признаков глаз и волос в разных частях изображения. В таком случае является обычным смягчать схему совместного использования параметров, на фоне просто называть слой локально соединенным слоем.
Максимизацийна подвыборка ( англ. Max pooling ) с фильтром 2 × 2 и шагом = 2
Другим важным понятием ОНР является подвыборка ( англ. Pooling ), которая является разновидностью нелинейного снижение дискретизации. Подвыборка разделяет входное изображение набор прямоугольников без перекрытий, и для каждой такой подобласти выводит ее максимум. Идея заключается в том, что если признак был найден, то ее точное положение не так важно, как ее грубое положение относительно других признаков. Функцией подвиборкового слоя является постепенное сокращение пространственного размера представления для уменьшения объема параметров и вычислений в сети, и поэтому также для контроля переобучения . В архитектуре ОНР является обычным периодически вставлять пидвибирковий слой между последовательными сверточными слоями. Операция подвыборки обеспечивает одна из разновидностей инвариантности относительно сдвига.
Пидвибирковий слой действует независимо на каждый срез глубины входа, и уменьшает его пространственный размер. Самым распространенным видом является пидвибирковий слой с фильтрами размера 2 × 2, применяемые с шагом 2, который снижает дискретизацию каждого среза глубины входа в 2 раза как по ширине, так и по высоте, отвергая 75% активаций. Каждая операция взятия максимума ( англ. MAX ) в таком случае будет максимум из 4 цифр. Размер по глубине остается неизменным.
В дополнение к максимизационной подвыборки ( англ. Max pooling ), подвыборка слои могут также выполнять и другие функции, такие как усреднительных подвыборка( англ. Average pooling ), или даже L2-нормова подвыборка ( англ. L2-norm pooling ). Исторически усреднительных подвыборка применялась часто, но в последнее время впала в немилость по сравнению с действием максимизации подвыборки, что показала лучшую работу на практике.
Из-за агрессивного сокращения размера представления (что полезно только для меньших наборов данных для контроля переобучения) текущей тенденцией в литературе является использование меньших фильтров, или отказ от подвыборнового слоя вообще.
ReLU является аббревиатурой от англ. Rectified Linear Units , срезанных линейных узлов . Это слоем нейронов, применяет ненасичувальну активационную функцию . Он усиливает нелинейные свойства функции принятия решения и сети в целом, затрагивая рецептивных полей сверточного слоя.
Для усиления нелинейности применяются и другие функции, например, насыщающих гиперболический тангенс , и сигмоидна функция .По сравнению с другими функциями использования срезанных линейных узлов ( англ. ReLU ) является предпочтительным, поскольку оно приводит к в несколько раз более быстрого обучения нейронной сети без создания значительной разницы в точности обобщения.
Наконец, после нескольких сверточных и максимизацийно подвиборочных слоев, высокоуровневые рассуждения в нейронной сети осуществляются полносвязными слоями ( англ. Fully connected layers ). Нейроны в полносвязном слое имеют полные соединение со всеми активации предыдущего слоя, как это можно видеть в обычных нейронных сетях. Их активации затем может быть вычислений матричным умножением, за которым следует смещение предубеждения.
Слой потерь определяет, как тренировка сети штрафует отклонения между предусмотренными и настоящими метками, и является, как правило, последним слоем в сети. В нем могут использоваться различные функции потерь для различных задач.
продолжение следует...
Часть 1 Сверточная нейронная сеть (convolutional neural network -CNN )
Часть 2 Схемы слоев - Сверточная нейронная сеть (convolutional neural network -CNN
Часть 3 Вводы и выводы - Сверточная нейронная сеть (convolutional neural network
В заключение, эта статья об свёрточная нейронная сеть подчеркивает важность того что вы тут, расширяете ваше сознание, знания, навыки и умения. Надеюсь, что теперь ты понял что такое свёрточная нейронная сеть, сверточная нейронная сеть, convolutional neural network, cnn и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Распознавание образов
Комментарии
Оставить комментарий
Распознавание образов
Термины: Распознавание образов