Разработка нейронной сети для реализации работы спектрометра космических излучений на алмазных детекторах

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

Разработка нейронной сети для реализации работы спектрометра космических излучений на алмазных детекторах

Введение

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

В 1943 году МакКаллок и Питс [2] показали модель ЭВМ, устройство которой напоминало работу мозга. Мозг человека состоит из нейронов, нейроны передают сигналы между собой с помощью нервных импульсов. Работа каждого нейрона довольно медленная по сравнению со скоростью работы ЭВМ, однако нервная система работает гораздо быстрее, потому что все нейроны работают параллельно. Таким образом, мозг - это система параллельных расчетов.

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

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

.1 Спектрометр космических излучений на алмазных детекторах

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

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

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

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

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

Поток электронов характеризуется резкими всплесками, при которых поток может увеличиваться в 100 - 1000 раз. Важно обнаруживать такие ситуации, чтобы оперативно принимать меры безопасности членов экипажа. Во время крупных солнечных «протонных событий», при полёте за пределами магнитосферы Земли, возможно возникновение уровней облучения, представляющих непосредственную угрозу здоровью членов экипажа. При развитии солнечных протонных событий наблюдается резкий рост потока протонов с характерной картиной прихода сначала протонов высоких энергий, а затем нарастание потока протонов более низких энергий. Наличие данных о спектрах протонов необходимо для прогноза радиационных параметров солнечных протонных событий. Спектрометр предназначен для получения данных о потоках космических частиц для прогнозирования солнечных протонных событий и прогнозирования всплесков потоков электронов в РПЗ, а также для фиксации фактов тяжелых заряженных ионов.

.3 Принцип построения

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

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

.4 Описание прибора

ИНС создавалась для обработки измерительных данных спектрометра КИ с пятью алмазными детекторами [5].

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

Перед каждым алмазным детектором установлена металлическая пластина заданной толщины.

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

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

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

На рисунке 1 приведена зависимость энергии, передаваемой электроном чувствительному элементу, от энергии электрона. На рисунке 2 приведена зависимость энергии, передаваемой протоном чувствительному элементу, от энергии протона.

Из графиков видно, что амплитудный анализ сигналов на основе алмазных чувствительных элементов (АЧЭ) не позволяет однозначно определять энергию частицы по амплитуде импульса.

Таблица 1. Энергетические спектры частиц.

№ детектора

№ счетчика частиц (С)

Диапазон энергий регистрируемых частиц,



МэВ

МэВ/нуклон



Электроны

Протоны

ТЗЧ

1

1-1

от 0,3 до 0,9; более 6

более 4,6

более 4,6


1-2


от 4,6 до 160

более 4,6


1-3


от 4,7 до 80

более 4,6


1-4


от 5,3 до 30

более 4,6


1-5


от 7,6 до 15

более 4,8

2

2-1

от 0,65 до 1,5; более 4,8

более 12,5

более 12,5


2-2


от 12,5 до 250

более 12,5


2-3


от 12,5 до 80

более 12,5


2-4


от 13 до 35

более 12,5


2-5


от 14 до 21

более 12,5

3

3-1

более 1,55

более 25

более 25


3-2

более 3,4

более 25

более 25


3-3


от 25 до 300

более 25


3-4


от 25 до 100

более 25


3-5


от 25 до 60

более 25

4

4-1

более 4,9

более 49

более 49


4-2

более 12,5

более 49

более 49


4-3


от 49 до 400

более 49


4-4


от 49 до 150

более 49


4-5


от 50 до 110

более 49

5

5-1



более 45


5-2



более 58


5-3



от 85 до 220


5-4



от 120 до 185



Рис.1. - Энергия, передаваемая электроном АЧЭ.

Для обеспечения разделения частиц по диапазонам можно использовать фильтры.

На рисунке 3 показаны спектры поглощения электронов, прошедших через фильтры.

Рис.2. - Энергия, передаваемая протоном АЧЭ

Рис.3. - Зависимость энергии, передаваемой АЧЭ, от исходной энергии электронов для различных толщин селективных фильтров: 1 - 0,24 мм, 2 - 0,89 мм, 3 - 2,0 мм, 4 - 4,4 мм, 5 - 9,5 мм.

Таким образом, если использовать пять каналов с пятью АЧЭ, установленными за фильтрами с толщинами 0.24 мм, 0.89 мм, 2.0 мм, 4.4 мм, 9.5 мм, и в каналах фиксировать импульсы с амплитудой, соответствующей поглощенной энергии 0.2 МэВ, то появляется возможность производить раздельную регистрацию электронов в следующих диапазонах: от 0.5 до 0.75 МэВ; от 1.2 до 1.5 МэВ; от 2.3 до 2.9 МэВ; от 5.2 до 5.7 МэВ; от 13 до 15 МэВ. Производя подсчет зарегистрированных электронов в каждом диапазоне за заданный интервал времени, легко определять плотность потока электронов в соответствующем диапазоне по формуле


где P - плотность потока частиц; T - время измерения (интервал счета частиц); ω - телесный угол, из которого частицы попадают на АЧЭ: S - площадь чувствительной поверхности АЧЭ.

На рисунке 4 показаны спектры поглощения протонов в АЧЭ, прошедших через фильтры.

Рис.4. - Зависимость энергии, передаваемой АЧЭ, от исходной энергии протонов для различных толщин селективных фильтров: 1 - 0,24 мм, 2 - 0,89 мм, 3 - 2,0 мм, 4 - 4,4 мм, 5 - 9,5 мм.

