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

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    3,23 Мб
  • Опубликовано:
    2013-03-06
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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

РЕФЕРАТ


Пояснительная записка 80 с., 45 рис., 18 источников.

НЕРАЗРУШАЮЩИЙ КОНТРОЛЬ МАТЕРИАЛОВ, ИСКУССТВЕННАЯ НЕЙРОННАЯ СЕТЬ, АЛГОРИТМ ОБУЧЕНИЯ НЕЙРОННОЙ СЕТИ, ЭЛЕКТРОМАГНИТНЫЕ ИЗМЕРЕНИЯ, ВОЛНОВОД, ЭЛЕКТРОМАГНИТНОЕ ПОЛЕ

Объектом исследования являются однородные диэлектрики с локальными неоднородностями.

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

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

Разработанное программное обеспечение может быть использовано при отработке технологии мониторинга внутренней структуры материалов при СВЧ обработке.

Содержание

ВВЕДЕНИЕ

1. Неразрушающий контроль. Реконструкция параметров неоднородностей в материале

1.1 Описание предметной области

1.1.1 Введение в предметную область

1.1.2 Общие представления о системе

1.1.3 Практическое применение

1.2 Задача неразрушающего контроля

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

1.3.1 Общие понятия. Биологический нейрон

1.3.2 Математическая модель нейронной сети. Виды нейронных сетей

1.4 Обоснование выбора метода

2. Программное обеспечение для определения параметров неоднородности в материале

2.1 Постановка задачи

2.2 Анализ существующих решений. Выбор программной платформы

2.3 Описание объектной модели

2.3.1 Общая структура приложения

2.3.2 Описание структуры модулей расширения

2.4 Основные алгоритмы и оптимизации

2.4.1 Сигмоидальный нейрон. Концепция управления потоками

2.4.2 Улучшение сходимости и ускорение обучения нейронной сети

2.4.3 Радиальные нейронные сети. Распараллеливание вычислений

2.5 Основные виды отчетов и графиков

3. Результаты работы программы

3.1 Эксперименты с персептроном и выбор оптимальных коэффициентов

3.2 Сравнение результатов работы РБФ и Персептрона

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

Приложение 1. Руководство пользователя

ВВЕДЕНИЕ

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

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

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

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

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

1      
. Неразрушающий контроль. Реконструкция параметров неоднородностей в материале

 

.1      Описание предметной области

 

.1.1   Введение в предметную область

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

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

1.1.2 Общие представления о системе

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

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

неразрушающий контроль нейронный персептрон

Рисунок 1 - Волноводная система

Цель неразрушающего контроля состоит в определении параметров неоднородности. Параметрами неоднородности являются: положения этой неоднородности в образце, координаты x, y, z, а так же размер самой неоднородности, т.е. ее радиус r. Данные параметры восстанавливаются по результатам СВЧ измерений. В качестве измеряемых параметров выступает матрица рассеяния или S-параметры. Матрица рассеяния - матрица, элементы которой описывают физические параметры рассеяния. В технике СВЧ матрица рассеяния связывает линейной зависимостью падающую и отражённую волны на входах многополюсника. В отличие от матриц сопротивлений (проводимостей), а также матриц передачи, матрица рассеяния определена для всех устройств СВЧ. Кроме того, с инженерной точки зрения процесс измерения S-параметров возможен для любых устройств СВЧ, так как он сводится к измерению параметров падающей и отражённой волны на входах устройства.

Так как S-параметры в такой системе чувствительны к профилю диэлектрической проницаемости образца только в направлении распространения электромагнитной волны (вдоль оси ОХ), а образец и неоднородность трехмерны, то для получения полной информации необходимо измерять S-параметры для трех положений образца, повернутых друг относительно друга на 90 градусов. Так же можно применять волновод более сложной формы, но так как используется упрощенная модель, то остановимся на первом способе измерения параметров [2].

1.1.3 Практическое применение

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

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

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

·        Cушка материалов. Задача аналогична предыдущей.

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

1.2    Задача неразрушающего контроля


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

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

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

Обратные задачи обладают рядом неприятных с математической точки зрения особенностей:

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

во-вторых, решения обратных задач обычно не единственны. Для обеспечения единственности часто необходимо требовать избыточности экспериментальной информации [4].

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

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

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

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

 

.3.1   Общие понятия. Биологический нейрон

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

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

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

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

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


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

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

В результате поступления входных импульсов на конкретные синапсы и высвобождения соответствующих количеств нейромедиатора происходит определенное электрическое возбуждение нервной клетки. Если отклонение от состояния электрического равновесия невелико, либо если баланс возбуждений и торможений является отрицательным, клетка самостоятельно возвращается в исходное состояние, и на ее выходе какие-либо изменения не регистрируются. В этом случае считается, что уровень возбуждения клетки был ниже порога ее срабатывания. Если же сумма возбуждений и торможений превысила порог активации клетки, значение выходного сигнала начинает лавинообразно нарастать, принимая характерный вид нервного импульса (рисунок 3), пересылаемою аксоном на другие нейроны, подключенные к данной клетке. Величина этого сигнала не зависит от степени превышения порога. Клетка действует по принципу "все или ничего". После выполнения своей функции нейромедиатор удаляется. Механизм удаления заключается либо во всасывании этой субстанции клеткой, либо в ее разложении, либо в удалении за пределы синапса.

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

Рисунок 3 - Типичная форма нервного импульса

Кора головного мозга человека является протяженной, образованной нейронами поверхностью толщиной от 2 до 3 мм с площадью около 2200 см2, что вдвое превышает площадь поверхности стандартной клавиатуры. Кора головного мозга содержит около 1011 нейронов. Каждый нейрон связан с 103 - 104 другими нейронами. В целом мозг человека содержит приблизительно от 1014 до 1015 взаимосвязей.

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

