Модель математической нейронной сети | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 4 мая, печатный экземпляр отправим 8 мая.

Опубликовать статью в журнале

Авторы: , ,

Рубрика: Технические науки

Опубликовано в Молодой учёный №15 (149) апрель 2017 г.

Дата публикации: 17.04.2017

Статья просмотрена: 1085 раз

Библиографическое описание:

Рашитов, Э. Э. Модель математической нейронной сети / Э. Э. Рашитов, К. Л. Стоякова, Р. Р. Ибраев. — Текст : непосредственный // Молодой ученый. — 2017. — № 15 (149). — С. 77-81. — URL: https://moluch.ru/archive/149/42296/ (дата обращения: 26.04.2024).



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

Ключевые слова: нейрон, синапс, нейронная сеть, функция активации, линейная функция, сигмоид, гиперболический тангенс, тренировочный сет

В этой статье хотелось бы поделиться опытом в изучении нейронных сетей и, как следствие, их реализации, с помощью языка программирования Java, на платформе Android. Первое знакомство с нейронными сетями произошло, когда появилось приложение Prisma. Оно обрабатывает любую фотографию, с помощью нейронных сетей, и воспроизводит ее с нуля, используя выбранный стиль. На удивление, нет ни одной статьи, которая четко и поэтапно расписывает алгоритм работы нейронных сетей. Информация полностью разрознена, отсутствуют ключевые моменты. Большинство авторов показывать только код на том или ином языке программирования, не прибегая к детальным объяснениям.

Первым и самым важным моим открытием был плейлист американского программиста Джеффа Хитона, в котором он подробно и наглядно разбирает принципы работы нейронных сетей и их классификации. После просмотра этого плейлиста, я решил создать свою нейронную сеть, начав с самого простого примера. Вам наверняка известно, что когда ты только начинаешь учить новый язык, первой твоей программой будет Hello World. В мире машинного обучения тоже есть свой Hello world — нейросеть, решающая проблему «исключающего или» (XOR) [6, 7, 8]. Таблица «исключающего или» выглядит следующим образом:

a

b

c

0

0

0

0

1

1

1

0

1

1

1

0

Нейронная сеть берет на вход два числа и должна на выходе дать другое число — ответ. Теперь о самих нейронных сетях.

Что такое нейронная сеть?

image

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

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

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

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

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

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

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

image

Нейронэто вычислительная единица, которая получает информацию, производит над ней простые вычисления и передает ее дальше. Они делятся на три основных типа: входной (синий), скрытый (красный) и выходной (зеленый) [5]. Также есть нейрон смещения и контекстный нейрон о которых мы поговорим в следующей статье. В том случае, когда нейросеть состоит из большого количества нейронов, вводят термин слоя. Соответственно, есть входной слой, который получает информацию, n скрытых слоев (обычно их не больше 3), которые ее обрабатывают и выходной слой, который выводит результат. У каждого из нейронов есть 2 основных параметра: входные данные (input data) и выходные данные (output data). В случае входного нейрона: input=output. В остальных, в поле input попадает суммарная информация всех нейронов с предыдущего слоя, после чего, она нормализуется, с помощью функции активации (представим ее f(x)) и попадает в поле output.

https://habrastorage.org/files/604/b53/081/604b530814bf4c079ffd165167497df1.png

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

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

https://habrastorage.org/files/6c9/879/ae3/6c9879ae3bf445b3a7e39c0a26598471.png

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

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

https://habrastorage.org/files/8bf/88c/293/8bf88c293fc64a55bf09ea3e8c991ecb.png

В данном примере изображена часть нейронной сети, где буквами I обозначены входные нейроны, буквой H — скрытый нейрон, а буквой w — веса. Из формулы видно, что входная информация — это сумма всех входных данных, умноженных на соответствующие им веса. Тогда дадим на вход 1 и 0. Пусть w1=0.4 и w2 = 0.7 Входные данные нейрона Н1 будут следующими: 1*0.4+0*0.7=0.4. Теперь, когда у нас есть входные данные, мы можем получить выходные данные, подставив входное значение в функцию активации (подробнее о ней далее). Выходные данные передаем дальше. Так мы повторяем для всех слоев, пока не дойдем до выходного нейрона. Запустив такую сеть в первый раз увидим, что ответ далек от правильно, потому что сеть не натренирована. Чтобы улучшить результаты мы будем ее тренировать. Давайте введем несколько терминов для описания свойств нейронной сети.

Функция активацииэто способ нормализации входных данных [2]. То есть, если на входе у вас будет большое число, пропустив его через функцию активации, вы получите выход в нужном вам диапазоне. Функций активации достаточно много поэтому мы рассмотрим самые основные: Линейная, Сигмоид и Гиперболический тангенс. Главные их отличия — это диапазон значений.

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

https://habrastorage.org/files/84d/a8a/f6b/84da8af6b86c4c48bcaafb5be1c53ff6.png

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

Сигмоид

https://habrastorage.org/files/150/8ef/062/1508ef06235444c3bc74a942812b4eb7.png

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

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

https://habrastorage.org/files/c71/db2/a75/c71db2a756494e5298ed1d5b5f15cbc9.png

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

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

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

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

https://habrastorage.org/files/d73/0a6/439/d730a643937f45ca997d73eec4fabddd.png

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