Здесь так же, как и в случае с электронами, если использовать пять каналов с пятью АЧЭ, установленными за фильтрами с толщинами 0,24 мм, 0,89 мм, 2,0 мм, 4,4 мм, 9,5 мм, а в каналах фиксировать импульсы с амплитудой, соответствующей поглощенной энергии 3,0 МэВ, то появляется возможность производить раздельную регистрацию протонов в следующих диапазонах: от 10 до 20 МэВ; от 21 до 28 МэВ; от 33 до 38 МэВ; от 51 до 55 МэВ; от 79 до 82 МэВ. Для протонов с энергиями выше 100 МэВ использование фильтров нецелесообразно, поэтому разделение протонов в этом диапазоне проводится путем амплитудной дискриминации. Установка порогов, соответствующих переданной энергии 0,5 МэВ и 0,8 МэВ позволяет выделить сигнал от протонов с энергиями ниже 200 МэВ и ниже 100 МэВ, соответственно.

Таким образом, используя фильтры и амплитудную селекцию сигналов АЧЭ, удается обеспечить четкое разделение диапазонов электронов и протонов КИ и рассчитать в этих диапазонах плотности потока частиц.

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

Обработка совокупности данных спектрометра позволяет восстановить текущие спектры электронов, протонов и ТЗЧ снаружи транспортного корабля (ТК).

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

Рис.5. Общий вид гибко-жесткой платы спектрометра. 1 - блок усилителей; 2 - блок интерфейса; 3 - блок питания.

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

Для отработки программ моделирования получения данных и определения погрешности восстановления используется следующая модель космического излучения. На вход спектрометра подаются дифференциальные спектры электронов и протонов, соответствующие вариантам спектров для орбит международной космической станции (МКС) и ГЛОНАСС. Спектр представляют собой число частиц в интервале энергий Δ=0.1 МэВ для различных значений энергии начала данного интервала. На первом этапе создания ИНС и отработки взаимодействия в среде программирования необходимо построить ИНС со следующими параметрами:

Рис.6. Пример реализации ИНС.

Число детекторов спектрометра - 21

Число данных спектрометра (входных данных для ИНС) - 24

Число восстановленных значений спектра электронов - 6

.5 Обработка измерительных данных спектрометра

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

Для обработки информации в системах управления КА необходимо по данным спектрометра КИ получить значения потоков КИ по следующим диапазонам - таблицы 2, 3, 4.

Таблица 2 - Электроны

Диапазон энергий, МэВ

от 0,2 до 0,5

от 0,5 до 0,8

от 0,8 до 1,2

от 1,2 до 1,6

от 1,6 до 2,1

от 2,1 до 3,0

от 3,0 до 5,0

от 5,0 до 7,0

Номер диапазона спектра

Э-1

Э-2

Э-3

Э-4

Э-5

Э-6

Э-7

Э-8


Таблица 3 - Протоны

Диапазон энергий, МэВ

от 0,2 до 10

от 10 до 16

от 16 до 25

от 25 до 35

от 35 до 50

от 50 до 100

от 100 до 200

от 200 до 10000

Номер диапазона спектра

П-1

П-2

П-3

П-4

П-5

П-6

П-7

П-8


Таблица 4 - ТЗЧ

Диапазон ЛПЭ, МэВ/(мг/см2)

от 0,01 до 1

от 1 до 3

от 3 до 10

от 10 до 30

от 30 до 80

Номер диапазона спектра

Т-1

Т-2

Т-3

Т-4

Т-5


Очевидно, что необходимо:

·        разделение зарегистрированных частиц по видам (электроны, протоны, ТЗЧ);

·        определение значений потоков частиц КИ в диапазонах энергий в соответствии с таблицами 2, 3, 4, исходя из информации о потоках, получаемой в виде таблицы 1.

Для решения первой задачи можно использовать прямой подход, заключающийся в формировании системы разностных алгебраических уравнений, позволяющей по показателям сумматоров получить раздельные значения зарегистрированных частиц по видам в указанных диапазонах. Например, по показаниям счетчиков С1-5, С2-5, С3-5, С4-5, С5-1 …. С5-4, определить количество частиц, относящихся к ТЗЧ. Эти данные фиксируются, а, в дальнейшем, вычитаются из общих показателей счетчиков для того, чтобы определить оставшееся количество электронов и протонов и т.д.

Вторая задача частично охватывает первую. Её решение можно трактовать как построение модели явления, порождающего исходные данные (выходная информация спектрометра) и, на ее основе, преобразование дискретных величин в непрерывные, с образованием непрерывной области точек, принадлежащих порождающему источнику, но не вошедших в интервал наблюдения. Фактически - это задача аппроксимации многомерной функции в указанном диапазоне измеряемых параметров. Её можно решать с помощью различных методов, например, с помощью полиномиальной аппроксимации [6], c помощью сплайн аппроксимации [7] и др. Но при этом необходимо учитывать вероятность случайных «всплесков» электронной и/или протонной активности, что, скорее всего, приведет либо к большой вычислительной погрешности, либо к большой размерности и вычислительной сложности.

При таких особенностях эту задачу наиболее эффективно решать на базе теории искусственных нейронных сетей [8].

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

1.6 Постановка задачи. Выводу к разделу

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

Формализация этой постановки выглядит следующим образом:

входной сигнал - это значения параметров спектрометра; задается вектором  N=24;

выходной сигнал - это значения восстановленных параметров спектра космического излучения; задается вектором  K=21;

выходной сигнал включает 8 значений параметров восстановленного спектра электронного излучения, 8 значений параметров восстановленного спектра протонного излучения и 8 значений параметров восстановленного спектра ТЗЧ.

Также имеется соответствие между векторами входного и выходного сигнала - обучающая выборка (табл. 2). Это таблица примеров «вход-выход» размерностью P, на которых НМ будет обучаться и тестироваться.

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

Рис.7. Схематичная постановка задачи

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

2. Решение задачи аппроксимации с помощью искусственного интеллекта

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

Введем обозначения функций:

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

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

