Что такое нейросети (ИНС) и как они работают

Введение

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

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

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

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

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

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

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

Нейросети для чайников

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

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

ИНС умеет все то же самое, но работает намного медленнее и сравнивая нейросеть с живым существом, ее мощность пока находится на уровне мухи. Все же наш мозг добился отличной работоспособности спустя 50 000 лет эволюции (если мы говорим о Homo sapiens), а нейросети существуют не более 65 лет. Современные технологии сильно шагнули вперед и нет никаких сомнений, что через 10-15 лет нейрокомпьютеры вплотную приблизятся по своим возможностям к человеческому мозгу благодаря стремительному развитию нейросетей и искусственного интеллекта в целом.

Нейросеть – в целом об ИНС

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

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

Вот так выглядит наш с вами нейрон – очень сложная биологическая система.

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

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

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

Виды нейронных сетей

В общих чертах мы определились с тем, что же такое нейронная сеть. Теперь пришло время поговорить об их разновидностях и типах, то есть о классификации. Но тут потребуется небольшое уточнение. Каждая нейронная сеть включает в себя первый слой нейронов, называемый входным. Этот слой не выполняет каких-либо преобразований и вычислений, его задача в другом: принимать и распределять входные сигналы по остальным нейронам. И этот слой единственный, являющийся общим для всех типов нейросетей, а критерием для деления является уже дальнейшая структура:
1. Однослойная структура нейронной сети. Представляет собой структуру взаимодействия нейронов, в которой сигналы со входного слоя сразу направляются на выходной слой, который, собственно говоря, не только преобразует сигнал, но и сразу же выдаёт ответ. Как уже было сказано, 1-й входной слой только принимает и распределяет сигналы, а нужные вычисления происходят уже во втором слое. Входные нейроны являются объединёнными с основным слоем с помощью синапсов с разными весами, обеспечивающими качество связей.
2. Многослойная нейронная сеть. Здесь, помимо выходного и входного слоёв, имеются ещё несколько скрытых промежуточных слоёв. Число этих слоёв зависит от степени сложности нейронной сети. Она в большей степени напоминает структуру биологической нейронной сети. Такие виды были разработаны совсем недавно, до этого все процессы были реализованы с помощью однослойных нейронных сетей. Соответствующие решения обладают большими возможностями, если сравнивать с однослойными, ведь в процессе обработки данных каждый промежуточный слой — это промежуточный этап, на котором осуществляется обработка и распределение информации.

Кроме количества слоёв, нейронные сети можно классифицировать по направлению распределения информации по синапсам между нейронами:
1. Нейросети прямого распространения (однонаправленные). В этой структуре сигнал перемещается строго по направлению от входного слоя к выходному. Движение сигнала в обратном направлении не осуществляется и в принципе невозможно. Сегодня разработки этого плана распространены широко и на сегодняшний день успешно решают задачи распознавания образов, прогнозирования и кластеризации.
2. Рекуррентные нейронные сети (с обратными связями). Здесь сигнал двигается и в прямом, и в обратном направлении. В итоге результат выхода способен возвращаться на вход. Выход нейрона определяется весовыми характеристиками и входными сигналами, плюс дополняется предыдущими выходами, снова вернувшимися на вход. Этим нейросетям присуща функция кратковременной памяти, на основании чего сигналы восстанавливаются и дополняются во время их обработки.
3. Радиально-базисные функции.
4. Самоорганизующиеся карты.

Но это далеко не все варианты классификации и виды нейронных сетей. Также их делят:
1. В зависимости от типов нейронов:
— однородные;
— гибридные.
2. В зависимости от метода нейронных сетей по обучению:
— обучение с учителем;
— без учителя;
— с подкреплением.
3. По типу входной информации нейронные сети бывают:
— аналоговые;
— двоичные;
— образные.
4. По характеру настройки синапсов:
— с фиксированными связями;
— с динамическими связями.

Читайте также:  Обзор Nokia N9. Революция, развитие или конец?

Ещё существуют понятия гетероассоциативные или автоассоциативные нейросети.

Схема и концепция работы

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

Как мы знаем, 1-й запуск нейросети не даст верных результатов, ведь она ещё не натренирована. Если мы говорим о понятии функции активации, то эта функция используется в целях нормализации входных данных. Этих функций бывает много, но хотелось бы выделить основные, имеющие самое широкое распространение. Главное отличие — диапазон значений, где они функционируют:
— линейная функция f(x) = x. Является наиболее простой из всех, должна применяться лишь для тестирования созданной нейросети либо передачи данных в исходной форме;
— сигмоид — более распространённая функция активации. Диапазон значений — от нуля до единицы. Также её называю логистической функцией;
— гиперболический тангенс. Метод нужен для охвата также и отрицательных значений. Когда их применение не предусмотрено, гиперболический тангенс не нужен.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Нейроны

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

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

  • входные данные (input data),
  • выходные данные (output data).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Тренировочный сет — это последовательность данных, которыми оперирует нейронная сеть. В нашем случае исключающего или (xor) у нас всего 4 разных исхода то есть у нас будет 4 тренировочных сета: 0xor0=0, 0xor1=1, 1xor0=1,1xor1=0.

