Нейронные сети - что это такое и как они работают? Виды нейросетей

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

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

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

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

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

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Навигация по материалу:

НейронныесетичтоэтотакоеикакониработаютВидынейросетей1 История создания нейронных сетей2 Как работают нейронные сети?2.1 Для чего нужны нейросети?2.2 Что такое нейрон?2.3 Что такое синапс?2.4 Биологическая основа нейросвязей3 Искусственная нейронная сеть4 Виды и классификация нейронных сетей4.1 Сверточные4.2 Рекуррентные5 Обучение нейронной сети5.1 Обучение с учителем5.2 Обучение без учителя6 Сверточная нейронная сеть6.1 Особенности работы свёрточных сетей6.2 Из чего состоят свёрточные сети?7 Где можно получить образование по нейронным сетям?7.1 Особенности обучения в GeekUniversity

История создания нейронных сетей

Какова же история развития нейронных сетей в науке и технике? Она берет свое начало с появлением первых компьютеров или ЭВМ (электронно-вычислительная машина) как их называли в те времена. Так еще в конце 1940-х годов некто Дональд Хебб разработал механизм нейронной сети, чем заложил правила обучения ЭВМ, этих «протокомпьютеров».

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Дальнейшая хронология событий была следующей:

НейронныесетичтоэтотакоеикакониработаютВидынейросетейВ 1954 году происходит первое практическое использование нейронных сетей в работе ЭВМ.В 1958 году Франком Розенблатом разработан алгоритм распознавания образов и математическая аннотация к нему.В 1960-х годах интерес к разработке нейронных сетей несколько угас из-за слабых мощностей компьютеров того времени.И снова возродился уже в 1980-х годах, именно в этот период появляется система с механизмом обратной связи, разрабатываются алгоритмы самообучения.К 2000 году мощности компьютеров выросли настолько, что смогли воплотить самые смелые мечты ученых прошлого. В это время появляются программы распознавания голоса, компьютерного зрения и многое другое.

GeekUniversity совместно с Mail.ru Group открыли первый в России факультет Искусственного интеллекта преподающий нейронные сети. Для учебы достаточно школьных знаний. Программа включает в себя все необходимые ресурсы и инструменты + целая программа по высшей математике. Не абстрактная, как в обычных вузах, а построенная на практике. Обучение познакомит вас с технологиями машинного обучения и нейронными сетями, научит решать настоящие бизнес-задачи.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Образование по искусственному интеллекту

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Как работают нейронные сети?

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

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Как работает нейросеть

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

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

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

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

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Для чего нужны нейросети?

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

НейронныесетичтоэтотакоеикакониработаютВидынейросетейКлассификация — распределение данных по параметрам. Например, на вход дается набор людей и нужно решить, кому из них давать кредит, а кому нет. Эту работу может сделать нейронная сеть, анализируя такую информацию как: возраст, платежеспособность, кредитная история и тд.Предсказание — возможность предсказывать следующий шаг. Например, рост или падение акций, основываясь на ситуации на фондовом рынке.Распознавание — в настоящее время, самое широкое применение нейронных сетей. Используется в Google, когда вы ищете фото или в камерах телефонов, когда оно определяет положение вашего лица и выделяет его и многое другое.

Область применения искусственных нейронных сетей с каждым годом все более расширяется, на сегодняшний день они используются в таких сферах как:

НейронныесетичтоэтотакоеикакониработаютВидынейросетейМашинное обучение (machine learning), представляющее собой разновидность искусственного интеллекта. В основе его лежит обучение ИИ на примере миллионов однотипных задач. В наше время машинное обучение активно внедряют поисковые системы Гугл, Яндекс, Бинг, Байду. Так на основе миллионов поисковых запросов, которые все мы каждый день вводим в Гугле, их алгоритмы учатся показывать нам наиболее релевантную выдачу, чтобы мы могли найти именно то, что ищем.В роботехнике нейронные сети используются в выработке многочисленных алгоритмов для железных «мозгов» роботов.Архитекторы компьютерных систем пользуются нейронными сетями для решения проблемы параллельных вычислений.С помощью нейронных сетей математики могут разрешать разные сложные математические задачи.

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

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Что такое нейрон?

Нейрон — это вычислительная единица, которая получает информацию, производит над ней простые вычисления и передает ее дальше. Они делятся на три основных типа: входной (синий), скрытый (красный) и выходной (зеленый):

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Нейроны

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

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

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