2.1 Аппроксимация степенным многочленом

Будем искать аппроксимирующую функцию в виде:

 

Коэффициенты  можно определить из условия Лагранжа [15]:

 

Таким образом, получается система линейных уравнений с n+1 неизвестных.


Систему уравнений (5) можно записать в матричном виде:

 

где:

С - вектор, состоящий из неизвестных коэффициентов ,

Y - вектор, состоящий из известных табличных значений функции ,

А - матрица, имеющая вид:

 

Система линейных уравнений имеет единственное решение, когда определитель матрицы (7) не равен нулю.

Решение системы в матричном виде:

 

2.2 Сплайн-интерполяция

При использовании интерполяционных формул Ньютона, Лагранжа для подбора функции аппроксимирующей на заданном отрезке, часто оказывается большая погрешность полученной функции. Более простой задачей является подбор функции на малом отрезке, поэтому задачу аппроксимации функции на заданном отрезке [a, b] можно свести к более простым задачам вычисления аппроксимирующей функции, разбив заданный интервал на частичные отрезки. [16]

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

 

где

 - коэффициенты сплайна,

 - номер сплайна.

Так как отрезок разбивается на n частичных отрезков, каждый из которых задан своим сплайном с 4 неизвестными коэффициентами, то необходимо получить 4n уравнений для определения неизвестных коэффициентов.

Условие сшивания соседних сплайнов.

Сплайн , построенный на отрезке , должен обладать следующими свойствами [7]:

)        Значение сплайна на концах отрезка  должно совпадать со значением аппроксимируемой функции:

 

2)     
Первая и вторая производные сплайна должны быть непрерывны на концах отрезка:

 

)        Таким образом, получается с помощью описанных условий можно составить 4n-2 уравнений, оставшиеся два уравнения можно получить из условия нулевой кривизны граничных точек  и :

 

Из уравнений (10), (11), (12) получается полная система из 4n линейных уравнений.

2.3 Аппроксимация функций полиномом Чебышева.

Полиномы Чебышева первого рода представляют ортогональную систему функций и описываются выражением (12) [18]:

 

Первые элементы последовательности полиномов Чебышева:

 

Многочлены Чебышева имеют рекуррентную связь:

спектрометр космический нейронный программный

 

спектрометр космический нейронный программный

Выражение  имеет n корней на отрезке [-1;1]. Корни полинома Чебышева описываются выражением [19]:

 

Для аппроксимации, заданной функций подбирается выражение вида:

 

Где  - коэффициенты, которые вычисляются выражением (17):

 

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

2.4 Нейронные сети. Выводы к разделу

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

3. Предварительная обработка данных

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

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

.1 Линейное сжатие данных

Чтобы нормировать данные в диапазоне [0;1] можно воспользоваться формулой линейного сжатия


где: N - число элементов выборки;

- преобразованный i элемент выборки.

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

.2 Статистические характеристики

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

 

где: i- номер элемента выборки.

 

 

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

 

где f - функция активации

3.3    Анализ главных компонент

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

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

 

где: j - индекс, обозначающий элемент в входном векторе.

i - индекс, обозначает номер входного вектора в обучающейся выборке.

После обработки данных вычисляется матрица ковариаций.

 

где: n - число наблюдений.

m - количество элементов во входном векторе.

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

 

где: Е - единичная матрица.

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

Введем следующие обозначения. Параметром k будем обозначать сумму собственных значений.

 

Тогда вклад каждого параметра и вклад m параметров входного вектора можно оценить следующими выражениями:

  

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

1.      Для каждого собственного значения, которое было принято оставить, вычисляется собственный вектор w по формуле [23]:

 

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

.       
Математический аппарат нейронных сетей

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

.1 Дендриты, синапсы и аксоны

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

Рис.8. Нервная клетка

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

.2 Модель нейрона

В общем случае нейрон (см. рис.9.) имеет n связей-синапсов. На вход нейрона поступает n-мерный вектор x. Модель нейрона можно рассматривать как набор из n входных сигналов; n синапсов, на которые поступают соответствующие сигналы; ядро нейрона, которое является основным вычислительным центром модели и аксона. [24] После обработки сигнал выходит из нейрона и попадает на входные рецепторы других нейронов. Канал, по которому сигнал выходит из нейрона, называется аксоном.

Рис.9. Схема нейрона.

В ядре нейрона выполняется скалярное умножение вектора x на вектор весов w.

 

n - количество входов нейронаi - значение i-го входа нейронаi - вес i-ой связи нейрона

После вычисления результата в ядре нейрона формируется выход в соответствии с выражением:

 

В f-это активационная функция нейрона.

.2 Функции активации в нейронных сетях

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

Функция сравнивает входное значение нейрона с предельным значением. В случае, когда входное значение превышает пороговое, функция возвращает единицу, в противном случае возвращается ноль (см. рис.10.).

 

Функция задана (27). На интервале [-a, a] функция работает как линейная, а за его пределами как пороговая (см. рис.11). При увеличении коэффициента a функция вырождается в пороговую.

Рис.10. Пороговая функция.

 

Рис.11. Кусочно-линейная функция при a=5.

Эта функция наиболее часто применяется при разработке нейронных сетей и имеет вид (33). Ее основные преимущества перед другими в том, что она на всей числовой оси дифференцируема и непрерывна. Так как в алгоритме обучения нейронной сети вычисляется производная активационной функции, то дифференцируемость функции важна при проектировании НС.

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

 

Рис.12.Сигмоидальная функция.

Часто вместо сигмоидальной функции используют гиперболический тангенс (29).

 

Функция (см. рис.13.) нечетная, дифференцируема и непрерывна на всей оси. Область значений принадлежит интервалу [-1;1]. Параметр А определяет крутизну функции.

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

4.3 Вычисление выхода нейронной сети