Нейроны взаимодействуют посредством короткой серии импульсов, как правило, продолжительностью несколько миллисекунд. Сообщение передается посредством частотно-импульсной модуляции. Частота может изменяться от нескольких единиц до сотен герц, что в миллион раз медленнее, чем самые быстродействующие переключательные электронные схемы. Тем не менее, сложные решения по восприятию информации, как, например, распознавание лица, человек принимает за несколько сотен мс. Эти решения контролируются сетью нейронов, которые имеют скорость выполнения операций всего несколько мс. Это означает, что вычисления требуют не более 100 последовательных стадий. Другими словами, для таких сложных задач мозг "запускает" параллельные программы, содержащие около 100 шагов. Это известно, как правило ста шагов [5]. Рассуждая аналогичным образом, можно обнаружить, что количество информации, посылаемое от одного нейрона другому, должно быть очень маленьким (несколько бит). Отсюда следует, что основная информация не передается непосредственно, а захватывается и распределяется в связях между нейронами. Этим объясняется такое название, как коннекционистская модель, применяемое к ИНС.

1.3.2 Математическая модель нейронной сети. Виды нейронных сетей

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

При обучении с учителем предполагается, что, помимо входных сигналов, составляющих вектор x, известны также и ожидаемые выходные сигналы нейрона di, составляющие вектор d (от англ. destination). В подобной ситуации подбор весовых коэффициентов должен быть организован так, чтобы фактические выходные сигналы нейрона yi принимали бы значения, как можно более близкие к ожидаемым значениями di. Ключевым элементом процесса обучения с учителем является знание ожидаемых значений di выходного сигнала нейрона.

Если такой подход невозможен, остается выбрать стратегию обучения без учителя. Подбор весовых коэффициентов в этом случае проводится на основании либо конкуренции нейронов между собой (стратегии «Winner Takes All - WTA» (Победитель получает все) или «Winner Takes Most - WTM» (Победитель получает больше), либо с учетом корреляции обучающих и выходных сигналов (обучение по Хеббу)). При обучении без учителя на этапе адаптации нейрона мы не можем прогнозировать его выходные сигналы, тогда как при обучении с учителем результат обучения предопределен заранее благодаря априори заданным обучающим выборкам [6].

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

В одной из первых моделей нейрона, называемой моделью МакКаллока-Питса (предложенной в 1943 г.), нейрон считается бинарным элементом [7]. Структурная схема этой модели представлена на рисунке 4. Входные сигналы xj (j = 1, 2, , …, N) суммируются с учетом соответствующих весов wij (сигнал поступает в направлении от узла i к узлу j) в сумматоре, после чего результат сравнивается с пороговым значением wi0. Выходной сигнал нейрона уi определяется при этом зависимостью

 .                                (1)

Рисунок 4 - Модель МакКаллока-Питса

Персептрон. Простой персептрон - это обычная модель МакКаллока-Питса с соответствующей стратегией обучения [8]. Структурная схема и обозначения элементов i-го персептрона представлены на рисунке 4. Весовые коэффициенты входов сумматора, на которые поступают входные сигналы xj, обозначаются wij, а пороговое значение, поступающее с так называемого поляризатора, - wi0. Нелинейная функция активации персептрона представляет собой дискретную функцию ступенчатого типа, вследствие чего выходной сигнал нейрона может принимать только два значения - 0 или 1 в соответствии с правилом:


для ,                                (2)

для , где ui обозначен выходной сигнал сумматора

        (3)

В приведенной формуле подразумевается, что имеющий длину N вектор x дополнен нулевым членом x0 = 1, формирующим сигнал поляризации, x = [x0, x1, …, xN]. Обучение персептрона требует наличия учителя и состоит в таком подборе весов wij, чтобы выходной сигнал yi был наиболее близок к заданному значению di. Это обучение гетероассоциативного типа, при котором каждой обучающей выборке, представляемой вектором x, априори поставлено в соответствие ожидаемое значение di на выходе i-го нейрона.

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

- при первоначально выбранных (как правило, случайным образом) значениях весов wij на вход нейрона подеется обучающий вектор x и рассчитывается значение выходного сигнала yi. По результатам сравнения фактически полученного значения yi с заданным значением di уточняются значения весов;

-       если значение yi совпадает с ожидаемым значением di, то весовые коэффициенты wij не изменяются;

-       если yi = 0, а соответствующее заданное значение di = 1, то значения весов уточняются в соответствии с формулой wij(t+1) = wij(t) + xj, где t обозначает номер предыдущего цикла, а (t+1) - номер текущего ц икла;

-       если yi = 1, а соответствующее заданное значение di = 0, то значения весов уточняются в соответствии с формулой wij(t+1) = wij(t) - xj, где t обозначает номер предыдущего цикла, а (t+1) - номер текущего цикла.

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

Следует отметить, что правило персептрона представляет собой частный случай предложенного гораздо позже правила Видроу-Хоффа [10]. В соответствии с этим правилом подбор весовых коэффициентов нейрона (необязательно персептронного типа) проводится по формулам:

(4)

. (5)

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

. (6)

Легко заметить, что если сигналы yi и di принимают только двоичные значения 0 и 1, то правило Видроу-Хоффа превращается в правило персептрона.

Характерная особенность как правила персептрона, так и обобщенного правила Видроу-Хоффа состоит в использовании для обучения информации только о текущем и ожидаемых значениях выходного сигнала. В связи с разрывностью нелинейной функции активации персептрона невозможно учитывать информацию об изменении значения yi. (т.е. ее производную). Минимизация различий между фактическими реакциями нейрона yi и ожидаемыми значениями di может быть представлена как минимизация конкретной функции погрешности (целевой функции) Е, чаще всего определяемой как