У каждого из нейронов есть 2 основных параметра:

НейронныесетичтоэтотакоеикакониработаютВидынейросетейвходные данные (input data),выходные данные (output data).

В случае входного нейрона: input=output. В остальных, в поле input попадает суммарная информация всех нейронов с предыдущего слоя, после чего, она нормализуется, с помощью функции активации (пока что просто представим ее f(x)) и попадает в поле output.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Входные и выходные данные нейрона

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Важно помнить, что нейроны оперируют числами в диапазоне [0,1] или [-1,1]. А как же, вы спросите, тогда обрабатывать числа, которые выходят из данного диапазона? На данном этапе, самый простой ответ — это разделить 1 на это число. Этот процесс называется нормализацией, и он очень часто используется в нейронных сетях. Подробнее об этом чуть позже.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Что такое синапс?

Синапс это связь между двумя нейронами. У синапсов есть 1 параметр — вес. Благодаря ему, входная информация изменяется, когда передается от одного нейрона к другому. Допустим, есть 3 нейрона, которые передают информацию следующему. Тогда у нас есть 3 веса, соответствующие каждому из этих нейронов. У того нейрона, у которого вес будет больше, та информация и будет доминирующей в следующем нейроне (пример — смешение цветов).

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Синапс - связь между двумя нейронами

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

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

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Важно помнить, что во время инициализации нейронной сети, веса расставляются в случайном порядке.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Биологическая основа нейросвязей

В нашем мозге есть нейроны. Их около 86 миллиардов. Нейрон это клетка, соединенная с другими такими клетками. Клетки соединены друг с другом отростками. Всё это вместе напоминает своего рода сеть. Вот вам и нейронная сеть. Каждая клетка получает сигналы от других клеток. Далее обрабатывает их и сама отправляет сигнал другим клеткам.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

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

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Нейронные связи

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

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

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

На моей картинке стрелки обозначают связи нейронов. Связи бывают разные. Например стрелка внизу между нейроном 2 и 5 длинная. И значит сигнал от нейрона 2 до нейрона 5 будет дольше идти, чем например сигнал от нейрона 3 где стрелка вдвое короче. Да и вообще сигнал может затухнуть и прийти слабым. В биологии много всего интересного.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Но рассматривать всё это — как там думает нейрон, затухнет ли сигнал, когда он придет или не придет в IT не стали. А что голову морочить? И просто построили упрощенную модель.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

В этой модели можно выделить две основные составляющие:

НейронныесетичтоэтотакоеикакониработаютВидынейросетейАлгоритм. В биологии нейрон думает. В программировании «думанье» заменяется алгоритмом — то есть набором команд. Например — если на вход пришла 1 отправь 0. Вот и все «мозги» нашего нейрона.Вес решения. Все связи, затухания и т.д. решили заменить «весом». Вес это как сила решения, его важность. Это просто величина, чаще число. Нашему нейрону приходит решение с определенным весом, нашему нейрону приходит число. И если оно больше другого пришедшего числа то оно важнее. Это как пример.

Итого: есть алгоритм и есть вес решения. Это всё что нужно для построения простейшей нейросети.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Искусственная нейронная сеть

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

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Искусственная нейронная сеть обычно обучается с учителем. Это означает наличие обучающего набора (датасета), который содержит примеры с истинными значениями: тегами, классами, показателями.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

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

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

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

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Искусственная нейронная сеть

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Искусственная нейронная сеть состоит из трех компонентов:

НейронныесетичтоэтотакоеикакониработаютВидынейросетейВходной слой;Скрытые (вычислительные) слои;Выходной слой.

Компоненты искусственной нейросети

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Обучение таких нейросетей происходит в два этапа:

НейронныесетичтоэтотакоеикакониработаютВидынейросетейПрямое распространение ошибки;Обратное распространение ошибки.

Во время прямого распространения ошибки делается предсказание ответа. При обратном распространении ошибка между фактическим ответом и предсказанным минимизируется.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Для более глубокого изучения советуем к просмотру 2 видео из TED Talks: Видео 1, Видео 2 (видео-ролики на английском языке).

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Виды и классификация нейронных сетей

За период развития, нейронные сети поделились на множество типов, которые переплетаются между собой в различных задачах. На данный момент сложно классифицировать какую-либо сеть только по одному признаку. Это можно сделать по принципу применения, типу входной информации, характеру обучения, характеру связей, сфере применения. 

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Нейронная сеть

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Принцип применения

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Обучение с учителем (+) или без(-) или смешанное (с)

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Сфера применения

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Перцептрон Розенблатта

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Распознание образов, принятие решений, прогнозирование, аппроксимация, анализ данных

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