Сети, сотоящие из нескольких слоев нейронов, называют многослойными(см. рис.14). Входной сигнал распространяется по сети от слоя к слою. Последний слой нейронной сети называется выходным слоем, остальные слои называются скрытыми слоями.

Рис.14.Пример многослойной сети.

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

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

.4 Алгоритм Левенберга-Марквардта

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

Алгоритм Левенберга-Марквардта применяется для оптимизации параметров нелинейных регрессионных моделей <#"897376.files/image052.gif"> (35)

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

Исходные данные:

В задаче представлены следующие параметры:

Выборка данных:

Функциональная связь:

Необходимо определить вектор весовых коэффициентов w так, чтобы функция ошибки достигала глобального минимума:

 (36)

На начальном этапе вектор весовых коэффициентов инициализируется случайным образом в диапазоне чисел [0;1].

После инициализации на каждой итерации вычисляется изменение вектора весовых коэффициентов - . Для оценки этого изменения вычисляется выражение:


Где J- якобиан функции  в точке w.

Выражение Якобиана J для k-ого нейрона сети:

 (38)

где K - количество нейронов в выходном слое;- число примеров в обучающейся выборке.- число связей в каждом нейроне выходного слоя.

Для нахождения последующего приращения  нужно приравнять к нулю вектор частных производных выражения (36).

Преобразуем выражение (36) перед дифференцированием.


В результате получаем выражение для расчёта изменений вектора весовых коэффициентов.


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


где  размерности:  - [P * H1],  - [H1 * P],  - [H1 * H1];

следовательно, размерность единичной матрицы I - [H1 * H1];

 - коэффициент регуляризации. Выбирается экспериментально на каждой итерации;

- желаемый выход сети на k-ом нейроне выходного слоя по i-ому примеру;

- полученный ответ сети на k-ом нейроне выходного слоя по i-ому примеру.

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


По достижению критерия ошибки заданного минимума алгоритм заканчивает работу.

.5 Обучение ИНС методом Левенберга-Марквардта

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

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

Для решения данной задачи можно использовать градиентные алгоритмы, стохастические алгоритмы, генетические алгоритмы и др. [9].

В проведенных исследованиях использовался градиентный алгоритм наискорейшего спуска совместно с алгоритмом минимизации критерия ошибки по методу Левенберга-Марквардта. [10,11].

Начальные значения весовых коэффициентов определялись последовательностью действий [11]:

инициализация значений  и случайными равномерно распределенными числами из интервала [-0.5,+0.5];

вычисление норм  и ;

расчет коэффициентов масштабирования , где n - количество нейронов текущего слоя, m - количество нейронов последующего слоя;

выбор смещений  и  из интервала ;

формирование начальных значений весов: , .

5. Решение задачи

.1 Восстановление энергетических спектров сигналов космического излучения

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

Рис.15. Структура персептрона с одним скрытым слоем

В качестве данных  используются входные параметры спектрометра. Весовым коэффициентам

,

,

где H1 - количество нейронов в скрытом слое, K - количество нейронов в выходном слое

первоначально присваиваются случайные значения из интервала (-0.5, +0.5).

Величины

,

,

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

- нелинейное преобразование сигнала сети (функция активации).

Тогда с учетом введенных обозначений:

выход с j - го нейрона скрытого слоя (j=1, 2, …, H1) будет равен

(39)

а выход с j - го нейрона выходного слоя (j=1,2,…,K)

(40)

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

=(41)

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

,(42)

где P- количество обучающих примеров и в качестве функции активации сигмоидальную функцию вида:

,(43)

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

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

После обучения, НМ на любой входной сигнал будет формировать выходной сигнал  в соответствии с выражением (2).

5.2 Обучение НМ

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

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

Для решения данной задачи можно использовать градиентные алгоритмы, стохастические алгоритмы, генетические алгоритмы и др. [12].

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

, где - градиент ошибки

- коэффициент обучения; характеризует скорость и качество обучения НМ.

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

,

,

 

Начальные значения весовых коэффициентов определялись следующей последовательностью действий [14]:

·        инициализация значений  и случайными равномерно распределенными числами из интервала [-0.5,+0.5];

·        вычисление норм  и ;

·        расчет коэффициентов масштабирования , где n - количество нейронов текущего слоя, m - количество нейронов последующего слоя;

·        выбор смещений  и  из интервала ;

·        формирование начальных значений весов: , .

Вследствие того, что при обучении НМ на базе градиентной процедуры наискорейшего спуска возможны «зависания» в локальных минимумах функционала (4), использовался плавающий коэффициент (шаг) обучения . Начальный коэффициент  выбирался равным 0.75. Значения весов и смещений сети запоминались. Если после 10 итераций (этапов обучения) значение функционала ошибки продолжает уменьшаться, то увеличивается на 0.05, а текущие значения весов и смещений запоминаются. Если на некоторой итерации произошло увеличение функционала (4), то последние запомненные значения весов и смещений восстанавливаются, коэффициент  уменьшается на 0.05 и процесс обучения продолжается до тех пор, пока значение функционала (4) не станет меньшим заданной точности , или дальнейшие итерации не приводят к уменьшению значения функционала (4).

.3 Экспериментальные исследования

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

Для формирования обучающей выборки было выбрано 1000 вариантов данных спектрометра КИ.

Данные спектрометра КИ были получены путем преобразования спектров излучений поясов Земли, солнечных космических лучей и галактических космических лучей. Были рассчитаны значения плотностей потока (частиц/см2·с) для изотропных потоков электронов, протонов и ТЗЧ в диапазонах энергии и ЛПЭ, границы которых указаны в Таблицах 2 - 4.

В таблице 5 дан пример трех вариантов спектров КИ. В таблице 6 приведены три набора измерительных данных спектрометра КИ, соответствующие вариантам спектров таблицы 5.

