Что такое нейронная сеть и что делает ее «глубокой»?

Как разновидность искусственного интеллекта, глубокое обучение лежит в основе различных инноваций: беспилотных автомобилей, обработки естественного языка, распознавания изображений и т. Д. Компании, предлагающие решения для DL (такие как Amazon, Tesla, Salesforce), находятся в авангарде фондовых рынков и привлекают впечатляющие инвестиции. По данным Statista, общий объем финансирования стартапов в области искусственного интеллекта во всем мире в 2014–2019 годах составляет более 26 миллиардов долларов. Такой высокий интерес можно объяснить удивительными преимуществами глубокого обучения и его архитектур - искусственных нейронных сетей.

Что такое глубокое обучение?

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

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

Основные архитектуры глубокого обучения:

  • Сверточные нейронные сети
  • Рекуррентные нейронные сети
  • Генеративные состязательные сети

Подробнее о них мы поговорим позже в этом тексте.

Разница между машинным обучением и глубоким обучением

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

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

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

Преимущества глубокого обучения

Вот некоторые преимущества глубокого обучения.

  • Способность выявлять закономерности и аномалии в больших объемах необработанных данных позволяет глубокому обучению эффективно предоставлять профессионалам точные и надежные результаты анализа. Например, у Amazon более 560 миллионов товаров на сайте и 300+ миллионов пользователей. Ни один бухгалтер-человек или даже целая армия бухгалтеров не сможет отслеживать такое количество транзакций без инструмента искусственного интеллекта.
  • Глубокое обучение не так сильно зависит от человеческого опыта, как традиционное машинное обучение. DL позволяет нам делать открытия в данных, даже если разработчики не уверены, что они пытаются найти. Например, вы хотите, чтобы ваши алгоритмы могли предсказывать удержание клиентов, но вы не уверены, какие характеристики клиента позволят системе сделать это предсказание.

Проблемы глубокого обучения

  • Сбор больших объемов качественных данных требует значительных ресурсов. На протяжении многих лет самой большой и хорошо подготовленной коллекцией образцов была ImageNet с 14 миллионами различных изображений и более чем 20 000 категорий. Она была основана в 2012 году, и только в прошлом году Tencent выпустила базу данных, которая стала больше и универсальнее.
  • Еще одна сложность технологии глубокого обучения заключается в том, что она не может обосновать свои выводы. Следовательно, трудно оценить производительность модели, если вы не знаете, каким должен быть результат. В отличие от традиционного машинного обучения, вы не сможете протестировать алгоритм и выяснить, почему ваша система решила, что, например, на картинке изображен кот, а не собака.
  • Создание алгоритмов глубокого обучения обходится очень дорого. Это невозможно без квалифицированного персонала, обученного работе со сложной математикой. Более того, глубокое обучение - ресурсоемкая технология. Для обучения моделей требуются мощные графические процессоры и много памяти. Требуется много памяти для хранения входных данных, весовых параметров и функций активации, когда входные данные распространяются по сети. Иногда алгоритмы глубокого обучения становятся настолько энергоемкими, что исследователи предпочитают использовать другие алгоритмы, даже жертвуя точностью прогнозов.

Однако во многих случаях глубокое обучение невозможно заменить.

Как можно применить DL к реальным проблемам?

Сегодня глубокое обучение применяется в разных отраслях для различных целей:

  • Распознавание речи. Все основные коммерческие системы распознавания речи (например, Microsoft Cortana, Alexa, Google Assistant, Apple Siri) основаны на глубоком обучении.
  • Распознавание образов. Системы распознавания образов уже способны давать более точные результаты, чем человеческий глаз в медицинской диагностике.
  • Обработка естественного языка. Нейронные сети использовались для реализации языковых моделей с начала 2000-х годов. Изобретение LSTM помогло улучшить машинный перевод и языковое моделирование.
  • Открытие новых лекарств. Например, нейронная сеть AtomNet использовалась для предсказания новых биомолекул, которые потенциально могут лечить такие болезни, как лихорадка Эбола и рассеянный склероз.
  • Рекомендательные системы. Сегодня глубокое обучение используется для изучения пользовательских предпочтений во многих областях. Netflix - один из ярких примеров в этой сфере.

