Обучение нейронной сети заключается в поиске набора весов для преобразования входного сигнала в желаемый выходной сигнал после его прохождения через сеть.
Как работает нейронная сеть: алгоритмы, обучение, функции активации и потери
Нейронная сеть — это попытка воссоздать человеческий мозг с помощью математических моделей для создания машин с искусственным интеллектом.
Искусственная нейронная сеть обычно обучается с помощью преподавателя. Это означает, что имеется обучающий набор (датасет) с примерами с реальными значениями (метки, классы, метрики).
Необученные наборы также используются для обучения нейронных сетей, но мы не будем углубляться в эту тему.
Например, если вы хотите построить нейронную сеть для оценки тональности текста, набор данных будет представлять собой список предложений, каждому из которых присвоены значения настроения. Тон текста определяется особенностями (слова, фразы, структура предложения), которые придают ему негативную или позитивную окраску. Весомость признаков в итоговой оценке тональности текста (положительный, отрицательный, нейтральный) зависит от математической функции, которая рассчитывается при обучении нейронной сети.
В прошлом характеристики создавались вручную людьми. Чем больше функций и чем точнее подобраны веса, тем точнее ответ. Нейронная сеть автоматизирует этот процесс.
Искусственная нейронная сеть состоит из трех элементов:
- Входной слой,
- Скрытые (вычислительные) слои,
- Входной слой, Скрытые слои, Слой скрытой информации, Выходной слой.
При прямом распространении ошибки реакция прогнозируется. При обратном распространении минимизируется ошибка между фактическим ответом и предсказанным ответом.
Прямое распространение ошибки
Прямое распространение
Зададим начальные веса произвольно:
Умножьте входные данные на веса, чтобы сформировать скрытый слой:
- h1 = (x1 * w1) + (x2 * w1)
- h2 = (x1 * w2) + (x2 * w2)
- h3 = (x1 * w3) + (x2 * w3)
Выход скрытого слоя проходит через нелинейную функцию (функцию активации) для получения выходного сигнала сети:
Обратное распространение
- Общая ошибка (total_error) рассчитывается как разница между ожидаемым значением «y» (из обучающего множества) и полученным значением «y_» (рассчитанным на этапе прямого распространения ошибки), проходящая через функцию потерь (функцию стоимости).
- Частичная производная ошибки рассчитывается для каждого веса (эти частичные разности отражают вклад каждого веса в общую ошибку (total_loss)).
- Затем эти различия умножаются на число, называемое скоростью обучения или скоростью обучения (h).
Затем полученная оценка вычитается из соответствующих весов.
В результате получаются следующие обновленные веса:
- w1 = w1 — (η * ∂(err) / ∂(w1))
- w2 = w2 — (η * ∂(err) / ∂(w2))
- w3 = w3 — (η * ∂(err) / ∂(w3))
Тот факт, что мы предполагаем, что веса инициализируются случайным образом и дают точные ответы, звучит не совсем разумно, но это хорошо работает.
Популярный мем о том, как Карлсон стал программистом в области науки о данных.
Если вы знакомы с рядами Тейлора, то обратное распространение ошибки приводит к тому же результату. Только вместо бесконечного ряда мы пытаемся оптимизировать только первый член.
Сдвиги — это веса, которые добавляются к скрытым слоям. Они также инициализируются случайным образом и обновляются так же, как и скрытый слой. Задача скрытого слоя — определить форму базовой функции в данных, а задача смещения — сдвинуть найденную на краю функцию так, чтобы она частично совпала с исходной функцией.
Проблема этой нейронной сети заключается в низкой скорости обучения. Более того, он не хранит долгосрочную информацию, то есть не работает с долгосрочной перспективой. Обычная рекуррентная сеть, такая как перцептрон, больше подходит для разработки более сложных архитектур (LSTM, GRU).
Что такое нейросети?
Нейронные сети — это математические модели и их реализация в программном обеспечении, основанные на структуре нервной системы человека. Простейшую нейронную сеть, перцептрон (модель мозга для восприятия информации), вы можете легко написать сами и запустить на своем компьютере, не прибегая к сторонним мощностям или дополнительному оборудованию.
Чтобы лучше понять, о чем идет речь, мы должны сначала попытаться понять, как работают биологические нейронные сети — те, что находятся в наших телах. Они являются прототипом для механических нейронных сетей.
Биологические нейронные сети. Нервная система живого существа состоит из нейронов — клеток, которые хранят и передают информацию в виде электрических и химических импульсов. Нейроны имеют ствол — основную часть клетки — и дендрит — длинное продолжение клетки, длина которого может достигать сантиметра. Дендриты переносят информацию от одной клетки к другой и служат «проводами» для нервных импульсов. Они соединяются с другими нейронами с помощью специальных отростков, благодаря чему сигналы передаются по всей нервной системе.
В качестве примера можно взять любое сознательное действие. Пример: человек решает поднять руку: Сначала в мозге высвобождается пусковой механизм, а затем информация передается по сети нейронов от одной клетки к другой. По пути она трансформируется и, наконец, достигает клеток руки. Рука поднимается. Именно так работает большинство процессов в организме — под контролем мозга.
Однако главной особенностью нейронных сетей является их способность к обучению. Именно на этом основаны машинные нейронные сети.
Первые машинные нейронные сети. В 1940-х годах была предпринята первая попытка математического описания нейронных сетей. В 1950-х годах модель была воссоздана с помощью кода. Полученная структура называется перцептроном. На схемах и иллюстрациях она обычно представлена в виде ряда кругов и соединяющих их линий — это и есть нейроны, образующие сетку.
Перцептрон был проще, чем современная нейронная сеть. В нем был только один слой и три типа элементов: Первый тип получает информацию, второй обрабатывает и устанавливает ассоциативные связи, а третий производит результат.
Но даже рудиментарная структура уже была способна обучаться простым задачам и решать их с большей или меньшей точностью. Например, перцептрон может ответить на вопрос, есть ли на картинке объект, который он научился распознавать. Он мог отвечать только на вопросы с двумя возможными ответами: «Да» и «Нет».
Затем развитие нейронных сетей замедлилось. Технологии, доступные в то время, были недостаточны для создания мощной системы. Разработка шла медленно, но чем больше развивалась компьютерная индустрия, тем больший интерес вызывала эта идея.
Современные нейронные сети. По мере развития компьютеров до их нынешних возможностей идея нейронной сети снова стала привлекательной. К этому времени ученые уже описали множество алгоритмов, помогающих распределять информацию между нейронами, и предложили различные структуры. Это были одноуровневые и многоуровневые, однонаправленные и рекуррентные сети — более подробно мы обсудим классификацию позже.
Чем более совершенными становились компьютеры, тем более сложные и интересные задачи могли выполнять нейронные сети. Производительность системы играет важную роль, поскольку каждый нейрон постоянно выполняет вычисления, требующие большого количества ресурсов. Для решения сложной задачи обычно требуется множество нейронов, их крупномасштабная структура и множество математических функций. Конечно, для этого потребуется очень мощный компьютер.
Как работает нейросеть?
Структура нейрона реконструируется с помощью кода. Ячейка используется в качестве «стержня», в котором хранится ограниченный диапазон значений. Информация об «импульсах нейронов» хранится в виде математических формул и чисел.
Связи между нейронами также реализованы программно. Один из них отправляет некоторую вычисленную информацию другому, который получает и обрабатывает ее, а затем отправляет результат собственных вычислений. Таким образом, информация передается по сети, и коэффициенты в нейронах меняются — процесс обучения продолжается.
Как работает обучение?
Предоставление информации. Когда нейронная сеть обучается, ей «предъявляют» данные, на основе которых нужно сделать прогноз, и она получает правильные ответы — это называется обучающим шаблоном. Должно быть большое количество информации — считается, что оно как минимум в десять раз превышает количество нейронов в сети.
Во время обучения нейронные сети получают некоторую информацию и им сообщают, что это за информация, т.е. они получают ответ. Все данные представлены не в словах, а в виде формул и числовых коэффициентов. Например, изображение женщины соответствует «1», а изображение мужчины — «0». Это простой пример; реальные сети более сложны.
Трансформации. Входные нейроны принимают информацию, преобразуют ее и отправляют дальше. Содержание информации автоматически обрабатывается с помощью формул и преобразуется в математические коэффициенты. Точно так же, как то, что мы видим глазами, преобразуется в нервные импульсы и посылается в мозг. Она обрабатывает их, и люди понимают, что происходит вокруг них. Здесь принцип аналогичный.
Обработка и формулирование выводов. Каждый нейрон имеет «вес» — число, вычисляемое специальными алгоритмами. Он показывает, насколько важны показания нейрона для всей сети. Поэтому веса нейронов меняются в процессе обучения и автоматически уравновешивают друг друга.
В результате возникает ситуация, когда определенные нейроны реагируют, например, на силуэт человека — и производят информацию, которая преобразуется в реакцию: «Это человек». Человека не обязательно описывать в виде ряда математических чисел — в процессе обучения нейронная сеть сама определяет значения определяющих ее весов.
Результат. Выходом нейронной сети становится серия формул и чисел, которые преобразуются в ответ. Например, если изображение мужчины равно «0», а женщины — «1», то результат 0,67 будет означать что-то вроде «Скорее всего, это женщина». Из-за своей структуры нейронная сеть не может дать абсолютно точный ответ, только вероятности. А из-за закрытой природы и нестабильности нейронов показания могут отличаться даже в идентичных образцах.
Перцептрон — это самый простой тип нейронной сети. Он основан на математической модели восприятия информации мозгом, которая состоит из сенсоров, ассоциативных и реактивных элементов.
Нейронные сети
Нейронные сети — это современное направление в науке и технике. Они используются для совершенствования программ и создания целых систем, которые автоматизируют, ускоряют и поддерживают работу человека. Главная городская цель — научить систему самостоятельно принимать решения в сложных ситуациях, как это делают люди.
Биологические нейронные сети
Многое из того, чего человечество хотело бы достичь искусственным путем, уже сделано природой. Человеческий мозг оснащен удивительной нейронной сетью, которая до сих пор исследуется. Генетически биологические нейронные сети довольно сложны, и человеку без соответствующей технической подготовки было бы трудно понять, как работает естественная нейронная сеть.
Упрощенно можно сказать, что биологическая нейронная сеть — это часть нервной системы в мозге человека. Сочетание нейронов и сети позволяет нам думать, принимать решения и воспринимать окружающий мир. Биологический нейрон — это клетка, основными компонентами которой являются ядро, корешки, тела и другие компоненты для тесной связи с тысячами нейронов. По этой связи передаются электрохимические импульсы, которые приводят нейронную сеть в состояние покоя или возбуждения. Например, перед экзаменом или другим важным событием возникает импульс, который распространяется по нейронной сети мозга, приводя ее в состояние возбуждения. Затем нервная система передает это состояние другим органам, что приводит к учащению сердцебиения, частому морганию век и другим проявлениям возбуждения.
Рассмотрим компоненты нейрона в соответствии с упрощенной теорией естественной нейронной сети. Он состоит из тела клетки и клеточного ядра. Тело содержит множество ответвлений, называемых дендритами. Длинные дендриты называются аксонами. Они используются для связи между нейронами через синапсы (места контакта между двумя нейронами, через которые передается импульс). В этом случае мы можем увидеть закономерность. Сигнал поступает на дендрит (таким образом, это вход), он передается по оси (выход) другому нейрону. В точке синаптической передачи импульса его частота и амплитуда могут меняться (переменные компоненты сложного уравнения, влияющие на состояние сигнала). Примерно так работает физическая нейронная сеть в голове каждого человека. В таком случае, почему бы не создать искусственную нейронную сеть, подобную естественной, без биологического компонента? Дендрит будет действовать как вход, ось — как выход, тело нейрона — как сумматор, а код, состоящий из 0 и 1, может задавать частоту, импульс сигнала, прежде чем он будет подан на сумматор в секции «вес». Это основной компонент нейрона. В целом, математическая и графическая модель нейрона может быть описана следующим образом.
Вы можете нарисовать и представить алгоритм с помощью абстрактной схемы. Существуют различные методы представления диаграмм нейронных сетей, но для наглядности будет проще использовать круги со стрелками.
После изучения основных аспектов мы можем дать определение искусственной нейронной сети — это модель физической нейронной сети, построенная по математическим правилам и воплощенная в жизнь с помощью программных и аппаратных компонентов.
История нейронных сетей
Разработка искусственной нейронной сети началась с появлением электронных вычислительных машин (ЭВМ) в конце 1940-х годов. В то время канадский физиолог и нейропсихолог Дональд Хебб разработал алгоритм нейронной сети и определил принципы ее работы в компьютере. 1. 1954 год — первая практическая реализация нейронной сети в работающем компьютере. 2. 1958 — Американский нейрофизиолог и ученый в области искусственного интеллекта Фрэнк Розенблатт разрабатывает алгоритм распознавания образов и делает его краткое изложение общедоступным. 3. 1960 — Компьютер не мог должным образом выполнять сложные задачи, поставленные перед ним, из-за своей малой мощности, поэтому интерес к технологии несколько ослаб. 4. двадцать лет «компьютеризация» была в самом разгаре, и мощности компьютеров в то время было достаточно, чтобы возродить интерес к нейронным сетям. В 1980 году появилась система с механизмом обратной связи, и началась разработка самообучающихся алгоритмов. 5 В последующие 20 лет мощность компьютеров возросла настолько, что к 2000 году исследователи смогли использовать нейронные сети для решения многочисленных задач. Появились программы для распознавания речи, имитационного зрения и когнитивного восприятия информации. Нейронные сети, машинное обучение, робототехника и компьютеризация стали частью более крупного целого под названием «искусственный интеллект».
Распознавание образов, принятие решений, прогнозирование, аппроксимация, анализ данных.
Изучение грамматики английского языка требует знания большого количества понятий. В этом случае широкая однослойная нейронная сеть работает намного лучше, чем глубокая нейронная сеть, которая намного меньше.
А что ещё нас ждет в будущем?
Самообучающиеся нейронные сети могут заменить человека: Начните с копирайтеров и корректоров. Роботы уже создают осмысленные и безошибочные тексты. И делают они это гораздо быстрее, чем люди. Их продолжат работники колл-центров, технической поддержки, модераторы и руководители групп в социальных сетях. Нейронные сети уже умеют изучать сценарий и воспроизводить его фонетически. А как насчет других областей?
Аграрный сектор
Нейронные сети применяются к конкретным машинам. Сельскохозяйственные уборочные машины управляются автоматически, сканируют растения, исследуют почву и передают данные в нейронную сеть. Он решает, нужно ли поливать, удобрять или опрыскивать против вредителей. Вместо нескольких десятков сотрудников, для сети потребуется не более двух человек: супервайзер и технический специалист.
Медицина
Microsoft прилагает все усилия, чтобы вылечить рак. Ученые работают над биопрограммированием — пытаются обойти процесс, с помощью которого опухоли формируются и растут. Если это удастся, программисты смогут найти способ блокировать этот процесс, по аналогии будет создано лекарство.
Маркетинг
Маркетинг будет максимально персонализирован. Уже сейчас нейронные сети могут в считанные секунды определить, какой пользователь, какой контент и по какой цене должен быть показан. В будущем участие маркетолога будет сведено к минимуму: Нейронные сети будут предсказывать вопросы на основе данных о поведении пользователей, сканировать рынок и делать наиболее подходящие предложения в тот момент, когда человек рассматривает возможность покупки.
Ecommerce
Электронная коммерция будет внедряться повсеместно. Больше не нужно будет переходить по ссылке в интернет-магазин: Вы сможете купить все прямо там, где вы это видите, одним щелчком мыши. Например, вы читаете эту статью через несколько лет. Вам так нравится помада на скриншоте из MakeUp Plus (см. выше), что вы кликаете на нее и она попадает прямо в вашу корзину. Или вы смотрите видео о новейших Hololens (очки смешанной реальности) и тут же заказываете прямо с YouTube.
Почти во всех отраслях будут цениться люди со знанием или хотя бы пониманием нейронных сетей, машинного обучения и систем искусственного интеллекта. Мы будем существовать бок о бок с роботами. И чем больше мы будем знать о них, тем лучше мы сможем с ними справиться.
P.S. Зинаида Фолс — нейронная сеть от Яндекса, которая пишет стихи. Угадайте произведение, которое написала машина, обученная по Маяковскому (орфография и пунктуация сохранены):
«Это»
Это только что-то в будущем и власть, которую имеет человек Все в мире или нет — это кровь, чтобы нагулять руки Слава на земле с треском клюва
Искусственная нейронная сеть — это своего рода мозг. Изначально он был запрограммирован для упрощения некоторых сложных вычислительных процессов. Сегодня нейронные сети имеют гораздо больше возможностей. Некоторые из них находятся на вашем смартфоне. Некоторые из них уже находятся в вашей базе данных, когда вы открыли эту статью. Читайте дальше, чтобы узнать, как все они работают и почему.
Перцептрон
Перцептрон — это самый простой тип нейронной сети. Он основан на математической модели восприятия информации мозгом, которая состоит из сенсоров, ассоциативных и реактивных элементов.
История
Концепция перцептрона была предложена нейрофизиологом Фрэнком Розенблаттом. Он предложил схему устройства, имитирующего человеческий процесс восприятия, и назвал его «перцептрон» (от лат. perceptio — восприятие). В 1960 году Розенблатт разработал первый нейрокомпьютер Mark-1, который мог распознавать определенные буквы английского алфавита.
Таким образом, перцептрон является одной из первых моделей нейронных сетей, а Mark-1 — первым в мире нейрокомпьютером.
Описание
Перцептрон основан на математической модели, которая описывает, как мозг воспринимает информацию. Разные исследователи определяют его по-разному. В самом общем виде (как описал Розенблатт) он представляет собой систему из трех различных типов элементов: Сенсоры, ассоциативные элементы и реактивные элементы.
Принцип работы перцептрона заключается в следующем:
- Первыми активируются S-элементы. Они могут находиться либо в состоянии покоя (сигнал равен 0), либо стимулироваться (сигнал равен 1),
- Затем сигналы передаются от S-элементов к A-элементам через так называемые S-A-связи. Эти связи могут иметь только вес а-1, 0 или 1,
- Затем сигналы от сенсорных элементов, прошедших по S-A связям, попадают в A-элементы, которые еще называют ассоциативными элементами;
- Одному элементу A может соответствовать несколько элементов S,
- Если суммарные сигналы, принятые элементом A, превышают одно из пороговых значений math\theta/math, этот элемент A возбуждается и излучает сигнал, равный 1,
- В противном случае (сигнал от элемента S не превышает порог элемента A) генерируется нулевой сигнал,
- Затем сигналы, генерируемые запитанными элементами A, подаются на сумматор (элемент R), функция которого нам уже известна. Однако, чтобы достичь элемента R, они должны пройти через элементы A-R, которые также имеют веса (которые, в отличие от элементов S-A, уже могут принимать любые значения),
- R-элемент складывает друг с другом взвешенные сигналы от A-элементов, а затем
- Если оно превышает определенное пороговое значение, то генерируется выходной сигнал 1,
- Если порог не превышен, выход перцептрона раве н-1.
Для элементов перцептрона используются следующие названия:
- S-элементы называются датчиками,
- S-элементы называются S-элементами, S-элементы называются корреляционными элементами,
- R-элементы называются реактивными элементами.
Классификация перцептронов
Перцептрон со скрытым слоем (элементарный перцептрон) — перцептрон, имеющий только один слой с элементами S, A и R.
До сих пор с нейронными сетями работали в основном крупные компании и фермерские хозяйства. Чтобы создать нейронную сеть, которая будет достаточно хорошо работать в сложных условиях, нужны мощные машины и большие наборы обучающих данных. Только крупные компании могут предоставить такие ресурсы.
Как работает нейронная сеть?
Этот пример показывает часть нейронной сети, где буквы I обозначают входные нейроны, буква H обозначает скрытый нейрон, а буква w обозначает веса. Формула показывает, что вход представляет собой сумму всех входов, умноженную на их соответствующие веса. Затем введите 1 и 0 в качестве входных данных. Это w1 = 0.4 и w2 = 0.7. Вход нейрона H1 выглядит следующим образом: 1*0.4+0*0.7=0.4. Теперь, когда у нас есть входные данные, мы можем получить выходные данные, подставив входное значение в функцию активации (подробнее об этом позже). Теперь, когда у нас есть выходные данные, мы передаем их дальше. И так повторяем для всех уровней, пока не дойдем до выходного нейрона. Когда мы запустим такую сеть в первый раз, мы обнаружим, что ответ далек от правильного, потому что сеть не была обучена. Чтобы улучшить результаты, мы обучим его. Но прежде чем мы узнаем, как это сделать, давайте познакомимся с некоторыми терминами и свойствами нейронной сети.
Функция активации
Функция активации — это способ нормализации входных данных (мы говорили об этом ранее). То есть, если у вас есть большое число в качестве входных данных, прогон его через функцию активации приведет к получению выходных данных в нужном вам диапазоне. Существует несколько функций активации, поэтому мы рассмотрим самые основные из них: линейную, сигмоидную (логистическую) и гиперболический тангенс. Основное различие между ними заключается в диапазоне значений.
Линейная функция
Эта функция почти никогда не используется, за исключением тестирования нейронной сети или передачи значения без преобразований.
Это наиболее распространенная функция активации, имеющая диапазон значений 0.1. Именно она показывает наибольшее количество примеров в сети и иногда называется логистической функцией. Аналогично, если ваш случай включает в себя отрицательные значения (например, акции могут идти как вниз, так и вверх), вам нужна функция, которая также фиксирует отрицательные значения.
Гиперболическая касательная
Использование гиперболического тангенса целесообразно только в том случае, если значения могут быть как отрицательными, так и положительными, поскольку диапазон функции раве н-1,1. Не рекомендуется использовать эту функцию только с положительными значениями, так как это значительно ухудшит результаты вашей нейронной сети.
Тренировочный сет
Обучающая сеть — это последовательность данных, с которыми работает нейронная сеть. В нашем случае исключения или (xor) мы имеем только 4 различных результата, т.е. у нас есть 4 обучающих набора: 0xor0=0, 0xor1=1, 1xor0=1,1xor1=0.
Это своего рода счетчик, который увеличивается каждый раз, когда нейронная сеть проходит через обучающий набор. Другими словами, это общее количество обучающих наборов, которые прошла нейронная сеть.
Эпоха
При инициализации нейронной сети это значение устанавливается на 0 и имеет ручной верхний предел. Чем выше номер эпохи, тем лучше обучена сеть и тем лучше ее результаты. Эпоха увеличивается каждый раз, когда мы проходим через весь набор обучающих наборов, в нашем случае 4 набора или 4 итерации.
Важно не путать итерации с сезонами и понимать порядок их увеличения. Первая итерация увеличивает n раз, а затем сезон, а не наоборот. Другими словами, вы не можете обучить нейронную сеть на одном наборе, затем на другом и так далее. Вы должны обучать каждый набор один раз за эпоху. Так вы сможете избежать ошибок в расчетах.
Многослойная нейронная сеть ) — это нейронная сеть, которая состоит из входной сети, выходной сети и одного или нескольких скрытых слоев нейронов между ними.
Вариационный автоэнкодер
Автоэнкодер переменных использует вероятностный подход для описания наблюдения. Он показывает распределение вероятности для каждого признака в наборе признаков.
Применение переменного автоэнкодера:
- Интерполяция и аппроксимация
- Автоматическое формирование изображения
Шумоподавляющий автоэнкодер
Когда количество нейронов в скрытом слое равно или больше, чем во входном слое, может возникнуть проблема идентификации. Это происходит, когда то, что отправлено на вход, получено на выходе. Такой автоматический кодировщик бесполезен.
Эта проблема решается автоматическим кодировщиком деноусинга, который искажает данные, случайным образом устанавливая некоторые из входных значений на ноль или добавляя шум. При вычислении функции потерь выходные значения сравниваются с исходными входными данными, а не с искаженными.
Применение автоматического кодировщика деноусинга:
- Извлечение признаков
- Извлечение данных путем извлечения данных из данных.
Генеративно-состязательные сети (GAN)
Генеративные адверсарные сети (GAN) учатся генерировать новые данные, которые статистически не отличаются от исходных. Например, если мы обучим нашу GAN на картинах, то обученная модель сможет генерировать новые картины, похожие на оригиналы. Например, вы можете писать картины в стиле Ван Гога или Пикассо.
- Создание изображений и анимации
- Обработка лица (так называемый эффект старения или поиск похожего человека).
- Кибербезопасность
На нашем спецкурсе «PYNN: Введение в нейронные сети на Python» вы научитесь использовать глубокие нейронные сети для решения задач data science на практике в лицензированном учебно-образовательном центре для data scientist’ов и IT-специалистов в Москве.