, (7)

где p означает количество предъявляемых обучающих выборок. Такая минимизация при использовании правила персептрона производится по методу безградиентной оптимизации. Эффективность метода при большом количестве обучающих выборок относительно невелика, а количество циклов обучения и его длительность возрастают очень быстро, причем без всякой гарантии достижения минимума целевой функции. Устранить эти недостатки можно только в случае применения непрерывной функции активации, при которой целевая функция Е также становится непрерывной, что дает возможность использовать в процессе обучения информацию о величине градиента [9].

Сигмоидальный нейрон.

Нейрон сигмоидального типа имеет структуру, подобную модели МакКаллока-Питса, с той разницей, что функция активации является непрерывной и может быть выражена в виде сигмоидальной униполярной или биполярной функции [11]. Униполярная функция, как правило, представляется формулой

 (8)

тогда как биполярная функция задается в виде:

 (9)

Рисунок 5 - Модель сигмоидального нейрона

В этих формулах параметр β подбирается пользователем. Его значение влияет на форму функции активации. На рисунке 6 представлены графики сигмоидальной функции от переменной х для различных значений β, причем на рисунке 6 показана униполярная, а на рисунке 7 - биполярная функция. Графики обеих функций сильно зависят от значения β. При малых величинах β график функции достаточно пологий, но по мере роста значения β крутизна графика увеличивается. При β→∞ сигмоидальная функция превращается в функцию ступенчатого типа, идентичную функции активации персептрона. На практике чаще всего для упрощения используется значение β = 1.

Рисунок 6 - График униполярной сигмоидальной функции

Рисунок 7 - График биполярной сигмоидальной функции при различных значениях коэффициента β

Важным свойством сигмоидальной функции является ее дифференцируемость. Для униполярной функции имеем:

 (9)

тогда как для биполярной функции

. (10)

И в первом, и во втором случае график изменения производной относительно переменной х имеет колоколообразную форму, а его максимум соответствует значению х = 0 (рисунок 8).

Рисунок 8 - График производной от сигмоидальной функции при различных значениях коэффициента β

Сигмоидальный нейрон, как правило, обучается с учителем по принципу минимизации целевой функции, которая для единичного обучающего кортежа <x,d> i-го нейрона определяется в виде

 (11)

где . (12)

Функция f(ui) является сигмоидальной, x - это входной вектор, x=[x0, x1, …, xN]T со значением х0 = 1 при наличии поляризации и х0 = 0 при ее отсутствии, а di - соответствующее ему ожидаемое значение на выходе i-го нейрона. Применение непрерывной функции активации позволяет использовать при обучении градиентные методы. Проще всего реализовать метод наискорейшего спуска, в соответствии с которым уточнение вектора весов w = [w10, w11, …, wiN]T проводится в направлении отрицательного градиента целевой функции.

Если эта функция определена выражением (11), j-я составляющая градиента имеет вид:

 , (13)

где ei = (yi - di) означает разницу между фактическим и ожидаемым значением выходного сигнала нейрона. Если ввести обозначение  то можно получить выражение, определяющее j-ю составляющую градиента в виде

 (14)

Значения весовых коэффициентов также могут уточняться дискретным способом:

 (15)

где - это коэффициент обучения, значение которого, как правило, выбирают либо эмпирически из интервала (0,1), либо решением разностного уравнения

 (16)

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

Многослойные нейронные сети с точки зрения математики выполняют аппроксимацию стохастической функции нескольких переменных путем преобразования множества входных переменных xRN во множество выходных переменных yRM . Вследствие характера сигмоидальной функции активации осуществляется аппроксимация глобального типа. В результате ее нейрон, который был однажды включен (после превышения суммарным сигналом ui определенного порогового значения), остается в этом состоянии при любом значении ui, превышающем этот порог. Поэтому всякий раз преобразование значения функции в произвольной точке пространства выполняется объединенными усилиями многих нейронов, что и объясняет название глобальная аппроксимация.

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

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

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

Рисунок 9 - Иллюстрация способов разделения пространства данных:

а) сигмоидальным нейроном; б) радиальным нейроном

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

Математические основы

Математическую основу функционирования радиальных сетей составляет теорема Т. Ковера [13] о распознаваемости образов, в соответствии с которой нелинейные проекции образов в некоторое многомерное пространство могут быть линейно разделены с большей вероятностью, чем при их проекции в пространство с меньшей размерностью.

Если вектор радиальных функций φ(х)= [φ1(х), φ2(х),…, φК(х)]Т в N-мерном входном пространстве обозначить φ(х), то это пространство является нелинейно φ-разделяемым на два пространственных класса Х+ и Х тогда, когда существует такой вектор весов w, что

 

wT φ(х)>0 x Х+, (17)

wT φ(х)<0 x Х . (18)

Граница между этими классами определяется уравнением wT φ(х)=0. В [13] доказано, что каждое множество образов, случайным образом размещенных в многомерном пространстве, является φ­-разделяемым с вероятностью 1 при условии соответственно большой размерности К этого пространства. На практике это означает, что применение достаточно большого количества скрытых нейронов, реализующих радиальные функции φ(х), гарантирует решение задачи классификации при построении всего лишь двухслойной сети: скрытый слой должен реализовать вектор φ(х), а выходной слой может состоять из единственного линейного нейрона, выполняющего суммирование выходных сигналов от скрытых нейронов с весовыми коэффициентами, заданными вектором w.

Простейшая нейронная сеть радиального типа функционирует по принципу многомерной интерполяции, состоящей в отображении p различных входных векторов xi (I = 1, 2, …, p) из входного N-мерного пространства во множество из p рациональных чисел di (I = 1, 2, …, p). Для реализации этого процесса необходимо использовать р скрытых нейронов радиального типа и задать такую функцию отображения F(x), для которой выполняется условие интерполяции

 