Что такое искусственные нейронные сети?

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

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

Определение ИНС

Искусственная нейронная сеть во многом вдохновлена ​​структурой человеческого мозга. Проще говоря, ИНС представляет собой последовательность нейронов, соединенных синапсами. Эти последовательности часто организованы в слои.

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

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

Искусственные нейронные сети невероятно ценны не только для анализа поступающей информации, но и для воспроизведения ее из своей памяти.

Компоненты нейронных сетей

Каждая нейронная сеть состоит из нейронов, синапсов, весов, смещений и функций.

Нейроны

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

Все нейроны в сети делятся на три группы:

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

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

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

Нейроны работают только с числами в диапазоне [0,1] или [-1,1]. Чтобы превратить данные во что-то, с чем может работать нейрон, нам нужна нормализация. О том, что это такое, мы рассказали в посте о регрессионном анализе.

Подождите, а как нейроны общаются? Через синапсы.

Синапсы и веса

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

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

Предвзятость

Нейрон смещения позволяет сохранять больше вариаций весов. Смещения добавляют более богатое представление о входном пространстве к весам модели.

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

Это правда, что ИНС могут работать без смещения нейронов. Однако они почти всегда добавляются и считаются неотъемлемой частью общей модели.

Как работают ИНС

Каждый нейрон обрабатывает входные данные, чтобы извлечь особенность. Представим, что у нас есть функции x1, x2, x3 и три нейрона, каждый из которых связан со всеми этими функциями.

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

Для выполнения преобразований и получения результата каждый нейрон имеет функцию активации. Это позволяет нам получить новое пространство функций. Эта комбинация функций выполняет преобразование, которое описывается общей функцией F - она ​​описывает формулу, лежащую в основе магии NN.

Функций активации очень много. Мы рассмотрим самые распространенные: линейный, сигмовидный и гиперболический тангенс. Их главное отличие - это диапазон ценностей, с которыми они работают.

Линейная функция

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

Сигмовидная

Это наиболее распространенная функция активации. Диапазон его значений [0,1]. Однако вы не можете использовать его, если в вашем исследовании есть отрицательные значения (например, акции могут не только расти, но и падать). В этом случае вам понадобится функция, которая работает с отрицательными значениями.

Гиперболический тангенс

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

Как тренировать алгоритм?

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

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

Итерация

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

Эпоха

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

Партия

Размер пакета равен количеству обучающих примеров за один проход вперед / назад. Чем больше размер пакета, тем больше места в памяти вам понадобится.

В чем разница между итерацией и эпохой?

  • Одна эпоха - это один проход вперед и один проход назад всех обучающих примеров.
  • Количество итераций - это количество проходов, при каждом проходе используется [размер пакета] количество примеров. Чтобы было ясно, один проход равен одному проходу вперед + одному проходу назад (мы не считаем прямой проход и обратный проход как два разных прохода).

А как насчет ошибок?

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

Ошибка может быть вычислена по-разному, но мы рассмотрим только три основных способа: среднеквадратичная ошибка, корневая MSE и Arctan.

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

  • В Arctan ошибка почти всегда будет больше, поскольку он работает по принципу: чем больше разница, тем больше ошибка.
  • В Root MSE ошибка наименьшая, и она более сбалансирована при вычислении ошибки. Чаще всего используется MSE.

Какие виды нейронных сетей существуют?

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

Нейронные сети с прямой связью

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

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

Рекуррентные нейронные сети

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

Рекуррентные нейронные сети широко используются в обработке естественного языка и распознавании речи.

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

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

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

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

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

Чтобы узнать, как работают сверточные нейронные сети, посмотрите это видео Луиса Серрано.

Генеративные состязательные нейронные сети

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

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

Какие проблемы решают сетевые сети?

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

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

Резюме

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