Таблица 5. Плотность потоков КИ в диапазонах в соответствии с таблицами 2 -4. Значение плотности потока приведено в 1/(см2·с)

Энергетические диапазоны для частиц КИ

№ спектра


201

202

203

Э-1

5,94E+06

4,08E+06

5,65E+06

Э-2

1,69E+06

4,45E+05

1,15E+06

Э-3

5,33E+05

9,26E+04

2,64E+05

Э-4

6,64E+04

6,42E+03

1,50E+04

Э-5

3,26E+04

3,50E+03

1,01E+03

Э-6

4,01E+04

4,81E+03

7,78E+02

Э-7

5,63E+04

7,99E+03

8,95E+02

Э-8

2,68E+04

4,82E+03

3,20E+02

П-1

2,14E+06

3,30E+07

4,60E+05

П-2

6,26E+01

1,42E+04

2,32E+01

П-3

2,60E+01

3,02E+03

1,01E+01

П-4

8,51E+00

5,67E+02

3,10E+00

П-5

4,63E+00

1,93E+02

1,34E+00

П-6

4,90E+00

7,33E+01

7,25E-01

П-7

2,93E+00

6,78E+00

1,33E-01

П-8

4,53E+00

1,99E+00

1,59E+00

Т-1

8,04E+00

1,64E+01

3,14E+00

Т-2

1,48E-01

3,13E-01

5,73E-02

Т-3

1,02E-01

2,16E-01

3,84E-02

Т-4

2,12E-02

4,51E-02

8,10E-03

Т-5

1,06E-10

2,88E-12

3,74E-12


Таблица 6. Данные по скорости счета, считываемые со счетчиков частиц спектрометра КИ. Скорость счета в 1/с

№ счетчик частиц КИ

№ спектра


201

202

203

1-1

8,12E+02

4,45E+02

6,63E+02

1-2

3,66E-01

1,25E+02

1,19E-01

1-3

2,84E-01

9,31E+01

9,49E-02

1-4

1,62E-01

4,93E+01

5,59E-02

1-5

2,98E-02

7,07E+00

1,08E-02

2-1

4,08E+02

1,07E+02

2,28E+02

2-2

2,12E-01

2,26E+01

7,74E-02

2-3

1,57E-01

1,80E+01

5,98E-02

2-4

8,54E-02

1,05E+01

3,31E-02

2-5

1,49E-02

1,65E+00

5,85E-03

3-1

1,11E+03

2,31E+02

1,66E+01

3-2

1,48E+00

2,77E+01

2,04E-01

3-3

4,46E-01

2,06E+01

1,36E-01

3-4

1,97E-01

1,05E+01

6,63E-02

3-5

3,73E-02

1,88E+00

1,32E-02

4-1

8,62E+02

2,58E+02

6,95E+00

4-2

2,58E-01

2,20E+00

3,24E-02

4-3

9,99E-02

1,28E+00

1,62E-02

4-4

3,07E-02

4,61E-01

5,89E-03

4-5

5,87E-03

7,05E-02

1,55E-03

5-1

3,28E-05

1,57E-05

1,49E-05

5-2

2,03E-06

5,25E-07

5,64E-07

5-3

8,72E-08

2,03E-08

2,22E-08

5-4

2,72E-10

5,93E-11

7,44E-11


Для того, чтобы НМ быстрее обучалась (см. (5)), значения входного и желаемого выходного сигнала подвергались масштабированию в интервал [0,1]:

(44)

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

Проанализировав табл. 2, можно определиться с параметрами НМ.

Таким образом, размерность входного сигнала  N=24, размерность выходного сигнала K=21. Первоначально количество нейронов в скрытом слое H1 выбиралось равным 24. Но снижение H1 до 12 нейронов не привело к возрастанию абсолютной погрешности НМ. Также не улучшает эффективность НМ и добавление второго скрытого слоя (из 8, 12, 16, 24 нейронов).

Обучающая выборка (табл. 2) делилась на две части: 90 примеров использовались для обучения нейронной сети, 10 примеров - для тестирования.

Обучающие примеры равномерно перемешивались и, после этого, сеть с параметрами НМ(4,12,12) (размерность входного слоя - 4, скрытого слоя - 12, выходного слоя - 12) на них обучалась.

.3 Тестирование НМ

Тестирование НМ производилось на выборке 100 примеров спектрометра КИ, произвольным образом отобранных из 1000 вариантов, измерительных данных спектрометра КИ, сгенерированных для обучения НМ. После обучения НМ, ей предъявлялись примеры из тестового множества.

Для оценки погрешности восстановления спектров КИ для каждого диапазона КИ по результатам 100 восстановлений вычислялась относительная среднеквадратическая погрешность. Данные по погрешностям восстановления сведены в таблицу 7.

Таблица 7. Погрешность восстановления спектров КИ по энергетическим диапазонам

Энергетические диапазоны для частиц КИ

Относительная погрешность восстановления, относ. ед.

Э-1

8

Э-2

16

Э-3

28

Э-4

16

Э-5

6

Э-6

5

Э-7

11

Э-8

266

П-1

1131389

П-2

14

П-3

1

П-4

1

П-5

2

П-6

5

П-7

24

П-8

117

Т-1

13

Т-2

2

Т-3

2

Т-4

2

Т-5

2


Так как выход НМ ограничен интервалом [0,1] (см. (5)), то он преобразовывался в реальный выходной сигнал в соответствии с выражением


Также дополнительно исследовались нейронные сети с другими параметрами: НМ(4,24,12), НМ(4,16,12), НМ(4,8,12), НМ(4,12,12,12), НМ(4,12,24,12). Но существенного улучшения в результатах не было достигнуто.

Формализация задачи на языке математики.