F(x)= di. (19)

Использование р скрытых нейронов, соединяемых связями с весами wi с выходными линейными нейронами, означает формирование выходных сигналов сети путем суммирования взвешенных значений соответствующих базисных функций. Рассмотрим радиальную сеть с одним выходом и р обучающими парами <xi,di>. Примем, что координаты каждого из р центров узлов сети определяются одним из векторов xi, т.е. ci = xi. В этом случае взаимосвязь между входными и выходными сигналами сети может быть определена системой уравнений, линейных относительно весов wi, которая в матричной форме имеет вид:

, (20)

где φji = (║хj - xi) определяет радиальную функцию с центром в точке xi с вынужденным вектором хj. Если обозначить матрицу из элементов φji как Ф и ввести обозначения векторов w = [w1, w2, …, wp]T, d = [d1, d2, …, dp]T, система уравнений (20) может быть представлена в редуцированной матричной форме:

Фw = d. (21)

В доказано, что для ряда радиальных функций в случае х1≠х2≠…≠хр квадратная интерполяционная матрица Ф является несобственной и при этом неотрицательно определенной. Поэтому существует решение уравнения (21) в виде

 

w = Ф-1d, (22)

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

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

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

Генетические алгоритмы

Еще одним способом обучения ИНС сети являются генетические алгоритмы. Генетические Алгоритмы - адаптивные методы поиска, которые в последнее время часто используются для решения задач функциональной оптимизации. Они основаны на генетических процессах биологических организмов: биологические популяции развиваются в течении нескольких поколений, подчиняясь законам естественного отбора и по принципу "выживает наиболее приспособленный" (survival of the fittest), открытому Чарльзом Дарвином. Подражая этому процессу генетические алгоритмы способны "развивать" решения реальных задач, если те соответствующим образом закодированы. ГА работают с совокупностью "особей" - популяцией, каждая из которых представляет возможное решение данной проблемы. Каждая особь оценивается мерой ее "приспособленности" согласно тому, насколько "хорошо" соответствующее ей решение задачи. В природе это эквивалентно оценке того, насколько эффективен организм при конкуренции за ресурсы. Наиболее приспособленные особи получают возможность "воспроизводить" потомство с помощью "перекрестного скрещивания" с другими особями популяции. Это приводит к появлению новых особей, которые сочетают в себе некоторые характеристики, наследуемые ими от родителей. Наименее приспособленные особи с меньшей вероятностью смогут воспроизвести потомков, так что те свойства, которыми они обладали, будут постепенно исчезать из популяции в процессе эволюции. Иногда происходят мутации, или спонтанные изменения в генах.

Таким образом, из поколения в поколение, хорошие характеристики распространяются по всей популяции. Скрещивание наиболее приспособленных особей приводит к тому, что исследуются наиболее перспективные участки пространства поиска. В конечном итоге популяция будет сходиться к оптимальному решению задачи. Преимущество ГА состоит в том, что он находит приблизительные оптимальные решения за относительно короткое время. [14]

ГА состоит из следующих компонент:

·      хромосома. Решение рассматриваемой проблемы. Состоит из генов;

·        начальная популяция хромосом;

·        набор операторов для генерации новых решений из предыдущей популяции;

·        целевая функция для оценки приспособленности (fitness) решений.

Операторы ГА

Стандартные операторы для всех типов генетических алгоритмов это: селекция, скрещивание и мутация.

Селекция

Оператор селекции (reproduction, selection) осуществляет отбор хромосом в соответствии со значениями их функции приспособленности. Существуют как минимум два популярных типа оператора селекции: рулетка и турнир.

Метод рулетки (roulette-wheel selection) - отбирает особей с помощью n "запусков" рулетки. Колесо рулетки содержит по одному сектору для каждого члена популяции.

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

Рисунок 10 - Оператор селекции типа колеса рулетки с пропорциональными функции приспособленности секторами

Турнирный отбор (tournament selection) реализует n турниров, чтобы выбрать n особей. Каждый турнир построен на выборке k элементов из популяции, и выбора лучшей особи среди них. Наиболее распространен турнирный отбор с k=2.

Скрещивание

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

Рисунок 11 - Одноточечный оператор скрещивания (точка разрыва равна трем)

Мутация

Мутация (mutation) - стохастическое изменение части хромосом. Строке, которая подвергается мутации, каждый бит с вероятностью Pmut (обычно очень маленькой) меняется на другой.

Рисунок 12 - Оператор мутации (четвертый ген мутировал)

Алгоритм работы ГА

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

Алгоритм работы простого ГА выглядит следующим образом:

Рисунок 13 - Алгоритм работы классического ГА

 

.4      Обоснование выбора метода


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

2. Программное обеспечение для определения параметров неоднородности в материале

2.1 Постановка задачи

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

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

Исходя из выше изложенного, выделим основные свойства ПО:

1.  Простота загрузки и манипуляции с данными.

2.      Простая возможность расширения функциональности ПО, возможность добавление новых видов ИНС.

.        Наглядная демонстрация результатов обучения.

Программное обеспечение написано на языке C# .Net из пакета Microsoft Visual Studio 2008.

 

.2 Анализ существующих решений. Выбор программной платформы


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

В качестве платформы для разрабатываемого приложения была выбрана .NET 2.0 и язык C#.

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

Несмотря на то что С# - самодостаточный компьютерный язык, но он тесно связан со средой .NET Framework. И на это есть две причины. Во-первых, С# изначально разработан компанией Microsoft для создания кода, выполняющегося в среде .NET Framework. Во-вторых, в этой среде определены библиотеки, используемые языком С#.

Оболочка .NET Framework определяет среду для разработки и выполнения сильно распределенных приложений, основанных на использовании компонентных объектов.