+

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Практически любая сфера применения, кроме оптимизации информации

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Хопфилда

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Сжатие данных и ассоциативная память

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Строение компьютерных систем

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Кохонена

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Кластеризация, сжатие данных, анализ данных, оптимизация

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Финансы, базы данных

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Радиально-базисных функций (RBF-сеть)

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Принятие решений и управление, аппроксимация, прогнозирование

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

с

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Управленческие структуры, нейроуправление

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Свёрточная

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Распознание образов

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

+

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Обработка графических данных

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Импульсная

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Принятие решение, распознавание образов, анализ данных

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

с

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Протезирование, робототехника, телекоммуникации, компьютерное зрение

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

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

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Сверточные

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

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Основные характеристики: 

НейронныесетичтоэтотакоеикакониработаютВидынейросетейОтличная масштабируемость – проводят распознания образов любого разрешения (какое бы не было оно большое).Использование объемных трехмерных нейронов – внутри слоя, нейроны связаны малым полем, именуемы рецептивным слоем.Механизм пространственной локализации – соседние слои нейронов связаны таким механизмом, за счет чего обеспечивается работа нелинейных фильтров и охват все большего числа пикселей графического изображения.

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

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Рекуррентные

Этот тип нейросети, в котором связи между элементами могут обрабатывать серии различных событий во времени или работать с последовательными цепочками в пространстве. Такой тип часто применяют там, где что-то целое разбито на куски. Например, распознавание речи или рукописного текста. От нее пошло множество видов сетей, в том числе Хопфилда, Элмана и Джордана.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Обучение нейронной сети

Один из главных и самый важный критерий – возможность обучения нейросети. В целом, нейросеть – это совокупность нейронов, через которые проходит сигнал. Если подать его на вход, то пройдя через тысячи нейронов, на выходе получится неизвестно что. Для преобразования нужно менять параметры сети, чтобы на выходе получились нужные результаты.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Обучение нейронной сети

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

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

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

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

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

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

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

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

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

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

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Обучение с учителем

Обучение таким способом подразумевает концепцию: даете выборку входных сигналов нейросети, получаете выходные и сравниваете с готовым решением.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Как готовить такие выборки:

НейронныесетичтоэтотакоеикакониработаютВидынейросетейДля опознавания лиц создать выборку из 5000-10000 фотографий (вход) и самостоятельно указать, какие содержат лица людей (выход, правильный сигнал).Для прогнозирования роста или падения акций, выборка делается с помощью анализа данных прошлых десятилетий. Входными сигналами могут быть как состояние рынка в целом, так и конкретные дни.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Учителем не обязательно выступает человек. Сеть нужно тренировать сотнями и тысячами часов, поэтому в 99% случаев тренировкой занимается компьютерная программа.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Обучение без учителя

Концепция состоит в том, что делается выборка входных сигналов, но правильных ответов на выходе вы знать не можете.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Как происходит обучение? В теории и на практике, нейросеть начинает кластеризацию, то есть определяет классы подаваемых входных сигналов. Затем, она выдает сигналы различных типов, отвечающие за входные объекты.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

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

Свёрточная нейронная сеть (СНС, CNN) — специальная архитектура искусственных нейронных сетей, предложенная Яном Лекуном и нацеленная на эффективное распознавание образов. Данной архитектуре удаётся гораздо точнее распознавать объекты на изображениях, так как, в отличие от многослойного персептрона, учитывается двухмерная топология изображения. При этом свёрточные сети устойчивы к небольшим смещениям, изменениям масштаба и поворотам объектов на входных изображениях. Во многом, именно поэтому архитектуры, основанные на свёрточных сетях, до сих пор занимают первые места в соревнованиях по распознаванию образов, как, например, ImageNet.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Сверточная нейронная сеть является основным инструментом для классификации и распознавания объектов, лиц на фотографиях, распознавания речи. Есть множество вариантов применения CNN, такие как Deep Convolutional Neural Network (DCNN),  Region-CNN (R-CNN), Fully Convolutional Neural Networks (FCNN), Mask R-CNN и другие.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

