Свёрточная нейронная сеть

Компьютеры можно назвать калькуляторами, выполняющими арифметические операции с высокой скоростью. Просмотр фильмов или прослушивание музыки выполняется посредством многократного выполнения простых арифметических операции компьютером. Способность впечатляющая, однако не является признаком интеллекта. 

Если взять какое-либо изображение, то трудно представить как компьютер сможет понять, что на нём. Подобными задачами занимается искусственный интеллект и далее будет рассмотрен возможный вариант решения задачи распознавания образов (рукописных цифр) с помощью нейронных сетей. 

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

 

Рис. 1 Разница между искусственным интеллектом и нейронной сетью

 

Для описания реализации нейронной сети воспользуемся примером изображения из базы данных образцов рукописных цифр — mnist. 

 

Рис. 2 Пример изображения из датасета mnist

На вход подается изображение 28х28 пикселей, сглаженное в вектор длиной 784. Веса установлены случайным образом. Входные значения вектора перемножаются с соответствующими весами и суммируются. Далее к полученным значениям узлов «‎слоя 1»‎ ‎применяется функция активации, например, сигмоида. Слоев может быть гораздо больше и количество узлов в промежуточном слое тоже можно варьировать. Однако нет смысла делать их больше входных данных, ведь задача стоит в обобщении. 

 

Рис. 3 Прямой проход по нейронной сети

 

Функция ошибок

Функция выходного сигнала не является функцией ошибки, но её легко сделать таковой, ведь: ошибка = целевое значение - фактическое

     Следует отметить, что выбираем квадрат разности, так как при обычном вычитании суммарное значение ошибок может обнулится, что кажется не самым разумным решением. 

     Далее нам необходимо минимизировать ошибку путём обновления весов. Полученная функция слишком сложна для её обработки обычными алгебраическими методами, поэтому принято использовать метод градиентного спуска. 

 

Рис. 4 Пример работы метода градиентного спуска

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

Функция активации сигмоида - Русские Блоги

Рис. 5 Дифференциал сигмоиды

 

После того как веса изменены с помощью необходимых формул, сеть обучена. Конечно, весь проход (в прямом и обратном направлении) делается далеко не на одном изображении, а на всём датасете. Таких итерации (эпох) можно делать не ограниченное число раз, но в какой-то момент есть риск переобучения сети, то есть её обобщающая способность, а вместе с ней и точность предсказания на тренировочных данных начнут падать.  

 

Свёртка

Наконец, перейдем к свёрточным нейронным сетям. Алгоритм рассмотренный выше легко реализовать если входные изображения небольшого размера, но обработка кадров с более высоким расширением может быть затруднительна. Также такая сеть не сможет выдавать точные предсказания, если изображения не будут центрированы, как в примере датасета mnist. С этими проблемами справляется свёрточная нейронная сеть.  

Свёрточная нейронная сеть — специальная архитектура искусственных нейронных сетей, предложенная Яном Лекуном в 1988 году и нацеленная на эффективное распознавание образов. Её принципиальное отличие – наличие свёрточных слоёв (Convolutional layersConv layers). 

На рисунках далее показано как получить эти слои:

 

Рис. 6 Умножение подматрицы входного изображения на фильтр

 

Рис. 7 Вычисление суммы полученной матрицы на Рис. 4

 

Из матрицы размером 4х4 мы получили матрицу 2х2. Это операция не аннулирует информативность входных данных, так как не каждый пиксель важен для информативности. Например, при применении свёртки с фильтром, известным как метод Собеля, мы получаем горизонтальные края изображения и всё еще видим на нём девушку. 

Изображение выглядит как текст, кроссворд

Автоматически созданное описание

Рис. 8 Вертикальный фильтр Собеля

Изображение выглядит как текст, человек

Автоматически созданное описание

Рис. 9 Пример работы вертикального фильтра Собеля

 

Пулинг

Пулинг обосновывается тем, что если на предыдущей операции свёртки уже были выявлены некоторые признаки, то для дальнейшей обработки настолько подробное изображение уже не нужно, и оно уплотняется, убирая избыточность. Слой пулинга, как правило, вставляется после слоя свёртки перед слоем следующей свёртки.

Используем наиболее популярный метод максимального пулинга. 

 

Рис. 10 Max-pooling

 

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

В результате работы был проведен обзор алгоритма работы простейшей нейронной сети и на базе этого рассмотрена также работа свёрточной нейросети. Можем сделать вывод:

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

2. Нейронные сети используют примеры для обучения и улучшения своей работы.

З. Решение задачи не требует четкого алгоритма. Нейронные сети используют примеры верных данных для построения своего метода решения задачи. При этом существует возможность выявления сетью неизвестных скрытых закономерностей в задаче.