Она позволяет "мирно сосуществовать" различным языкам программирования и обеспечивает безопасность, переносимость программ и общую модель программирования для платформы Windows. Что особенно актуально для решения нашей задачи, т.к. позволяет разрабатывать отдельные модули программы на любом языке входящим в поставку .NET. Важно при этом понимать, что .NET Framework по своему существу не ограничена применением в Windows, т.е. программы, написанные для нее, можно затем переносить в среды, отличные от Windows. Особенно это актуально с развитием платформы MONO, которая позволяет запускать приложения на UNIX системах.

Связь среды .NET Framework с С# обусловлена наличием двух очень важных средств. Одно из них, Common Language Runtime (CLR), представляет собой систему, которая управляет выполнением пользовательских программ. CLR - это составная часть .NET Framework, которая делает программы переносимыми, поддерживает многоязыковое программирование и обеспечивает безопасность.

Второе средство, библиотека классов .NET-оболочки, предоставляет программам доступ к среде выполнения. Например, если вам нужно выполнить операцию ввода-вывода, скажем, отобразить что-либо на экране, то для этого необходимо использовать .NET-библиотеку классов. Если программа ограничивается использованием средств, определенных .NET-библиотекой классов, она может выполняться везде (т.е. в любой среде), где поддерживается .NET-система. Поскольку С# автоматически использует .NET-библиотеку классов, С#-программы автоматически переносимы во все .NET-среды [15].

2.3 Описание объектной модели

 

.3.1 Общая структура приложения

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

В Visaul Studio 2008 данное деление представлено в виде трех различных проектов, собранных в одном решении.

Проект Diplom

Основная программа представлена проектом Diplom, в нем собранны все формы, с которыми работает пользователь:

class MainForm - основная форма приложения, приложение выполнено в MDI стиле, т.е. существует основное окно, все остальные окна открываются внутри него. В данном классе объединены все компоненты программы, т.е. данный класс является связующим звеном для всех модулей программы;

class AddProcessing - форма добавления обработчиков к данным;

class DestributionDataForm - форма позволяющая пользователю распределить данные по различным наборам, т.е. можно загрузить одни данные и на основе них сделать все наборы;

class ExperimentsForm - форма для проведения экспериментов, позволяет загружать экспериментальные данные и прогонять различные виды искусственныйх нейронных сетей на этих данных;

class ImportDataForm - форма импортирования данных. Позволяет выбрать входные и выходные данные, а так же выбрать в какой набор загружать эти данные;

class InputOutputData - UserControl, который отображает данные передаваемые ему через класс контейнер DataItem, который будет описан чуть позже. Отображение данных осуществляется в DataGrid и разделено на закладки входы и выходы;

class ProcessingForm - форма выбора обработчика для данных, об обработчиках более подробно будет рассказано в пункте 2.3.2;

class ReviewDataForm - форма для показа загруженных данных, данная форма включает в себя три закладки, на каждую из которых помещается UserControl InputOutputData;

class View3Form - форма для показа графика в трех видах;

class FormDiagram - форма для показа диаграммы.

О двух последних формах подробнее будет рассказано в пункте 2.5.

Библиотека классов для работы с данными. Проект LibraryNP.

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

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

тестовые - этот набор обычно используется при обучении персептрона, сам набор непосредственно не учувствует в обучении, но на этом наборе считается ошибка при каждой итерации. Делается это для того, чтобы ИНС не переобучилась на «тренировочных» данных;

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

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

Диаграмма классов изображена на рисунке 14.

Основные классы:

class DataNP - данный класс инкапсулирует в себе 3 набора данных, для этого он включает в себя три объекта класса DataItem, соответственно данный класс позволяет обрабатывать сразу 3 наборами данных;

class DataItem - данный класс содержит в себе один набор данных, такой набор данных представляет собой два двумерных массива, массив входов и массив выходов, количество строк у обоих массивов совпадает, а количество столбцов соответствует количеству входов и выходов;

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

Рисунок 14 - Диаграмма классов для работы с данными

Все формы, работающие с загруженными данными, реализуют интерфейс IDataWorker.

При использовании такого подхода мы достигаем единообразной работы всех форм.

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

2.3.2 Описание структуры модулей расширения

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

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

Рисунок 15 - Схема взаимодействия модулей

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

1.      Training - основной метод для обучения. В этот метод передается обучающее, тестовое и контрольное множества. Метод вызывается в основном потоке программы, поэтому если обучение занимает продолжительное время, то задача вынесения обучения в отдельный поток и, как следствие, избежание «зависания» программы, ложится на разработчика данного модуля. Так же в данном методе должны вызываться все формы с настройкой внутренней структуры нейронной сети;

2.      Exec - метод, который запускается при проведении эксперимента, т.е. тогда, когда мы работаем уже с обученной сетью;

.        Свойство Name - в данном свойстве содержится название данного модуля, имя отображается во всех меню, где происходит обращение к модулю.

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

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

2.      Execute - метод запуска непосредственно самой обработки, в метод передается массив входов и массив выходов. Метод запускается в основном потоке, поэтому при реализации метода нужно быть осторожным с возможным зависанием интерфейса пользователя на время выполнения обработчика, в этом случае нужно в реализации запускать отдельный поток. Метод запускается после метода Setting и только при условии, что тот вернет true;

3.      Cancel - метод отменяет обработку данных, реализуется если при удалинии обработчика с данных, необходимы обратные преобразования данных;

4.      Своство Name - возвращает имя обработчика.

 

.4 Основные алгоритмы и оптимизации


В программном обеспечении реализованы два вида ИНС. Первый вид - это сигмоидальный нейрон, для его обучения используется стандартный алгоритм «Обратного распространения ошибки». А второй вид ИНС - радиальные нейронные сети. В качестве функции активации использована глобальная кубическая функция.