Ошибкаэто процентная величина, отражающая расхождение между ожидаемым и полученным ответами. Ошибка формируется каждую эпоху и должна идти на спад. Если этого не происходит, значит, вы что-то делаете не так. Ошибку можно вычислить разными путями, но мы рассмотрим лишь три основных способа: Mean Squared Error (далее MSE), Root MSE и Arctan. Здесь нет какого-либо ограничения на использование, как в функции активации, и вы вольны выбрать любой метод, который будет приносить вам наилучший результат. Стоит лишь учитывать, что каждый метод считает ошибки по-разному. У Arctan, ошибка, почти всегда, будет больше, так как он работает по принципу: чем больше разница, тем больше ошибка. У Root MSE будет наименьшая ошибка, поэтому, чаще всего, используют MSE, которая сохраняет баланс в вычислении ошибки.

MSE

https://habrastorage.org/files/8b2/b5a/997/8b2b5a9974f841a0af487f671aae850b.png

Root MSE

https://habrastorage.org/files/2dc/6e7/193/2dc6e7193baa47178ddd5ea8f33faa11.png

Arctan

https://habrastorage.org/files/7df/1a8/e0f/7df1a8e0f36944af87d7452701c97624.png

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

Заключение

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

Литература:

  1. Барский А. Б. Логические нейронные сети. — Изд-во: Бином. Лаборатория знаний, 2007. — 352 с.
  2. Галушкин А. И. Нейронные сети: основы теории. — Изд-во: Горячая линия — Телеком, 2012. — 496 с.
  3. Дорогов А. Ю. Теория и проектирование быстрых перестраиваемых преобразований и слабосвязанных нейронных сетей. — Изд-во: Политехника, 2014. — 344 с.
  4. Злобин В. К., Ручкин В. Н. Нейросети и нейрокомпьютеры. — Изд-во: БХВ-Петербург, 2011. — 256 с.
  5. Комарцова Л. Г., Максимов А. В. Нейрокомпьютеры. — М.: МГТУ им. Н. Э. Баумана, 2004. — 400 с.
  6. Тархов Д. А. Нейросетевые модели и алгоритмы / Справочник. — Изд-во: Радиотехника, 2014. — 352 с.
  7. Хайкин С. Нейронные сети. — Изд-во: Вильямс, 2016. — 1104 с.
  8. Флах П. Машинное обучение. Наука и искусство построения алгоритмов, которые извлекают знания из данных / Учебник. — Изд-во: ДМК Пресс, 2015. — 400 с.
Основные термины (генерируются автоматически): нейронная сеть, MSE, сеть, функция активации, нейрон, гиперболический тангенс, входная информация, данные, информация, ошибка.


Ключевые слова

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

Похожие статьи

Исследование возможностей использования нейронных сетей

Преимущества нейронных сетей: Устойчивость к шумам входных данных.

Гиперболический тангенс. В статье была рассмотрена модель искусственного нейрона.

Многослойная нейронная сеть (Multilayer neural network) — нейронная сеть, состоящая из...

Анализ средств для реализации нейронных сетей на языке...

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

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

Виды архитектур нейронных сетей | Статья в журнале...

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

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

Использование нейронных сетей для повышения надежности...

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

Распознавание английского текста сверточной нейронной сетью

Полезная информация.

Сверточная нейронная сеть была впервые предложена Я. Лекуном и Й. Бенгуа [1].

Седьмой слой рассматриваемой нейронной сети – полносвязный слой, содержащий 26 нейронов.

GRU и LSTM: современные рекуррентные нейронные сети

Чаще всего в качестве нелинейного преобразования применяют одну из следующих функций: сигмоидальная функция (1), гиперболический тангенс (2), функция-выпрямитель (3): (1). (2). (3). В простой рекуррентной нейронной сети (см. рис. 1)...

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

Функция активации. Гиперболический тангенс.

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

Обзор методов распознавания изображений | Статья в сборнике...

Свёрточные нейронные сети. Свёрточная нейронная сеть (Convolutional neural network или CNN) — специальная архитектура нейронных

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

Нейронные сети в системах управления процессами измельчения...

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

От еще одного часто встречающегося варианта функции активациигиперболического тангенса — было принято решение отказаться...

Похожие статьи

Исследование возможностей использования нейронных сетей

Преимущества нейронных сетей: Устойчивость к шумам входных данных.

Гиперболический тангенс. В статье была рассмотрена модель искусственного нейрона.

Многослойная нейронная сеть (Multilayer neural network) — нейронная сеть, состоящая из...

Анализ средств для реализации нейронных сетей на языке...

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

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

Виды архитектур нейронных сетей | Статья в журнале...

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

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

Использование нейронных сетей для повышения надежности...

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

Распознавание английского текста сверточной нейронной сетью

Полезная информация.

Сверточная нейронная сеть была впервые предложена Я. Лекуном и Й. Бенгуа [1].

Седьмой слой рассматриваемой нейронной сети – полносвязный слой, содержащий 26 нейронов.

GRU и LSTM: современные рекуррентные нейронные сети

Чаще всего в качестве нелинейного преобразования применяют одну из следующих функций: сигмоидальная функция (1), гиперболический тангенс (2), функция-выпрямитель (3): (1). (2). (3). В простой рекуррентной нейронной сети (см. рис. 1)...

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

Функция активации. Гиперболический тангенс.

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

Обзор методов распознавания изображений | Статья в сборнике...

Свёрточные нейронные сети. Свёрточная нейронная сеть (Convolutional neural network или CNN) — специальная архитектура нейронных

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

Нейронные сети в системах управления процессами измельчения...

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

От еще одного часто встречающегося варианта функции активациигиперболического тангенса — было принято решение отказаться...

Задать вопрос