бесплатно рефераты
 
Главная | Карта сайта
бесплатно рефераты
РАЗДЕЛЫ

бесплатно рефераты
ПАРТНЕРЫ

бесплатно рефераты
АЛФАВИТ
... А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я

бесплатно рефераты
ПОИСК
Введите фамилию автора:


Классификация сейсмических сигналов на основе нейросетевых технологий

Обучение нейронных сетей как минимизация функции ошибки.

Когда функционал ошибки нейронной сети задан (раздел 6.3), то главная

задача обучения нейронных сетей сводится к его минимизации. Градиентное

обучение – это итерационная процедура подбора весов, в которой каждый

следующий шаг направлен в сторону антиградиента функции ошибки.

Математически это можно выразить следующим образом:

[pic], или , что то же самое : [pic],

здесь (( - темп обучения на шаге (. В теории оптимизации этот метод

известен как метод наискорейшего спуска.[]

Метод обратного распространения ошибки.

Исторически наибольшую трудность на пути к эффективному правилу

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

функции ошибки [pic]. Дело в том, что ошибка сети определяется по ее

выходам, т.е. непосредственно связана лишь с выходным слоем весов. Вопрос

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

найти производные по соответствующим весам. Нужна была процедура передачи

ошибки с выходного слоя к предшествующим слоям сети, в направлении обратном

обработке входной информации. Поэтому такой метод, когда он был найден,

получил название метода обратного распространения ошибки (error back-

propagation ).

Разберем этот метод на примере двухслойного персептрона с одним

нейроном на выходе.(рис 6.1) Для этого воспользуемся введенными ранее

обозначениями. Итак,

[pic] -Функция ошибки (13)

[pic] -необходимая коррекция весов коррекция весов (14)

для выходного слоя (v записывается следующим образом.

[pic]

Коррекция весов между входным и скрытым слоями производится по формуле:

[pic] (15)

[pic] [pic] [pic]

Подставляя одно выражение в другое получаем

[pic] (16)

Производная функции активации, как было показано ранее (раздел 6.1),

вычисляется через значение самой функции. [pic][pic]

Непосредственно алгоритм обучения состоит из следующих шагов:

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

сети.

2. Вычислить выход сети y(x) по формуле (12).

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

вектора (13).

4. Если была допущена ошибка при классификации выбранного вектора, то

подкорректировать последовательно веса сети сначала между выходным и

скрытым слоями (15), затем между скрытым и входным (16).

5. Повторять шаги с 1 по 4 для каждого вектора обучающего множества до тех

пор, пока ошибка на всем множестве не достигнет приемлемого уровня.

Несмотря на универсальность, этот метод в ряде случаев становится

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

увеличить скорость сходимости функционала ошибки, разработано много

модификаций стандартного алгоритма, в частности две из которых и

предлагается использовать.

Многостраничное обучение.

С математической точки зрения обучение нейронных сетей (НС) – это

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

обратного распространения ошибки (single-режим) обучение НС рассматривается

как набор однокритериальных задач оптимизации. Критерий для каждой задачи -

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

алгоритма обратного распространения параметры НС (синаптические веса и

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

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

оптимизации.

Из теории оптимизации следует, что при решении многокритериальных задач

модификации параметров следует производить, используя сразу несколько

критериев (примеров), в идеале - все. Тем более нельзя ограничиваться одним

примером при оценке производимых изменений значений параметров.

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

агрегированные или интегральные критерии, которые могут быть, например,

суммой, взвешенной суммой или квадратным корнем от суммы квадратов оценок

решения отдельных примеров.

В частности, в настоящих исследованиях изменения весов проводилось

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

рассчитывалась в виде :

[pic]

где,

k - номер обучающей пары в обучающей выборке, k=1,2,…,n1+n2

n1 - количество векторов первого класса;

n2 - число векторов второго класса.

Как показывают тестовые испытания, обучение при использовании пакетного

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

Автоматическая коррекция шага обучения.

В качестве еще одного расширения традиционного алгоритма обучения

предлагается использовать так называемый градиентный алгоритм с

автоматическим определением длины шага (. Для его описания необходимо

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

. начальное значение шага(0 ;

. количество итераций, через которое происходит запоминание данных сети

(синоптических весов и смещений);

. величина (в процентах) увеличения шага после запоминания данных сети, и

величина уменьшения шага в случае увеличения функции ошибки.

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

Затем происходит заданное число итераций обучения с заданным шагом. Если

после завершения этих итераций значение функции ошибки не возросло, то шаг

обучения увеличивается на заданную величину, а текущие значения весов и

смещений записываются на диск. Если на некоторой итерации произошло

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

значения весов и смещений, а шаг обучения уменьшается на заданную величину.

При использовании автономного градиентного алгоритма происходит

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

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

обучения сети без потери качества полученного результата.

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

Одна из наиболее серьезных трудностей изложенного подхода обучения

заключается в том, что таким образом минимизируется не та ошибка, которую

на самом деле нужно минимизировать, а ошибка, которую можно ожидать от

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

хотелось бы, чтобы нейронная сеть обладала способностью обобщать результат

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

ошибку на обучающем множестве, и в отсутствие идеального и бесконечно

большого обучающего множества это совсем не то же самое, что минимизировать

"настоящую" ошибку на поверхности ошибок в заранее неизвестной модели

явления [5]. Иначе говоря, вместо того, чтобы обобщить известные примеры,

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

Соответственно возникает проблема – каким методом оценить ошибку

обобщения? Поскольку эта ошибка определена для данных, которые не входят в

обучающее множество, очевидным решением проблемы служит разделение всех

имеющихся в нашем распоряжении данных на два множества: обучающее – на

котором подбираются конкретные значения весов, и валидационного – на

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

должно быть еще и третье множество, которое вообще не влияет на обучение и

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

сети. Ошибки, полученные на обучающем, валидационном и тестовом множестве

соответственно называются ошибка обучения, валидационная ошибка и тестовая

ошибка.

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

подхода:

. Ранняя остановка обучения;

. Прореживание связей (метод от большого к малому);

. Поэтапное наращивание сети ( от малого к большому).

Самым простым является первый метод. Он предусматривает вычисление во время

обучения не только ошибки обучения, но и ошибки валидации, используя ее в

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

обучающем и контрольном множестве будет одинаковой. По мере того, как сеть

обучается, ошибка обучения, естественно, убывает, и, пока обучение

уменьшает действительную функцию ошибок, ошибка на контрольном множестве

также будет убывать. Если же контрольная ошибка перестала убывать или даже

стала расти, это указывает на то, что сеть начала слишком близко

аппроксимировать данные и обучение следует остановить. Рисунок 6.5 дает

качественное представление об этой методике.

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

тем обстоятельством, что исходная выборка очень мала, а хотелось бы как

можно больше данных использовать для обучения сети. В связи с этим было

принято решение отказаться от формирования валидационного множества, а в

качестве момента остановки алгоритма обучения использовать следующее

условие: ошибка обучения достигает заданного минимального уровня, причем

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

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

определенном минимуме ошибки обучения достигался относительный минимум

ошибки на тестовых данных.

Два других подхода для контроля переобучения предусматривают

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

эффективное вымывание малых весов (weight elimination) ,т.е. прореживание

малозначительных связей, а во втором, напротив, поэтапное наращивание

сложности сети. [3,4,5].

6.6 Формирование обучающей выборки и оценка эффективности обученной

нейросетевой модели.

Из исходных данных необходимо сформировать как минимум две выборки –

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

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

оценки эффективности обученной нейронной сети.

Как правило, используют следующую методику: из всей совокупности данных

случайным образом выбирают около 90% векторов для обучения, а на оставшихся

10% тестируют сеть. Однако, в условиях малого количества примеров эта

процедура становится неэффективной с точки зрения оценивания вероятности

ошибки классификации. В разделе 4.4 был описан другой, наиболее точный

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

экзамена (синонимы: cross-validation, “plug-in”-метод).[7,9].

В терминах нейронных сетей основную идею метода можно выразить так:

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

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

предъявляется этот выбранный вектор и проверяется правильно сеть распознала

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

выборку. Затем выбирается другой вектор, на оставшихся сеть вновь

обучается, и этот новый вектор тестируется. Так повторяется ровно n1+n2

раз, где n1–количество векторов первого класса, а n2 - второго.

По завершению алгоритма общая вероятность ошибки P подсчитывается

следующим образом:

[pic], где

N= n1+n2 - общее число примеров;

E– число ошибочных векторов (сеть неправильно распознала предъявляемый

пример).

Недостатком этого метода являются большие вычислительные затраты,

связанные с необходимость много раз проводить процедуру настройки весовых

коэффициентов, а в следствии этого и большое количество времени, требуемое

для вычисления величины [pic].

Однако в случае с малым количеством данных для определения

эффективности обученной нейронной сети рекомендуется применять именно метод

скользящего экзамена или некоторые его вариации. Стоит отметить, что

эффективность статистических методов классификации сейсмических сигналов

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

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

экспериментов с возможностями стандартных методов.

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

При выборе программного обеспечения для решения определенной задачи с

помощью нейронных сетей возможны два подхода: использование готовых решений

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

программы.

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

детальное изучение работы алгоритма. Однако, хорошие пакеты, в которых

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

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

это сильно ограничивает их применение. Еще одним недостатком является то,

что несмотря на свою универсальность, коммерческие пакеты не реализовывают

абсолютно все возможности моделирования и настройки нейронных сетей, и не

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

Если же возникает необходимость построить нейросетевое решение,

адаптированное под определенную задачу, и реализованное в виде отдельного

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

Именно такие требования и были выдвинуты на начальном этапе

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

предназначенную для классификации сейсмических данных при помощи

нейросетевых технологий, а также работающую под операционной системой Unix

(Linux и Sun Solaris SystemV 4.2). В результате была разработана программа,

реализующая основные идеи нейроинформатики, изложенные в разделе 6.

Следует отметить, что базовый алгоритм программы был выполнен под

системой Windows 95, а лишь затем оптимизирован под Unix по той причине,

что предложенная операционная система используется в узких научных и

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

программы требуется много времени.

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

возможности языка программирования С.

7.1 Функциональные возможности программы.

В программе “nvclass.с” – (нейро-классификатор векторов данных)

реализована модель двухслойного персептрона, представленная в разделе 6.

Эта программа предназначена для соотнесения тестируемого вектора признаков

сейсмической информации к одному из двух классов. Входные данные

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

также тестируемый вектор признаков, соответствующий сейсмическому событию,

не включенному в предысторию. Эти данные считываются из соответствующих

файлов в виде набора векторов признаков заданной размерности.

Автоматически, в зависимости от размерности входных векторов, определяется

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

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

предварительных экспериментов) число нейронов в входном и скрытом слоях,

хотя при желании эти параметры легко меняются.

В качестве правила обучения нейронной сети реализован алгоритм

обратного распространения ошибки и некоторые методы его оптимизации. После

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

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

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

Для дополнительной настройки нейронной сети в программе реализован ряд

процедур, описанных в разделе 6. Из них можно выделить следующие:

. Различные процедуры начальной инициализации весовых коэффициентов;

. Пакетный режим обучения;

. Алгоритм коррекции шага обучения;

. Процедуры предварительной обработки данных;

. Алгоритм оценки эффективности – cross-validation.

. Процедура многократного обучения.

Последняя процедура (многократное обучение сети) предусмотрена для

устранения возможных ошибок идентификации. Для нейронной сети заданное

число раз (Cycle) генерируются матрицы начальных весовых коэффициентов и

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

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

наибольшего повторения и итоговое решение принимается исходя из него. Для

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

нечетным.

В программе “nvclass” предусмотрены следующие режимы функционирования:

. «Внешний» режим – идентификации тестового входного вектора признаков;

. «Внутренний» режим – идентификация вектора признаков из набора векторов

предыстории.

«Внешний» режим предназначен для классификации вновь поступивших

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

. Классификация на нейронных сетях, уже обученных на данных из конкретных

регионов регионов,

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

«Внутренний» режим служит для оценки вероятности ошибки идентификации

сети и включает два подрежима – проверки правильности идентификации одного

из векторов набора предыстории и последовательной проверки всех заданных

векторов (“cross-validation”).

Режим работы программы устанавливается в файле настроек.

После завершения работы основные результаты записываются в

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

детального анализа. Пример файла приведен в приложении 4.

7.2 Общие сведения.

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

события включает следующие модули:

. Исходный код программы “nvclass.c” и “nvclass.h”;

. Файл с настройками режима работы программы “nvclass.inp”;

. Файл с обучающей выборкой векторов “vector.txt”;

. Файл с векторами для тестирования сети “vector.tst”;

. Файл, содержащий описание определенной конфигурации сети и весовые

коэффициенты этой уже обученной сети “nor18.net”.

. Файл автоматической компиляции “Makefile” (Только для версии под Unix).

. Файл отчета о результатах работы программы “Report.txt”.

2. В настоящий момент разработано две версии программы. Одна работает под

операционной системой Dos 6.2 и выше, а другая под Unix (Linux, Solaris

V4.2).

3. Необходимое средство компиляции:

. Для Dos (Windows) – любой компилятор Си. Например, Borland C++ 3.1 или

выше.

. Для Unix стандартный компилятор cc, входящий в состав базовой

комплектации любой операционной системы семейства Unix.

7.3 Описание входного файла с исходными данными.

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

файл, в котором хранится информация о размерности векторов, их количестве и

сами вектора данных. Файл должен иметь форму числовой матрицы. Каждая

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

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

признаков плюс два. Первый столбец содержит порядковый номер вектора в

общей совокупности данных (соответствует последовательности 1, 2,

3,...,NPATTERN), а в последнем столбце записаны значения указателя

классификатора: 1- для вектора из первого класса, 0 – для вектора из

второго класса. Все числовые параметры разделяются пробелами и записываются

в кодах ASCII. Пример файла приведен в приложении 2.

7.4 Описание файла настроек.

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

“nvclass.inp”. Пример файла приведен в приложении 3. Для настройки

используются следующие переменные:

TYPE - РЕЖИМ РАБОТЫ ПРОГРАММЫ

TYPE=1_1

Это значение соответствует внешнему режиму функционирования

программы без обучения нейронной сети, т.е. тестирование на заранее

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

1. NDATA –Размерность входных данных

2. TESTVECTOR – Имя файла с тестируемым вектором

3. NETWORKFILE – Имя файла с матрицами весов предварительно обученной

сети

TYPE=1_2

Это значение соответствует внешнему режиму функционирования

программы с обучением нейронной сети и тестированием на ней заданного

вектора. Необходимо задать следующие параметры:

1. NDATA –Размерность входных данных

2. NPATTERN –Количество векторов признаков

3. PATTERNFILE-Имя файла с набором векторов признаков

4. TESTVECTOR – Имя файла с тестируемым вектором;

5. RESNETFNAME- Имя выходного файла с матрицами весов обученной сети.

TYPE=2_1

Данное значение соответствует внутреннему режиму с проверкой

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

программы необходимо задать следующие параметры:

1. NDATA –Размерность входных данных

2. NPATTERN –Количество векторов признаков

3. PATTERNFILE -Имя файла с набором векторов признаков

4. NUMBERVECTOR -Номер тестового вектора признаков из заданной выборки

TYPE=2_2

При данном значении параметра программа будет функционировать во

внутреннем режиме с последовательной проверкой всех векторов

(“cross_validation”). Необходимо задать следующие параметры :

1. NDATA -Размерность входных данных

2. NPATTERN –Количество векторов признаков

3. PATTERNFILE -Имя файла с набором векторов признаков

NDATA РАЗМЕРНОСТЬ ВЕКТОРОВ ПРИЗНАКОВ

Задается размерность векторов признаков, или количество признаков

в каждом векторе наблюдений. Этой величине должны соответствовать все

входные данные в текущем сеансе работы программы.

NPATTERN КОЛИЧЕСТВО ВЕКТОРОВ ПРИЗНАКОВ

Этот числовой параметр характеризует объем обучающей выборки и

соответствует количеству строк во входном файле PATTERNFILE.

Страницы: 1, 2, 3, 4, 5


бесплатно рефераты
НОВОСТИ бесплатно рефераты
бесплатно рефераты
ВХОД бесплатно рефераты
Логин:
Пароль:
регистрация
забыли пароль?

бесплатно рефераты    
бесплатно рефераты
ТЕГИ бесплатно рефераты

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


Copyright © 2012 г.
При использовании материалов - ссылка на сайт обязательна.