2.4.1 Сигмоидальный нейрон. Концепция управления потоками

Как уже было сказано, обучение нейронной сети происходит с помощью «алгоритма обратного распространения ошибки». Основной алгоритм обучения представлен в первой главе, рассмотрим конкретную реализацию ИНС сети в программе. На рисунке 16 представлена структура нейронной сети.

Рисунок 16 - Структура нейронной сети

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

Рисунок 17 - Окно настройки персептрона

Внутреннюю структуру нейронной сети, возможно, настраивать. Настраивать можно количество нейронов на скрытом слое и количество скрытых слоев, это настраивается в верхней части окна посредством DataGridView, на котором число колонок отражает количество скрытых слоев, а число в колонке - число нейронов на этом слое.

Настройка функции активации происходит через коэффициент «Альфа». На рисунке 18 представлен график активационной функции, как видно, коэффициент влияет на крутизну функции, и на область допустимых значений, при -1 возможные входы от -5 до 5.

«Скорость обучения» влияет на величину изменения весовых коэффициентов на одной эпохе обучения:

 (23)

где - коэффициент скорости обучения.

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

 (24)

где m - коэффициент инерционности, t - номер текущей итерации.

Рисунок 18 - График функция активации

ИНС в программе представлена «рваным» трехмерным массивом double[][][] w, который представляет собой весовые коэфициенты связей между слоями.

Рисунок 19 - Представление нейронной сети в виде массива W

Обращение к массиву можно записать следующим образом w[q][a][b], где q - номер слоя, a - номер нейрона на предыдущем слое, b - номер нейрона на следующем слое (рисунок 19). Так как ИНС является полносвязанной, т.е. все нейроны одного слоя связаны со всеми нейронами последующего слоя, то подобная организация в виде трехмерного массива является наиболее логичной. На каждой эпохе обучения ИНС работает вначале в прямом направлении, а затем в обратном направлении происходит корректировка весовых коэффициентов. Для расчета выходов используется так же «рваный» массив double[][] inout, в который записывается выход каждого нейрона. Корректировка весовых коэфициентов происходит с помощью массива double[][][] dW, который имеет такую же структуру, как и w, но содержит в себе корректировки весовых коэффициентов, которые рассчитываются на каждой итерации обучения.


Рисунок 20 - Фрагмент формы управления ходом обучения персептрона

Паттерн состояние применяется в задачах, когда нужно избавиться от многоуровневых связок if-else. Рассмотрим класс TCPConnection, с помощью которого представлено сетевое соединение. Объект этого класса может находиться в одном из нескольких состояний: Established (установлено), Listening (прослушивание), Closed (закрыто). Когда объект TCPConnection получает запросы от других объектов, то в зависимости от текущего состояния он отвечает по-разному. Например, ответ на запрос Open (открыть) зависит от того, находится ли соединение в состоянии Closed или Established. Паттерн состояние описывает, каким образом объект TCPConnection может вести себя по-разному, находясь в различных состояниях.

Основная идея этого паттерна заключается в том, чтобы ввести абстрактный класс TCPState для представления различных состояний соединения. Этот класс объявляет интерфейс, единый для всех классов, описывающих различные рабочие состояния. В этих подклассах TCPState реализуется поведение, специфичное для конкретного состояния. Например, в классах TCPEstablished и TCPClosed реализовано поведение, характерное для состояний Established и Closed соответственно.

Паттерн <#"600495.files/image049.gif">

Рисунок 21 - Диаграмма классов ИНС персептрон

Управление всей работой нейронной сети персептрон осуществляется в классе Manager, в нем хранятся все настройки нейронной сети, в класс ParametrsNetwork, входные и выходные данные. По сути, данный класс является прослойкой между ИНС сетью и интерфейсом пользователя.

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

ManagerPerceptronState - абстрактный класс, от которого реализуются все состояния.

abstract class ManagerPerceptronState

{ abstract public ManagerPerceptronState Start(Perceptron network);public ManagerPerceptronState Stop(Perceptron network);public ManagerPerceptronState Paused(Perceptron network);

}

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

Ниже приведен пример вызова методов в классе Manager.

public void Start()

{= stateWork.Start(network);

}

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

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

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

Таблица 1

Таблица переходов состояния.

Состояние\Метод

Strart()

Stop()

Pause()

StartState

PauseState

StopState

PauseState

StopState

StartState

StopState

PauseState

PauseState

PauseState

StopState

StartState


Результаты использования паттерна состояние:

·        локализует зависящее от состояния поведение и делит его на части, соответствующие состояниям. Паттерн состояние помещает все поведение, ассоциированное с конкретным состоянием, в отдельный объект. Поскольку зависящий от состояния код целиком находится в одном из подклассов класса State, то добавлять новые состояния и переходы можно просто путем порождения новых подклассов;

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

Паттерн состояние позволяет решить эту проблему, но одновременно порождает другую, поскольку поведение для различных состояний оказывается распределенным между несколькими подклассами State. Это увеличивает число классов. Конечно, один класс компактнее, но если состояний много, то такое распределение эффективнее, так как в противном случае пришлось бы иметь дело с громоздкими условными операторами. Наличие громоздких условных операторов нежелательно, равно как и наличие длинных процедур. Они слишком монолитны, вот почему модификация и расширение кода становится проблемой. Паттерн состояние предлагает более удачный способ структурирования зависящего от состояния кода. Логика, описывающая переходы между состояниями, больше не заключена в монолитные операторы if или switch, а распределена между подклассами state. При инкапсуляции каждого перехода и действия в класс состояние становится полноценным объектом. Это улучшает структуру кода и проясняет его назначение:

·        делает явными переходы между состояниями. Если объект определяет свое текущее состояние исключительно в терминах внутренних данных, то переходы между состояниями не имеют явного представления; они проявляются лишь как присваивания некоторым переменным. Ввод отдельных объектов для различных состояний делает переходы более явными. Кроме того, объекты State могут защитить контекст Context от рассогласования внутренних переменных, поскольку переходы с точки зрения контекста - это атомарные действия. Для осуществления перехода надо изменить значение только одной переменной (объектной переменной State в классе Context), а не нескольких;

·        объекты состояния можно разделять. Если в объекте состояния State отсутствуют переменные экземпляра, то есть представляемое им состояние кодируется исключительно самим типом, то разные контексты могут разделять один и тот же объект state. Когда состояния разделяются, таким образом, они являются, по сути дела, приспособленцами (см. описание паттерна «приспособленец»), у которых нет внутреннего состояния, а есть только поведение [16].

2.4.2 Улучшение сходимости и ускорение обучения нейронной сети

«Встряхивание весов»

В качестве основного алгоритма обучения нейронной сети, на данном этапе выполнения диплома, выбран «Алгоритм обратного распространения ошибки», как наиболее простой в реализации. Суть метода, заключается в минимизации целевой функции:

,                         (25)

где p - кол-во обучающих выборок, M - количество выходов, y - реальный выход сети, d - требуемый выход сети.

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

Генетические алгоритмы

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

Для реализации генетического алгоритма было разработано три класса:

1.      class Individual - класс отдельной особи, содержит в себе цепочку генов, в обучении персептрона в качестве цепочки генов использовалась матрица весовых коэфициентов w.

2.      class ListPopulation - класс содержит популяцию (список особей), основные методы класса:

a.       Sort() - сортировка популяции, на основе приспособленности.

Приспособленность считается с помощью метода, который передается через делегат, таким образом получается универсальная струтура генетического алгоритма. В приминении к ИНС сетям, метод приспособленности считаестя как 1/E, где Е - это ошибка, которая вычисляется как квадрат разности между реальным и эксперементальным выходом сети;

b.       GetIndividum() - получить особь, основываясь на методе «рулетки», более приспособленные особи будут возвращаться чаще, метод необходим для кроссовера;

3.      class GA - основной класс, в котором реализуется «жизненный цикл» генетического алгоритма. Основные методы:

a.       Mutation() - операция мутации;

b.      Crossover() - операция скрещивания;

c.       Selection() - операция селекции.

Рисунок 22 - Диаграмма классов для генетического алгоритма

Результаты

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

Был проведен следующий тест:

нейронная сеть (2 входа, 8 нейронов на промежуточном слое, 1 выход), в качестве обучающего множества функция xor.

Таблица 2.

Данные для обучения ИНС.

X1

Y1

 0

0

0

1

0

1

0

1

1

1

1

0


При обучении без оптимизации потребовалось 1000 эпох. Если применить ГА для выбора начальной весовой матрицы (достаточно всего 15 поколений и 30 особей), то число эпох сокращается на 300-400, т.е. почти в два раза.

2.4.2 Радиальные нейронные сети. Распараллеливание вычислений

Архитектура ИНС сети на базе РБФ похожа на архитектуру нейронной сети на базе персептрона рисунке 19. с одним существенным отличием, количество скрытых слоев всегда одинаково и равно 1. А количество нейронов на этом слое зависит от размерности обучающего множества, т.е. от количества обучающих примеров. Работа сети выглядит следующим образом:

  (25)

где - оцененный выход, W - матрица весовых коэффициентов, а Ф

 (26)

Матрица Ф может быть описана в виде (26). Первые две компоненты (26) представляют линейную проблему, а последняя компонента - это сеть РБФ. Используется техника нулевой ошибки обучения, которая предполагает, что набор центров C совпадает с X(1).

При обучении РБФ одно из основных действий это умножение матриц и размерность матриц в задаче достаточно велика, то одна из возможных оптимизаций - разбиение процессам умножения на несколько потоков. Данный подход дает достаточно большой прирост в производительности на многоядерных системах, т.к. позволяет задействовать в процессе работы оба ядра и распределить нагрузку между ними. Вся работа с матрицами вынесена на уровень работы с объектами типа Matrix. Класс предоставляет набор полей и методов, удобных для работы с матрицами, он имеет перегруженные операторы арифметических действий, что позволяет работать с объектами в привычной форме. Например:

a = GetRandomMatrix(razm, razm);b = GetRandomMatrix(razm, razm);= a * b;

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

Для тестирования производительности работы написанных методов, была разработана тестовая программа, которая умножает случайно сгенерированные матрицы размерности 150 на 150. Так как ОС с вытесняющей многозадачностью, то в процесс эксперимента может «вмешаться» случайный системный процесс. Для исключения такого эффекта, матрицы умножаются не один раз, а 100 и высчитывается среднее время умножение матриц. Такой процесс запускается на однопоточном методе и на двух поточном методе [17].

Результаты эксперимента представлены на рисунках 23-26.

Аппаратное обеспечение для тестирования было следующим, в качестве одноядерной платформы был использован процессор AMD Athlon 64 3000+, более детальная информация представлена на рисунке 23.

Рисунок 23 - Детальная информация об одноядерном процессоре

Характеристики двуядерного процессора представлены на рисунке 24.

Рисунок 24 - Детальная информация о двуядерном процессоре

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

Рисунок 25 - Результат теста на двуядерном процессоре

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

Рисунок 26 - Результат теста на одноядерном процессоре

Как видно из тестов производительность зависит не только от того сколько ядер у процессора, но и сама архитектура. Благодаря использованию платформы .net не нужно перекомпилировать приложения для разных аппаратных платформ. Оптимизация происходит на момент запуска приложения, а не на момент компиляции [18].

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

Минимальные аппаратные требования:

·        процессор с тактовой частотой не ниже 1,5 ГГц (AMD Athlon 3000+);

·        256 Мб оперативной памяти;

·        SVGA-видеокарта с объемом памяти не ниже 64 Мб, 256 цветов;

·        наличие мыши, клавиатуры;

·        наличие не менее 20 Мб дискового пространства.

 

.5 Основные виды отчетов и графиков


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

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

Рисунок 27 - Диаграмма результатов обучения

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

Рисунок 28 - Три вида результатов обучения

3. Результаты работы программы


3.1 Эксперименты с персептроном и выбор оптимальных коэффициентов


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

Рисунок 29 - Выбор обучающего множества

Пронормируем наши данные следующим образом:

Рисунок 30 - Нормировка данных

Попробуем обучить сеть со следующими настройками:

скрытый слой, 20 нейронов на скрытом слое, «альфа» функции активации -1, «скорость обучения» -1, коэффициент инерции 0.

Результат обучения:

Рисунок 31 - Результат обучения персептрона

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

Попробуем обучить сеть со следующими настройками:

скрытый слой, 32 нейронов на скрытом слое, «альфа» функции активации -1, «скорость обучения» -0.1, коэффициент инерции 0.

Как видно из диаграмм, предсказательные способности персептрона, на данной задаче очень слабые (рисунок 30).

Рисунок 32 - Результат обучения персептрона

Попробуем построить три вида нашего образца и посмотреть, как восстанавливаются параметры, в общем (рисунок 33):


Из графика видно, что персептрон способен определить местоположение неоднородности, но точность при этом низкая.

3.2    Сравнение результатов работы РБФ и Персептрона


На тех же данных попробуем обучить РБФ сеть. Как видно из рисунков 33 и 34 предсказательная способность сети РБФ на много выше чем у персептрона.

Рисунок 34 - Результат обучения РБФ

Рисунок 35 - Результат обучения РБФ

ЗАКЛЮЧЕНИЕ


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

Программное обеспечение разработано на языке C#.

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

Разработанное программное обеспечение может быть использовано при отработке технологии мониторинга внутренней структуры материалов при СВЧ обработке.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

 

1.       Brovko A.V. Waveguide Microwave Imaging: Neural Network Reconstruction of Functional 2-D Permirrivity Profiles / Alexander V. Brovko, Ethan K. Murphu // IEEE. Transaction on Microwave Theory and Techniques. - Vol.57., 2009 - №2.

2.      Brovko A.V. Waveguide microwave imaging: Spherical inclusion in a dielectric sample / A.V. Brovko, E.K. Murphy, M. Rother, H.P. Schuchmann, and V.V. Yakovlev // IEEE Microw. Wireless Compon. Lett- vol. 18., №. 9, 2008 - С. 647-649

3.      Свободная энциклопедия «Википедия» [Электронный ресурс] #"600495.files/image069.gif">

Рисунок 36 - Главная форма программы

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

·        загрузка данных;

·        сохранение данных;

·        просмотр данных;

·        обработка данных;

·        обучение;

·        эксперименты;

·        построение 3-х видов;

·        построение графиков.

Рисунок 37 - Панель инструментов

 

Загрузка данных

Загрузка данных осуществляется через форму, изображенную на рисунке 38. Для загрузки необходимо выбрать файл с входными данными и файл с выходными данными. Так же возможно выбрать тип «Набор данных», для правильной работы нейронных сетей необходимы все три набора данных:

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

·        тестовые - этот набор обычно используется при обучении персептрона, сам набор непосредственно не учувствует в обучении, но на этом наборе считается ошибка при каждой итерации. Делается это для того, чтобы ИНС не переобучилась на «тренировочных» данных;

·        контрольные - этот набор данных используется уже для контроля обученности сети, и на нем проверяется работа ИНС уже после всего обучения.

Данные наборы можно загрузить последовательно, т.е. вначале загрузить из одних файлов обучающее множество, затем тестовое из других, а потом контрольное. А можно установить опцию «Создать все наборы» и тогда из одних входных и выходных файлов будут созданы все наборы.

Рисунок 38 - Форма загрузки данных

При выборе этой опции, и после нажатия кнопки «Ок», будет предложено выбрать количество примеров, которые будут отведены под те или иные данные. Данная форма представлена на рисунке 39.

Рисунок 39 - Распределение данных по наборам

В верхней части окна выводится общее количество данных, и представлены поля ввода количества данных трех наборов. Соответственно суммарное количество данных в полях не может быть больше «Общего количества данных». Программа автоматически перераспределит данные при превышении общего количества.

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

Рисунок 40 - Форма представления данных

Рисунок 41 - Форма по выбору обработчика данных

Так как ИНС реализованы через плагины, то и формы обучения выглядят по-разному.

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

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

Прочие настройки ИНС представлены в средней части экрана.

В нижней части экрана отображается информация о ходе обучения нейронной сети.

Рисунок 42 - Форма обучении персептрона

РБФ Сеть

Обучение сети РБФ производится в соответствующей форме, представленной на рисунке 43. Настройки обучения не предусмотрены, обучение начинается после нажатия OK. В верхней части окна, будет выведена информация о процессе обучения.

Рисунок 43 - Форма обучения РБФ сети

 

Эксперименты

После загрузки данных и обучения ИНС возможны проведения экспериментов. Форма экспериментов (рисунок 44) разбита на три части

·        выбор данных для экспериментов;

·        выбор ИНС сети;

·        просмотр результатов.

В верхней части экрана, можно просмотреть данные.

Рисунок 44 - Форма Экспериментов

Результаты экспериментов можно посмотреть на двух графиках:

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

Рисунок 45 - Диаграмма результатов обучения

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

Рисунок 46 - Три вида результатов обучения

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

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!