Итерация

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

Искусственные нейронные сети

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

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

Применение нейронных сетей

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

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

Типы нейронных сетей

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

  • сверточные нейронные сети,
  • реккурентные нейронные сети,
  • нейронную сеть Хопфилда.

Далее мы детально остановимся на некоторых из них.

нейрон

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

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

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

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

Рекуррентными называют такие нейронные сети, соединения между нейронами которых, образуют ориентировочный цикл. Имеет такие характеристики:

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

Рекуррентные нейронные сети применяются в распознавании и обработке текстовых данных (в частотности на их основе работает Гугл переводчик, алгоритм Яндекс «Палех», голосовой помощник Apple Siri).

Где применяют нейронные сети?

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

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

Схема нейронной сети:

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

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

P. S. Одно дело читать, другое дело — практиковаться. Если вас интересует развитие навыков работы с современными нейронными сетями (neural networks) и вы хотели изучить различные связанные технологии из категории «нейро», ждём вас на наших курсах. Все занятия проходят онлайн, потребуется только компьютер и интернет. Специалистом может стать каждый

Обратное распространение

обратное распространение

  • Суммарная ошибка (total_error) вычисляется как разность между ожидаемым значением «y» (из обучающего набора) и полученным значением «y_» (посчитанное на этапе прямого распространения ошибки), проходящих через функцию потерь (cost function).
  • Частная производная ошибки вычисляется по каждому весу (эти частные дифференциалы отражают вклад каждого веса в общую ошибку (total_loss)).
  • Затем эти дифференциалы умножаются на число, называемое скорость обучения или learning rate (η).

Полученный результат затем вычитается из соответствующих весов.

В результате получатся следующие обновленные веса:

  • w1 = w1 — (η * ∂(err) / ∂(w1))
  • w2 = w2 — (η * ∂(err) / ∂(w2))
  • w3 = w3 — (η * ∂(err) / ∂(w3))

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

карлон data scientist
Популярный мем о том, как Карлсон стал Data Science разработчиком

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

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

Частные производные

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

Разберем необходимость частных производных на примере.

Предположим, детей попросили бросить дротик в мишень, целясь в центр. Вот результаты:

основы - нейронная сеть

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

частные производные

Ошибка нескольких детей может уменьшиться, но общая ошибка все еще увеличивается.

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

Читайте также:  Топ приложений которые позволят объединить все ваши мессенджеры в один

нейронные сети частная производная

Прямое распространение ошибки

Прямое распространение ошибки
Прямое распространение

Зададим начальные веса случайным образом:

  • w1
  • w2
  • w3

Умножим входные данные на веса для формирования скрытого слоя:

  • h1 = (x1 * w1) + (x2 * w1)
  • h2 = (x1 * w2) + (x2 * w2)
  • h3 = (x1 * w3) + (x2 * w3)

Выходные данные из скрытого слоя передается через нелинейную функцию (функцию активации), для получения выхода сети:

  • y_ = fn(h1 , h2, h3)

Гиперпараметры

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

Глубокие нейронные сети

Глубокое обучение (deep learning) – это класс алгоритмов машинного обучения, которые учатся глубже (более абстрактно) понимать данные. Популярные алгоритмы нейронных сетей глубокого обучения представлены на схеме ниже.

Популярные алгоритмы нейронных сетей

Более формально в deep learning:

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

Пример

Рассмотрим однослойную нейронную сеть:

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

Здесь, обучается первый слой (зеленые нейроны), он просто передается на выход.

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

двухслойная нейронная сеть

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

нейросеть

Не следует путать с широкой нейронной сетью.

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

Пример:

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

Но

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

Главное — баланс

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

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

Проклятье размерности

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

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

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

Компромисс

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

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

Действительно,

переобучение, недообучение

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

Следовательно, как правило, невозможно иметь маленькое смещение и маленькую дисперсию одновременно.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Заключение

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

Источники

  • https://nuancesprog.ru/p/8421/
  • https://Mining-CryptoCurrency.ru/nejronnye-seti/
  • https://zen.yandex.ru/media/iteasy/chto-takoe-neiroseti-ins-i-kak-oni-rabotaiut-5ee3585169fe895ccbaa226b
  • https://habr.com/ru/post/312450/
  • https://otus.ru/nest/post/1263/
  • https://www.poznavayka.org/nauka-i-tehnika/neyronnyie-seti-ih-primenenie-rabota/
  • https://neurohive.io/ru/osnovy-data-science/osnovy-nejronnyh-setej-algoritmy-obuchenie-funkcii-aktivacii-i-poteri/

[свернуть]
Adblock
detector