Существует выборка данных, в выборке векторы длины n: X 1, …, Xn и Y1, …Ym. Элементы из первой выборки Xi (i=1, …, n) представляют набор входных данных, а элементы из второй выборки Yj (j=1, …, m) описывают соответствующие выходные параметры. Необходимо построить нейронную сеть с n входами и m выходами. Таким образом, данная задача относится к классу задач регрессии многомерных функций.

Реализация задачи. Описание интерфейса программного комплекса.

Для реализации задачи был разработан программный комплекс в среде Visual Studio на языке C# для обучения на нейронной сети, разработан дружелюбный интерфейс для пользования, с помощью которого можно менять параметры нейронной сети и сравнивать, как идет обучение. Для удобства ведется вывод графика ошибки нейронной сети на обучающейся и контрольной выборке. Выборка перед обучением делится на три части: обучающуюся, и контрольную, и тестовую. Таким образом, можно следить за процессом обучения и не допускать переобучения. Эффект переобучения возникает, когда ошибка на контрольной выборке начинает возрастать, а на обучающейся продолжает уменьшаться. В этом случае обучение необходимо остановить. Эффект переобучения показан на рис.16.

Рис.16. Эффект переобучения.

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

Описание интерфейса программы

Пункт меню Сеть содержит такие пункты: Загрузить сеть, Сохранить сеть, Создать сеть, Обучить сеть. В пунктах меню сделана защита «от аномальных ситуаций». Например, пункт меню «Обучить сеть» недоступен пока он не создаст сеть.

Пункт меню «Создать сеть».

Позволяет задать архитектуру сети.

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

Пункт меню «Сохранить сеть».

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

Пункт меню «Загрузить сеть».

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

Запускает процесс обучения для заданной сети.

Пункт меню График содержит такие пункты: Масштаб по умолчанию, Прервать/Возобновить обучение, Тестирование.

Пункт меню «Масштаб по умолчанию».

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

Пункт меню «Прервать/Возобновить обучение».

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

Пункт меню «Тестирование».

Позволяет после обучения сети проверить сеть на примерах из выборки.

Программа выводит на экран число эпох обучения и время обучения.

Рис.17. Тестирование сети на примерах.

На рис.17. показано тестирование сети на одном из примеров из выборки.

На данной выборке были изучены эффекты переобучения сети и паралича.

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

Рис.18. Эффект паралича сети.

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

.        При больших значениях скорости обучения можно на графике увидеть нестабильное снижение ошибки. (см. рис.19):

Рис.19. Эффект большой скорости обучения.

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

Программный модуль.

Программа состоит из классов: LayerNW и NeuralNW.

В классе LayerNW реализованы следующие методы:- метод, который выделяет память в программе для хранения весовых коэффициентов нейронной сети.- метод, инициализирующий весовые коэффициенты случайными числами в диапазоне от 0 до 1.

LayerNW - конструктор класса, который создает слой нейронной сети. В качестве входных параметров передается: число входов в нейроны данного слоя и число нейронов в этом слое.

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

Предполагается использовать нейронную сеть с одним скрытым слоем для решения задачи. Выборка на данный момент содержит 1000 элементов. Были проведены исследования по обучению нейронной сети с одним скрытым слоем и разным количеством нейронов в скрытом слое. Наиболее эффективно снижается ошибка обучения в случае, когда количество нейронов в скрытом слое находится в диапазоне 90-190.

Рис.20. Обучение нейронной сети с 50 нейронами на скрытом слое.

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

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


где W- количество свободных параметров сети, ε - необходимая точность обучения. Тогда для сети из 10 нейронов в скрытом слое с 11 входами и требуемой точностью 10% потребуется 1100 обучающихся наборов.

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

1.      Горн Л. С., Хазанов Б. И. Спектрометрия ионизирующих излучений на космических аппаратах.

.        Маккалох Дж., Питтс У. Логические исчисления идей, относящихся к нервной деятельности.// Автоматы. М.: ИЛ, 1956.

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

.        Кадилин В.В., Колюбин В.А., Львов С.А., Недосекин П.Г., Идалов В.А., Тюрин Е.М., Колесников С.В., Самосадный В.Т. Перспективы применения алмазных детекторов для регистрации заряженных частиц космического излучения // Ядерная физика и инжиниринг. 2014. Т. 5. № 2. С. 138.

.        Захарченко К.В., Каперко А.Ф., Колюбин В.А., Кулагин В.П, Львов С.А., Недосекин П.Г., Чумаченко Е.Н. Спектрометрический алмазный детектор потоков ионизирующего излучения для транспортных космических систем // Измерительная техника. 2015. № 6 (принято в печать).

.        Дикусар Н.Д. Полиноминальная аппроксимация высоких порядков.

.        Алберг Дж., Нильсон Э., Уолш Дж., Теория сплайнов и се приложения, пер. с англ., М., 1972;

.        Хайкин Саймон. Нейронные сети. Полный курс.

.        Бодянский Е.В., Руденко О.Г. Искусственные нейронные сети: архитектуры, обучение, применения.

.        Вороновский Г.К., Махотило К.В., Петрашев С.Н., Сергеев С.А. "Генетические алгоритмы, искусственные нейронные сети и проблемы виртуальной реальности", Харьков, Основа, 1997 г.

.        Колмогоров А.Н., Фомин С.В., Элементы теории функций и функционального анализа.

.        Панченко Т.В. Генетические алгоритмы.

.        Круглов В.В., Дли М.И., Голунов Р.Ю. Нечеткая логика и искусственные нейронные сети.

.        Уоссермен Ф. Нейрокомпьютерная техника: теория и практика.

.        Тынкевич М. А. Численные методы анализа.

.        Алберг Дж., Нильсон Э., Уолш Дж. Теория сплайнов и ее приложения.

