ЧТО ТАКОЕ НЕЙРОННАЯ СЕТЬ


Источник: http://www.np.vspu.ac.ru/show.php?id=43&t=1&st=5

АвторЧерномашенцев Максим Сергеевич


ЧТО ТАКОЕ НЕЙРОННАЯ СЕТЬ

В последние 10 – 15 лет происходит бурный рост интереса к искусственным нейронным сетям (НС). Для этого есть несколько причин. Во-первых, теоретические трудности внутри так-называемой модели перцептрона, популярного в конце 60-х годов, были решены. Во-вторых, появился дешевый доступ к мощным и недорогим процессорным устройствам, который облегчил как проведение исследований в области создания моделей, так и работу с реальными задачами.
Таким образом был преодолен драматический разрыв между огромным фактическим материалом, относящимся к биологическим механизмам работы мозга, накопленным в нейрофизиологии в конце XIX – начале XX веков, и неадекватностью имевшегося математического аппарата и вычислительных средств его технической реализации. Главное достоинство и преимущество способностей мозга выполнять логические, распознающие и вычислительные функции – их принципиальная параллельность, нелинейность и нелокальность – не согласовывались с довлеющим принципом последовательных вычислений.
В число этих проблем входит ряд задач, осложняемых именно нелинейностью, нелокальностью, дискретностью и часто нестационарностью постановки. Сюда, в частности, относятся задачи распознавания образов, конструирования ассоциативной памяти и оптимизации.
Итак, дадим определение нейронной сети.
Нейронная сеть – это набор простых решающих элементов с высокой степенью взаимных связей.
Хотя мы и дали это короткое определение, нет универсально принятого определения нейронной сети. Большинство специалистов, работающих в этой области, согласятся, что НС это сеть из многих простых решающих устройств ("элементов"), возможно имеющих небольшие объемы локальной памяти. Эти элементы соединяются друг с другом по каналам связи ("соединениям"), по которым обычно передаются числовые данные, закодированные каким-либо образом. Элементы нейронной сети оперируют только со своими локальными данными, а на входы они получают информацию по соединениям.
Некоторые НС являются моделями биологических нейронных сетей, некоторые – нет. Но исторически много идей в области НС пришло из стремления создать искусственные системы, способные к разумным вычислениям, подобным тем, которые повседневно проделывает человеческий мозг, и возможно такие, которые помогут нам расширить наше понимание человеческого мозга.
Большинство НС имеют некоторого рода правила "тренировки", в процессе чего веса связей уточняются на основе тренировочных данных. Другими словами, НС "учится" на примерах, так же как дети учатся узнавать что-либо по картинкам, которые им показывают. Сеть проявляет некоторую способность к обобщению уже вне тренировочных данных.
НС обычно имеют огромный потенциал к параллелизму, так как вычисления отдельных элементов совершенно независимы друг от друга. Некоторые специалисты относят массивный параллелизм и высокую соединительность к определяющим чертам НС, но такое требование выделяет из области нейронных сетей различные простые модели, которые очень полезны как специальные случаи НС.
Приведем несколько других определений нейронных сетей.
Нейронная сеть – это система, состоящая из многих простых вычислительных элементов, работающих параллельно, функция которых определяется структурой сети, силой взаимных связей, а вычисления производятся в самих элементах или узлах.
Нейронная сеть является существенно параллельным распределенным процессором, который имеет естественную предрасположенность к запоминанию опытного знания и к использованию его. Она похожа на мозг в двух аспектах:
1. Знание приобретается сетью путем процесса обучения.
2. Силы межнейронных соединений, известные как синаптические веса, используются для запоминания знания.
Нейронная сеть есть цепь, составленная из очень большого количества простых вычислительных элементов, которые имеют нейронную основу. Каждый элемент оперирует только локальной информацией. Кроме того каждый элемент работает асинхронно, и таким образом нет общего системного тактирования.
Искусственные нейронные системы, или нейронные сети --- это физические ячеистые системы, которые могут приобретать, запоминать и использовать экспериментальное знание.
Нейронная сеть существенно противоположна последовательному компьютеру (так называемому компьютеру фон Неймана) как по архитектуре, так и по функциональным особенностям. Последовательные компьютеры изначально были созданы для выполнения "черновой" счетной работы, но потом они стали использоваться для обработки данных и других задач. Однако применение таких компьютеров к решению "человеческих" задач показало их большие ограничения. Поэтому появилась необходимость в разработке структур и алгоритмов, которые демонстрировали бы большее сходство с человеческим мозгом. В свою очередь нейронные сети в принципе могут выполнять любые счетные функции, они могут делать все, что могут делать и обычные числовые компьютеры.
На практике НС особенно полезны для задач классификации и отображения функций в условиях неточности и имеют много данных для тренировки, но для которых не могут быть применены четкие и быстрые алгоритмы (как, например, в экспертных системах). Почти любое отображение между векторными пространствами может быть аппроксимировано с произвольной точностью с помощью прямоточных НС (этот тип НС наиболее часто используется в приложениях), если имеется достаточно данных и достаточно вычислительных ресурсов.
Нейронные сети трудно, по крайней мере сейчас, успешно применять для задач, связанных с манипулированием символами и памятью. И не существует методов тренировки НС так, чтобы те волшебным образом создавали информацию, которой не содержится в тренировочных данных.
Что касается воспроизведения человеческого сознания и эмоций, то это все еще принадлежит области научной фантастики.
Нейронные сети представляют интерес для достаточно большого числа специалистов:
• Программистов – нейронные сети открывают область новых методов для решения сложных задач.
• Физики используют нейронные сети для моделирования явлений в статистической механике и для многих других задач.
• Нейрофизиологи могут использовать нейронные сети для моделирования и исследования функций мозга.
• Психологов нейронные сети обеспечивают механизмом для тестирования моделей некоторых психологических теорий.
• Другие специалисты (особенно коммерческих и индустриальных направлений) могут также интересоваться нейронными сетями по самым разнообразным причинам.
Простейшая модель нейронной сети
В простейшей модели, предложенной Мак-Каллоком и Питтсом, система биологических нейронов моделируется набором бинарных (т.е. имеющих только два состояния 0 и 1) объектов, связанных друг с другом и имеющих некоторый пороговый уровень возбуждения, при достижении которого состояние нейрона изменяется: выход нейрона Vi принимает потенциал 0 или 1. Выходной сигнал нейрона через аксон подается на синапс и через синаптическую связь (которая отличается для разных пар нейронов) подается через входные отростки нейрона (дендриты) на вход j-го нейрона. Таким образом образуется глобальная петля обратной связи, в связи с чем система нейронов обладает нетривиальным нелинейным поведением. Схематическое изображение такого нейрона дано на рис. "Модель нейрона"
Типы нейронных сетей
Обычно нейронные сети классифицируются по их архитектуре. Наиболее часто используемыми в физике высоких энергий являются прямоточные (feed-forward) ИНС и рекурентные (recurrent) ИНС (рис. "Прямоточная ИНС" и "Рекурентная ИНС").
В прямоточной нейронной сети нейроны группируются в слои и нейроны каждого слоя передают информацию на входы нейронов только следующего слоя. Соединений между нейронами внутри слоя --- нет. Обычно выделяется входной слой (соединенный с внешним миром и получающий внешние стимулы), выходной слой (производящий выходной сигнал, который интерпретируется внешним миром) и скрытые слои (скрытые от внешнего мира). Такой тип сети иногда называется также многослойным перцептроном.
Рекурентная нейронная сеть, с другой стороны, допускает полную взаимосвязь нейронов: любой нейрон в принципе соединяется с любым другим. Такая связь позволяет осуществить обратную связь между нейронами. Заметим, что в такой сети нейрон может быть одновременно и входным и выходным.
Эластичная нейронная сеть стоит немножко в стороне, так как, хотя и обладает внутренним параллелизмом, все же немножко теряет в своей нейронности. В начале работы такая сеть имеет некий образец с параметрами, которые гибким образом модифицируются в процессе эволюции.
Пример программы в NeuroSolution
Использование нейронных сетей в электротехнике - это новое и перспективное направление. Например, известно исследование, проведенное итальянскими инженерами, по созданию датчика температуры трансформатора. Для обучения и тестирования нейронных сетей существует специальные программные средства, называемые программами-нейроимитаторами. Каждая из таких программ обеспечивает обучение заданной сети по заложенному алгоритму (их может быть несколько на выбор), тестирование обученной сети и расчет ошибок сети на обучающей и тестирующей выборках. Входными данными является обучающая выборка (примеры входных значений и соответствующие им выходные значения) и тестирующая выборка. Выходными данными является информация о весовых коэффициентах, активационных функциях, структуре сети и ошибках при тестировании и обучении.
Одной из таких программ является NeuroSolution. Для обучения необходим набор входных и соответствующих им выходных сигналов (обучающая выборка), содержащийся в файле образцов (pattern file). Его необходимо создать перед процессом обучения. Формат файла - текстовая база данных с разделителями - символ табуляции. Файл может быть текстовым. Необходимо отметить, что здесь и далее в качестве разделителя целой и дробной части числа используется точка.Тестовый файл (test file) используется для тестирования сети и имеет такой же формат, как и файл образцов.Выходной файл (output file) служит для вывода результатов работы программы и может содержать в себе (в зависимости от выбранных параметров программы) номер образца, входные сигналы, соответствующие им выходные сигналы образца и полученные на выходе сети и состояние каждого нейрона сети.
Дополнительно возможно сохранить параметры файла образцов, размер и конфигурацию сети в файле проекта, называемом "setup file". Если произвести сохранение после обучения сети, то в этом файле сохранятся также все вычисленные весовые коэффициенты.
Сначала необходимо создать файл входных данных, используя, например, блокнот. Вначале выбираем NBuilder (на панели быстрого вызова). Выбираем к примеру Multilayer Perceptron.
Далее указать программе место положение этого файла. Затем укажите место файла выходных данных, также созданный заранее. После того как вы разберётесь с данными, необходимо перейти к окну Multiplayer, где определите количество нейронов, а затем перейти к меню каждого из них и произвести необходимые настройки.
После этого можете не производить ни каких изменений. В последнем окне нажмите Build.
После этого произойдёт переход в рабочую область, где вы можете приступить к обучению сети.
Приведём пример сети. Входные данные (x 0 0 1 1;y 0 1 0 1), выходные
(z 0 1 1 0), нейронов 5, количество эпох 10. Обучаем и проверяем. Слева выходные данные, справа полученные сетью.

Заключение

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