CNN на сегодня – “рабочая лошадка” в области нейронных сетей. Используется преимущественно для решения задач компьютерного зрения, хотя может применяться также для работы с аудио и любыми данными, которые можно представить в виде матриц.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Особенности работы свёрточных сетей

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

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Так, если требуется работать с цветными изображениями размером 64х64, то для каждого нейрона первого слоя полносвязной сети потребуется 64·64·3 = 12288 параметров, а если сеть должна распознавать изображения 1000х1000, то входных параметров будет уже 3 млн! А помимо входного слоя есть и другие слои, на которых, зачастую, число нейронов превышает количество нейронов на входном слое, из-за чего 3 млн запросто превращаются в триллионы! Такое количество параметров просто невозможно рассчитать быстро ввиду недостаточно больших вычислительных мощностей компьютеров.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

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

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

В отличие от сетей прямого распространения, которые работают с данными в виде векторов, свёрточные сети работают с изображениями в виде тензоров. Тензоры — это 3D массивы чисел, или, проще говоря, массивы матриц чисел.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Тензоры - 3D массивы чисел

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Изображения в компьютере представляются в виде пикселей, а каждый пиксель – это значения интенсивности соответствующих каналов. При этом интенсивность каждого из каналов описывается целым числом от 0 до 255.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

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

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Из чего состоят свёрточные сети?

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

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Так, например, LeNet5 – одна из первых свёрточных сетей, которая победила в ImageNet, состояла из 7 слоёв: слой свёртки, слой пулинга, ещё один слой свёртки ещё один слой пулинга и трёхслойная полносвязная нейронная сеть.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Слои свёрточных сетей

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Сверточный слой

Сверточный слой нейронной сети представляет из себя применение операции свертки к выходам с предыдущего слоя, где веса ядра свертки являются обучаемыми параметрами. Еще один обучаемый вес используется в качестве константного сдвига (англ. bias). При этом есть несколько важных деталей:

НейронныесетичтоэтотакоеикакониработаютВидынейросетейВ одном сверточном слое может быть несколько сверток. В этом случае для каждой свертки на выходе получится своё изображение. Например, если вход имел размерность w×hw×h, а в слое было nn сверток с ядром размерности kx×kykx×ky, то выход будет иметь размерность n×(w−kx+1)×(h−ky+1)n×(w−kx+1)×(h−ky+1);Ядра свертки могут быть трёхмерными. Свертка трехмерного входа с трехмерным ядром происходит аналогично, просто скалярное произведение считается еще и по всем слоям изображения. Например, для усреднения информации о цветах исходного изображения, на первом слое можно использовать свертку размерности 3×w×h3×w×h. На выходе такого слоя будет уже одно изображение (вместо трёх);Можно заметить, что применение операции свертки уменьшает изображение. Также пиксели, которые находятся на границе изображения участвуют в меньшем количестве сверток, чем внутренние. В связи с этим в сверточных слоях используется дополнение изображения (англ. padding). Выходы с предыдущего слоя дополняются пикселями так, чтобы после свертки сохранился размер изображения. Такие свертки называют одинаковыми (англ. same convolution), а свертки без дополнения изображения называются правильными (англ. valid convolution). Среди способов, которыми можно заполнить новые пиксели, можно выделить следующие:zero shift: 00[ABC]00;border extension: AA[ABC]CC;mirror shift: BA[ABC]CB;cyclic shift: BC[ABC]AB.Еще одним параметром сверточного слоя является сдвиг (англ. stride). Хоть обычно свертка применяется подряд для каждого пикселя, иногда используется сдвиг, отличный от единицы — скалярное произведение считается не со всеми возможными положениями ядра, а только с положениями, кратными некоторому сдвигу ss. Тогда, если если вход имел размерность w×hw×h, а ядро свертки имело размерность kx×kykx×ky и использовался сдвиг ss, то выход будет иметь размерность ⌊w−kxs+1⌋×⌊h−kys+1⌋⌊w−kxs+1 ×⌊h−kys+1⌋.

Пулинговый слой

Пулинговый слой призван снижать размерность изображения. Исходное изображение делится на блоки размером w×hw×h и для каждого блока вычисляется некоторая функция. Чаще всего используется функция максимума (англ. max pooling) или (взвешенного) среднего (англ. (weighted) average pooling). Обучаемых параметров у этого слоя нет.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Основные цели пулингового слоя:

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

Inception module