.        Завьялов Ю. С., Леус В. А., Скороспелов В. А. Сплайны в инженерной геометрии.

.        Вершинин В. В., Завьялов Ю. С, Павлов Н. Н. Экстремальные свойства сплайнов и задача сглаживания.

.        Васильев, Н. Многочлены Чебышёва и рекуррентные соотношения.

.        Данилов Ю.А. Многочлены Чебышева.

.        Сенашова М.Ю. Погрешности нейронных сетей. Вычисление погрешностей весов синапсов.

.        Айвазян С. А., Бухштабер В. М., Енюков И. С., Мешалкин Л. Д. Прикладная статистика. Классификация и снижение размерности.

23.    Jolliffe I.T. Principal Component Analysis

24.    Рао С. Р., Линейные статистические методы и их применения.

.        Анил К. Джейн, Жианчанг Мао, Моиуддин К.М. Введение в исскуственные нейронные сети.

Приложение

nero

{

public partial class Form1: Form

{[] NLayers=null;

int stop = 0;

int epox = 0;

System.Windows.Forms.Label[] NLayerLabels = null;

double[][] input = null;

double[][] output = null;

double[][] input_train = null;

double[][] input_test = null;

double[][] output_train = null;

double[][] output_test = null;

double[][] intest = null;

double[][] outest = null;

double[] maxinput = null;

double[] mininput = null;

double[] maxout = null;

double[] minout = null;

double[] sredout = null;

double[] sredin = null;

double[] dispin = null;

double[] dispout = null;

public delegate void InvokeDelegate(string err_tr,double epox,double speed);

public delegate void MetodDelegate(int time);

public delegate void EnableDelegate(bool br);

public delegate void GraphDelegate(double err, double test);

PointPairList list1 = new PointPairList();

PointPairList list2 = new PointPairList();

NeuralNW netset = null;

double x = 1;

int time = 0;

double speed_teach = 1;

int vixod = 21;

Thread tt = null;

GraphPane pane = null;

int tik = 1;

int[] numer = null;Form1()

{

InitializeComponent();= new double[(int)numericUpDown1. Value];

mininput = new double[(int)numericUpDown1. Value];

maxout = new double[vixod];

minout = new double[vixod];

sredout = new double[vixod];

sredin = new double[(int)numericUpDown1. Value];

dispout = new double[vixod];

dispin = new double[(int)numericUpDown1. Value];

numer = new int[800];

for (int i = 0; i < 400;i++ )

{

numer[i] = i;

}

pane = zedGraph. GraphPane;

pane. XAxis. Title. Text = "Эпохи обучения";

pane. YAxis. Title. Text = "Модуль ошибки ( Мэв )";

pane. Title. Text = "Ошибка сети и ошибка обобщения";

}

void normirov()

{

int j = 0;

int I = 0;

for (j = 0; j < input[0].Length; j++)

{

double max = -10;

double min = 100000000000000000;

double sum = 0;

for (i = 0; i < input.GetLength(0); i++)

{

sum = sum + input[i][j];

if (input[i][j] > max)

max = input[i][j];

if (input[i][j] < min)

min = input[i][j];

}

sredin[j] = sum / input.Length;

maxinput[j] = max;

mininput[j] = min;

for (i = 0; i < input.GetLength(0); i++)

{

if (max != min)

input[i][j] = (input[i][j] - min) / (max - min);

else

input[i][j] = (input[i][j] - min);

}

}

for (j = 0; j < output[0].Length; j++)

{

double max = -10;

double min = 1000000000000000000;

double sum = 0;

for (i = 0; i < output. GetLength(0); i++)

{

sum = sum + output[i][j];

if (output[i][j] > max)

max = output[i][j];

if (output[i][j] < min)

min = output[i][j];

}

sredout[j] = sum / output.Length;

maxout[j] = max;

minout[j] = min;

for (i = 0; i < output.GetLength(0); i++)

{

if (max != min)

output[i][j] = (output[i][j] - min) / (max - min);

else

output[i][j] = (output[i][j] - min);

}

}

}

void readfile()

{

int j = 0;

int razmernost = 1000;

input = new double[razmernost][];

output = new double[razmernost][];

for (int k1 = 0; k1 < razmernost; k1++)

{

input[k1] = new double[(int)numericUpDown1.Value];

output[k1] = new double[vixod];

}

StreamReader viborka = new StreamReader("input.txt");

while (true)

{

string text = viborka. ReadLine();

if ((text == null) || (text == ""))

{

viborka. Close();

break;

}

string[] ss = text. Split('\t');

for (int k2 = 0; k2 < numericUpDown1.Value; k2++)

{

input[j][k2] = Double. Parse(ss[k2]);

}

j++;

}

viborka. Close();

viborka = new StreamReader("output.txt");

j = 0;

while (true)

{

string text = viborka. ReadLine();

if ((text == null) || (text == ""))

{

viborka. Close();

break;

}

string[] ss = text. Split('\t');

for (int k2 = 0; k2 < vixod; k2++)

{

output[j][k2] = Double. Parse(ss[k2]);

}

j++;

}

viborka.Close();

}

void formervibork()

{

int i = 0;

int j = 0;

int r = 0;

int k = 0;

input_train = new double[4*input.Length / 10][];

output_train = new double[4 * input.Length / 10][];

output_test = new double[input.Length / 20][];

input_test = new double[input.Length / 20][];

outest = new double[input.Length / 20][];

intest = new double[input.Length / 20][];(k = 0; k < input_train.Length; k++)

{

input_train[k] = new double[(int)numericUpDown1.Value];

output_train[k] = new double[vixod];

}

for (k = 0; k < input_test.Length; k++)

{

input_test[k] = new double[(int)numericUpDown1.Value];

output_test[k] = new double[vixod];

intest[k] = new double[(int)numericUpDown1.Value];

outest[k] = new double[vixod];

}

for (k = 0; k < input. Length; k++)

{

int h;. DivRem(k, 10, out h);

if (h < 4)

{

input_train[i] = input[k];

output_train[i] = output[k];

i++;

}

if ((h == 5)&&(j!=input_test. Length))

{

input_test[j] = input[k];

output_test[j] = output[k];

j++;

}

if ((h == 6) && (r != intest. Length))

{

intest[r] = input[k];

outest[r] = output[k];

r++;

}

}

}

void teach(double speed)

{

double lasterror = 100;

double err = 10;

double[] sumist_tr = new double[vixod];

double[] sumnorm_tr = new double[vixod];

double[] sumist_test = new double[vixod];

double[] sumnorm_test = new double[vixod];

// Ошибка сети

double error = 100;

double test_err = 100;

Stopwatch ss = new Stopwatch();

ss. Start();

while (err > 0.00000001)

{

epox++;

if (stop == 0)

{

break;

}

Random rand = new Random();

for (int i = numer. Length - 1; i > 0; i--)

{

int j = rand. Next(i);

int tmp = numer[i];

numer[i] = numer[j];

numer[j] = tmp;

}

for (int i = 0; i < input_train.Length; i++)

{

err=err+netset. LernNW(input_train[numer[i]], output_train[numer[i]], speed);

}

err = err / input_train.Length;

if (Math. Abs(err - lasterror) < 0.000000001)

{

// Уменьшаем коэффициент скорости обучения на 2

speed /= 2;

if (speed < 0.001)

speed = 0.001;

}

tik++;

error = 0;

for (int i = 0; i < input_train.Length; i++)

{

double[] y = new double[vixod];

double[] realout = new double[vixod];

netset. NetOUT(input_train[i], out y);

for (int j = 0; j < output_train[0].Length; j++)

{

realout[j] = output_train[i][j] * (maxout[j] - minout[j]) + minout[j];

y[j] = y[j] * (maxout[j] - minout[j]) + minout[j];

error = error + Math.Abs(realout[j] - y[j]);

}

}

error = error / input_train.Length;

test_err = 0;

for (int i = 0; i < input_test.Length; i++)

{

double[] y = new double[vixod];

double[] realout = new double[vixod];

netset. NetOUT(input_test[i], out y);

for (int j = 0; j < output_test[0].Length; j++)

{

realout[j] = output_test[i][j] * (maxout[j] - minout[j]) + minout[j];

y[j] = y[j] * (maxout[j] - minout[j]) + minout[j];

test_err = test_err + Math.Abs(realout[j] - y[j]);

}

}

test_err = test_err / input_test.Length;

lasterror = err;

grafic(error, test_err);

InvokeMethod("обучение "+error.ToString()+" \r\n тестовая " +test_err.ToString(), epox,speed);

InvokeMethod("0", epox,speed);

}

ss.Stop();

time =time+ ss.Elapsed.Seconds;

Method(time);

if (stop == 0)

{

enable(true);

}

else

{

Time = 0;

Epox = 0;

enable(false);

}

stop = 0;

}

private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e)

{

if (netset==null)

MessageBox. Show("Сеть не создана!");

return;

}

DialogResult s=MessageBox. Show("Вы уверены ?","Внимание", MessageBoxButtons.OKCancel);

if (s == DialogResult. OK)

{

netset. SaveNW("net.txt");

MessageBox. Show("Сеть сохранена в файл net.txt в папке с программой!");

}

}void обучитьToolStripMenuItem_Click(object sender, EventArgs e)

