Использование нейронных сетей для задач большой размерности - Студенческий научный форум

XI Международная студенческая научная конференция Студенческий научный форум - 2019

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

Соколов В.А. 1, Гарбарт А.И. 1
1Сибирский Федеральный Университет
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

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

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

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

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

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

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

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

где x – полученный на вход сигнал, y –выход нейрона. Иных действий с сигналом нейрон не производит. Однако основным инструментом управления результатом нейронной сети являются веса связей. Проходя между двумя нейронами, сигнал, полученный на выходе первого нейрона умножается на вес связи.

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

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

Процесс обучения нейронной сети должен включать в себя использования некоторых данных, на которых он должен обучаться. Такие данные представлены выборкой, в которой имеются как входные значения (например, x), так и рассчитанные на основании этих данных выходные (например, y=sin(x), если мы хотим научить нейронную сеть вычислять данную функцию без использования формулы). Для каждого набора входных данных сигнал производит проход по сети, и получается некоторый ответ.

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

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

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

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

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

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

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

Оправдано ли использование нейронных сетей? Стоит полагать, что оправдано. Несмотря на то, что сеть может обучиться некорректно и не всегда давать истинный ответ, программа производит большое количество вычислений за считанные секунды. Так, программа, решающая задачу с 27 входными переменными (задача принятия решения о включении покупателя магазина в рекламную рассылку), имеющая пять скрытых слоёв по 75 нейронов в каждом, обучается со скоростью около 650 эпох в минуту (в обучающем файле 150 записей). В процессе использования, скорость возрастает до 225000 записей в секунду. При таких скоростях программа не требовательна к ресурсам компьютера, а значит создать и обучить нейронную сеть доступно каждому. Технология позволяет получить переложить часть работы человека на вычислительную систему, которая бы использовала человеческий опыт [3].

Список литературы

Каллан Р. Основные концепции нейронных сетей. : Пер. с англ. – Издательский дом «Вильямс», 2001. – 298 с.

AIPortal, статья «Алгоритм обратного распространения ошибки» [Электронный ресурс] – Режим доступа: http://www.aiportal.ru/articles/neural-networks/back-propagation.html.

Хабр, статья «Нейронные сети для начинающих. Часть 1» [Электронный ресурс] – Режим доступа: https://habr.com/post/312450/.

Просмотров работы: 2