Inception module — это специальный слой нейронной сети, который был предложен в работе[2], в которой была представлена сеть GoogLeNet. Основная цель этого модуля заключается в следующем. Авторы предположили, что каждый элемент предыдущего слоя соответствует определенной области исходного изображения. Каждая свертка по таким элементам будет увеличивать область исходного изображения, пока элементы на последних слоях не будут соответствовать всему изображению целиком. Однако, если с какого-то момента все свертки станут размером 1×11×1, то не найдется элементов, которые покрывали бы все исходное изображение, поэтому было бы невозможно находить большие признаки на изображении.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Чтобы решить эту проблему, авторы предложили так называемый inception module — конкатенацию выходов для сверток размера 1×11×1, 3×33×3, 5×55×5, а также операции max pooling’а с ядром 3×33×3.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

К сожалению, подобный наивный подход (англ. naive inception module) приводит к резкому увеличению слоев изображения, что не позволяет построить с его использованием глубокую нейронную сеть. Для этого авторы предложили использовать модифицированный inception module с дополнительным уменьшением размерности — дополнительно к каждому фильтру они добавили слой свертки 1×11×1, который схлопывает все слои изображения в один. Это позволяет сохранить малое число слоев, с сохранением полезной информации о изображении.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Residual block

Двумя серьезными проблемами в обучении глубоких нейронных сетей являются исчезающий градиент (англ. vanishing gradient) и взрывающийся градиент (англ. exploding gradient). Они возникают из-за того, что при дифференцировании по цепному правилу, до глубоких слоев нейронной сети доходит очень маленькая величина градиента (из-за многократного домножения на небольшие величины на предыдущих слоях). Для борьбы с этой проблемой был предложен так называемый residual block.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Идея заключается в том, чтобы взять пару слоёв (например, сверточных), и добавить дополнительную связь, которая проходит мимо этих слоёв. Пусть z(k) — выход k-ого слоя до применения функции активации, а a(k) — выход после. Тогда residual block будет выполнять следующее преобразование: a(k+2)=g(z(k+2)+a(k)), где g — функция активации.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

На самом деле, такая нейронная сеть обучается предсказывать функцию F(x)−x, вместо функции F(x), которую изначально нужно было предсказывать. Для компенсации этой разницы и вводится это замыкающее соединение (англ. shortcut connection), которое добавляет недостающий x к функции.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

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

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Где можно получить образование по нейронным сетям?

GeekUniversity совместно с Mail.ru Group открыли первый в России факультет Искусственного интеллекта преподающий нейронные сети.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Для учебы достаточно школьных знаний. У вас будут все необходимые ресурсы и инструменты + целая программа по высшей математике. Не абстрактная, как в обычных вузах, а построенная на практике. Обучение познакомит вас с технологиями машинного обучения и нейронными сетями, научит решать настоящие бизнес-задачи.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Обучение искусственному интеллекту

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

После учебы вы сможете работать по специальностям:

НейронныесетичтоэтотакоеикакониработаютВидынейросетейИскусственный интеллект,Машинное обучение,Нейронные сети,Анализ больших данных.

Особенности обучения в GeekUniversity

Через полтора года практического обучения вы освоите современные технологии Data Science и приобретете компетенции, необходимые для работы в крупной IT-компании. Получите диплом о профессиональной переподготовке и сертификат.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Обучение проводится на основании государственной лицензии № 040485. По результатам успешного завершения обучения выдаем выпускникам диплом о профессиональной переподготовке и электронный сертификат на портале GeekBrains и Mail.ru Group.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Проектно-ориентированное обучение

Обучение происходит на практике, программы разрабатываются совместно со специалистами из компаний-лидеров рынка. Вы решите четыре проектные задачи по работе с данными и примените полученные навыки на практике. Полтора года обучения в GeekUniversity = полтора года реального опыта работы с большими данными для вашего резюме.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Наставник

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

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Основательная математическая подготовка

Профессионализм в Data Science — это на 50% умение строить математические модели и еще на 50% — работать с данными. GeekUniversity прокачает ваши знания в матанализе, которые обязательно проверят на собеседовании в любой серьезной компании.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

GeekUniversity дает полтора года опыта работы для вашего резюме

В результате для вас откроется в 5 раз больше вакансий:

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Статистика по данным сайта hh.ru за 2018 г. по запросу «Data Science»

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Для тех у кого нет опыта в программировании, предлагается начать с подготовительных курсов. Они позволят получить базовые знания для комфортного обучения по основной программе.

НейронныесетичтоэтотакоеикакониработаютВидынейросетей

Recommended