{(netset==null)

{

MessageBox. Show("Сеть не создана! Создайте сеть для обучения!");

return;

}

readfile();

normirov();

formervibork();

stop = 1;

textBox4.Text = "0";

textBox5.Text = "0";

list1.Clear();

list2.Clear();

обучитьToolStripMenuItem. Enabled = false;

try

{

speed_teach = Double. Parse(textBox3.Text);

}

catch

{

MessageBox. Show("Параметры скорости и коэффициент активации должны быть числовые !");

return;

}

pane = zedGraph. GraphPane;

pane. CurveList. Clear();

Thread tt = new Thread(delegate() { teach(speed_teach); });

tt.Start();

}

private void создатьСетьToolStripMenuItem_Click(object sender, EventArgs e)

{

double sigmoid_a = 1;

if (NLayers == null)

{

MessageBox. Show("Настройте число скрытых слоев. Должно быть больше нуля!");

return;

}

else

if (NLayers.Length==0)

{

MessageBox. Show("Настройте число скрытых слоев. Должно быть больше нуля!");

return;

}

int[] nlayers = new int[NLayers.Length];

for (int i = 0; i < NLayers.Length; i++)

{

nlayers[i] = (int)NLayers[i].Value;

}

if (nlayers[nlayers. Length - 1] != vixod)

{

MessageBox. Show("Внимание! В данной задаче число нейронов в выходном слое должно быть 21\n У вас " + nlayers[nlayers. Length - 1] + "\n Измените число на 21, пересоздайте сеть и запустите обучение!");

return;

}

{

sigmoid_a = Double. Parse(textBox2.Text);

speed_teach = Double. Parse(textBox3.Text);

}

catch

{

MessageBox. Show("Параметры скорости и коэффициент активации должны быть числовые !");

return;

}

time = 0;

epox = 0;

MessageBox. Show("Сеть успешно создана, можно приступать к обучению");

}void тестирование_Click(object sender, EventArgs e)

{

Form2 ff = new Form2(netset);

ff. maxinput = maxinput;

ff. mininput = mininput;

ff. maxout = maxout;

ff. minout = minout;

ff. intest = intest;

ff. outest = outest;

 ff. ShowDialog();

 }

}

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

 

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