Классификация сейсмических сигналов на основе нейросетевых технологий - Кибернетика - Скачать бесплатно
для контроля переобучения предусматривают
постепенное изменение структуры сети. Только в одном случае происходит
эффективное вымывание малых весов (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.
PATTERNFILE ИМЯ ФАЙЛА С НАБОРОМ ВЕКТОРОВ ПРИЗНАКОВ
Имя файла, содержащего наборы векторов признаков предыстории
сейсмических явлений региона с указателями классификатора.
TESTVECTOR ИМЯ ФАЙЛА С ТЕСТИРУЕМЫМ ВЕКТОРОМ ПРИЗНАКОВ.
Имя файла, содержащего вектор признаков, который необходимо
идентифицировать. Файл должен иметь форму строки (числа разделяются
пробелами). Количество признаков должно соответствовать переменной
NDATA.
NETWORKFILE ИМЯ ФАЙЛА С МАТРИЦАМИ ВЕСОВ ПРЕДВАРИТЕЛЬНО ОБУЧЕННОЙ СЕТИ.
В этом параметре задано имя файла, содержащего матрицы весов
предварительно обученной нейронной сети с фиксированной размерностью
входных данных. Файл формируется на предыдущих этапах работы
программы. Необходимо учитывать количество признаков NDATA (явно
указанных в имени файла, под которые проектировалась нейронная сеть
(NDATA соответствует количеству входов сети) и символьную
аббревиатуру региона, из которого получена сейсмическая информация.
RESNETFNAME ИМЯ ВЫХОДНОГО ФАЙЛА С МАТРИЦАМИ ВЕСОВ ОБУЧЕННОЙ СЕТИ
Имя файла, содержащего параметры спроектированной и обученной
нейронной сети в данном сеансе эксплуатации программы. В имени файла
обязательно следует указывать символьную абревиатуру региона, из
которого получена сейсмическая информация и размерность векторов
признаков NDATA обрабатываемой информации, чтобы избежать путаницы в
интерпретации разных моделей. (Например, norv18.net или isrl9.net).
NUMBERVECTOR ПОРЯДКОВЫЙ НОМЕР ВЕКТОРА ПРИЗНАКОВ
Этот параметр соответствует номеру вектора признаков (номеру
строки в первом столбце матрицы) из файла PATTERNFILE. Этот вектор
признаков с указателем классификатора в дальнейшем будет
интерпретироваться как тестовый вектор. Он удаляется из всего набора
, а оставшиеся NPATTERN-1 векторов будут использованы в качестве
обучающей выборки.
REPORTFNAME ИМЯ ФАЙЛА ОТЧЕТА
Имя файла с результатами работы программы.
InitWeigthFunc ФУНКЦИЯ ИНИЦИАЛИЗАЦИИ НАЧАЛЬНЫХ ВЕСОВЫХ КОЭФФИЦИЕНТОВ
СЕТИ.
InitWeigthFunc=Gauss
Начальные матрицы весовых коэффициентов будут выбраны как
нормально распределенные случайные величины с математическим
ожиданием Alfa и среднеквадратическом отклонении Sigma (
N[Alfa,Sigma]).
InitWeigthFunc=Random
Начальные матрицы весовых коэффициентов будут выбраны как
равномерно распределенные случайные величины в диапазоне [-
Constant,Constant].
(Значение по умолчанию – InitWeigthFunc= RandomDistribution[-3,3],
т.е. Constant=3)
Constant ДИАПАЗОН РАВНОМЕРНО РАСПРЕДЕЛЕННЫХ СЛУЧАЙНЫХ ВЕЛИЧИН
Смотри InitWeigthFunc …
Sigma СРЕДНЕКВАДРАТИЧЕСКОЕ ОТКЛОНЕНИЕ НОРМАЛЬНО РАСПРЕДЕЛЕН-НЫХ
СЛУЧАЙНЫХ ВЕЛИЧИН
Смотри InitWeigthFunc …
Alfa МАТЕМАТИЧЕСКОЕ ОЖИДАНИЕ НОРМАЛЬНО РАСПРЕДЕЛЕННЫХ СЛУЧАЙНЫХ
ВЕЛИЧИН
Смотри InitWeigthFunc …
WidrowInit NGUYEN-WIDROW ИНИЦИАЛИЗАЦИЯ .
Параметр позволяет сформировать начальные весовые коэффициенты по
методике предложенной Nguyen и Widrow. Возможные варианты: “Yes” –
провести соответствующую инициализацию. “No”- не использовать эту
процедуру.(Значение по умолчанию – “No”)
Shuffle ПЕРЕМЕШИВАНИЕ ВЕКТОРОВ ПРИЗНАКОВ
При значении параметра “Yes” – входные вектора будут
предварительно перемешаны. При “No” – вектора будут подаваться на
вход сети в той последовательности, в которой они расположены во
входном файле (PATTERNFILE). (Значение по умолчанию – “Yes”).
Scaling ПРЕДВАРИТЕЛЬНАЯ ОБРАБОТКА ВЕКТОРОВ ПРИЗНАКОВ.
Этот параметр служит для использования в рамках программы
“nvclass” процедуры масштабирования входных данных. Эта процедура
позволяет значительно ускорить процесс обучения нейронной сети, а
также качественно улучшает результаты тестирования. Возможные
значения параметра: “Yes”,”No”. (Значение по умолчанию – “Yes”).
LearnToleranse ТОЧНОСТЬ ОБУЧЕНИЯ.
Параметр определяющий качество обучения нейронной сети. При
достижении заданной точности ? для каждого вектора признаков из
обучающей выборки настройка весовых коэффициентов сети заканчивается
и сеть считается обученной. (Значение по умолчанию – 0.1).
Eta КОЭФФИЦИЕНТ ОБУЧЕНИЯ НЕЙРОННОЙ СЕТИ.
Значение коэффициента задает скорость и качество обучения
нейронной сети. Используется для алгоритма обратного распространения
ошибки. (Значение по умолчанию–1.0)
MaxLearnCycles МАКСИМАЛЬНОЕ КОЛИЧЕСТВО ИТЕРАЦИЙ ОБУЧЕНИЯ
Параметр задает количество итераций после которых процесс обучения
будет автоматически завершен. (Величина по умолчанию- 2000)
Loop КОЛИЧЕСТВО ПОВТОРОВ ОБУЧЕНИЯ.
Параметр задает величину полных циклов функционирования программы
(целое нечетное число). В каждом цикле формируются начальные матрицы
весов производится обучение сети и осуществляется классификация
тестового вектора. Результаты всех циклов обрабатываются, и
формируется итоговое заключение . (Значение по умолчанию=1).
7.5 Алгоритм работы программы.
Алгоритм работы программы зависит от режима, в котором она
функционирует. Однако, для всех из них можно выделить базовый набор
операций:
1. Инициализация сети;
2. Настройка;
3. Проверка тестовых векторов.
Инициализация
В этом разделе происходит считывание всех данных из соответствующих
файлов (файл с примерами обучающей выборки, файл с конфигурацией обученной
сети, файл с примерами для тестирования). Затем, в зависимости от режима
функционирования, либо происходит инициализация всех весовых коэффициентов
сети заданным образом, либо сразу начинается проверка тестовых векторов на
обученной заранее нейронной сети, конфигурация которой считана из файла.
Настройка.
Если выбранный режим предусматривает выполнение алгоритма обучения
нейронной сети, то программа, после считывания исходных данных, и начальной
инициализации весовых коэффициентов выполняет процедуру их настройки до тех
пор, пока не выполнится одно из условий остановки. Либо значение ошибки
обучения достигнет желаемого уровня и сеть будет считаться обученной, либо
количество итераций обучения превысит предварительно заданное максимальное
число. По мере выполнения алгоритма автоматически формируется полный отчет
о состоянии сети.
Проверка тестовых векторов.
На этом этапе происходит тестирование заданных векторов. Причем
возможны два варианта: тестируемый вектор может быть считан из файла, а
также можно задать номер тестируемого вектора в выборке исходных данных и
тогда он не будет использован во время обучения. Результаты проверки
записываются в файл отчета.
7.6 Эксплуатация программного продукта.
Перед тем, как приступить к эксплуатации программного продукта
рекомендуется ознакомиться с форматом данных, в котором должны быть
записаны исходная выборка векторов и с основными переменными файла настроек
программы.
Для корректной работы в дальнейшем желательно придерживаться
определенной последовательности действий:
1. Подготовить исходные данные согласно принятом формату.
2. Изменить в соответствии с требованиями определенные поля в файле
настроек.
3. Запустить программу.
4. Проанализировать результат, записанный в соответствующем файле.
7.7 Результат работы программы.
Для исследований возможностей разработанного программного обеспечения
были проведены различные эксперименты, основная цель которых - подобрать
значения параметров настройки программы, при которых итоговые результаты ее
работы содержали наименьшее количество ошибок идентификации. Методика, по
которой оценивалась ошибка классификации, основана на подходе “cross-
validation”.
Эксперименты проводились на данных, полученных из сейсмограмм,
записанных в Норвежской сейсмологической сети. В исходной выборке
насчитывалось 86 событий из разных классов, из них соответственно 50 –
землетрясений и 36 – взрывов. Исследования проводились для разного числа
признаков идентификации, а именно для 18 и 9 размерных векторов признаков.
Первая серия экспериментов была проведена на 18 размерных векторах.
Структура нейронной сети соответствовала <18,9,1>, где 18 – количество
нейронов во входном слое, 9- число нейронов на первом скрытом слое , 1-
размерность выхода сети. Увеличение нейронов на скрытом слое не приводило к
улучшению результатов, а при уменьшении возникали дополнительные ошибки, в
следствии чего такая структура предлагается в качестве оптимальной.
Далее представлены описание параметров настройки программы во входных
файлах и результаты тестирования.
В качестве начальной конфигурации использовались следующие значения
настраиваемых параметров в файле “nvclass.inp”:
TYPE=2_2
NDATA=18
NPATTERN=86
PatternFile=norv18.pat
NetStructure=[18,9,1]
WidrowInit=No
Shuffle=Yes
Scaling=Yes
Eta=0.7
MaxLearnCycles=1950
Loop=5
Результаты экспериментов отражают количество ошибок идентификации от
различных параметров настройки программы.
Для примера рассмотрим влияние процедуры начальной инициализации
весовых коэффициентов и точности обучения на ошибку классификации. На
рисунках 7.1 и 7.2 едставлены эти результаты.
Отметим, что более стабильные результаты получаются в случае
инициализации весов при помощи нормально распределенных величин. Можно
добиться всего лишь 4-5 ошибок из 86, что соответствует ошибке
идентификации равной 5-6 процентов.
Для 9 размерных векторов признаков была использована следующая
структура нейронной сети <9,5,1>, т.е. 5 нейронов на скрытом слое было
достаточно для получения хороших результатов.
В качестве примера приведем исследования аналогичные тем, которые
описаны выше.(Рис. 7.3, 7.4).
Последнюю диаграмму можно представить в виде.
Уже сейчас можно сделать вывод, что при использовании не всего набора
признаков идентификации, а некоторой части признаков результаты заметно
улучшаются. Причем для случая 9 –размерных признаков особую роль процедура
начальной инициализации не играет.
Представленные эксперименты не отражают полной картины о возможностях
применения нейронных сетей для идентификации типа сейсмического события, но
они экспериментально подтверждают эффективность нейросетевых технологий для
решения этой задачи.
8. Заключение
Проведенные исследования подтвердили эффективность применения
нейросетевых технологий для идентификации типа источника сейсмических
события. При определенных настройках нейронной сети можно добиться
результатов, когда вероятность правильного распознавания составляет 96.5%.
Ошибки возникают только на 3 векторах из 86. Если сравнивать полученные
результаты с теми, которые можно достичь при использовании стандартных
методов классификации, один из вариантов которых приведен в разделе 4, то
они практически повторяют друг друга. И статистика и нейронные сети
ошибаются одинаковое количество раз, причем на одних и тех же векторах. Из
86 событий статистические методы ошибаются на 3 векторах (1–землетрясение и
2-взрыва), и нейросетевой классификатор также ошибается именно на этих
векторах. Соответственно пока нельзя говорить о каком-то превосходстве
одного метода над другим.
Заметим, что в настоящих исследованиях были использованы довольно общие
и универсальные технологии нейроинформатики (многослойные сети применяются
для решения многих задач, но это не всегда самая оптимальная
нейроструктура), а применение более узких и специализированных нейронных
парадигм в некоторых случаях позволяет получать лучшие результаты. В
частности, при помощи нейропакетов на тех же данных были поставлены ряд
экспериментов над сетями Кохонена, описанными в разделе 5.4. Результаты
показали, что количество ошибок идентификации в большинстве случаев
составляет 3-4 вектора, т.е. практически совпадают с результатами,
полученными на многослойных сетях и классических методах.
Итак, подводя итог всему выше сказанному, выделим основные результаты
проведенных исследований:
1. Нейронные сети позволяют успешно решать проблему определения типа
источника сейсмического события.
2. Новое решение не уступает по эффективности традиционным методам,
использующимся в настоящее время для решения исследуемой задачи.
3. Возможны улучшения технических характеристик нейросетевого решения.
В качестве дальнейших исследований, направленных на повышение
эффективности нейросетевого решения, можно предложить следующие:
. Для многослойных сетей прямого распространения решить проблему начальной
инициализации весовых коэффициентов. Если
|