Видео смотреть бесплатно
Смотреть сестра и брат видео
Официальный сайт ysaa 24/7/365
Смотреть видео бесплатно
|
||||||||||||
|
РефератыКибернетика (87)Классификация сейсмических сигналов на основе нейросетевых технологий
Размер: 366.71 KB
Скачан: 283 Добавлен: 25.09.2005 МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ ЭЛЕКТРОНИКИ И МАТЕМАТИКИ
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА К ДИПЛОМНОМУ ПРОЕКТУ На тему: _Классификация сейсмических сигналов на основе нейросетевых технологий.________________________________________________________ Допущен к защите____________________200___г. КОНСУЛЬТАНТЫ ПРОЕКТА: Зав. кафедрой________________________ МОСКВА Аннотация. В данном дипломе рассматривается задача классификации сейсмических сигналов по типу источника, т.е. определение по записанной сейсмограмме землетрясений или взрывов. Основная цель диплома состоит в исследовании возможности применения аппарата нейронных сетей для решения поставленной задачи, и сравнение эффективности такого решения со стандартными аналитическими методами. Оглавление. Аннотация 2 3.1 Выделение информационных признаков из сейсмограмм 18 3.2 Отбор наиболее информативных признаков для идентификации 19 3.3 Процедуры статистической идентификации 21 3.4 Оценка вероятности ошибочной классификации методом скользящего экзамена 22 4.1 Нейрон-классификатор 23 4.2 Многослойный персептрон 25 4.3 Сети Ворда 27 4.4 Сети Кохонена 27 4.5 Выводы по разделу 37 5.1 Максимизация энтропии как цель предобработки 31 5.2 Нормировка данных 32 5.3 Понижение размерности входных данных 34 5.3.1 Отбор наиболее информативных признаков 34 5.3.2 Сжатие информации. Анализ главных компонент 35 5.4 Выводы .по разделу 37 6.1 Структура нейросети 38 6.2 Исходные данные 40 6.3 Определение критерия качества системы и функционала его оптимизации 41 6.4 Выбор начальных весовых коэффициентов 41 6.5 Алгоритм обучения и методы его оптимизации 42 6.6 Формирование обучающей выборки и оценка эффективности обученной нейросетевой модели 48 7. Программная реализация 49 7.1 Функциональные возможности программы 50 7.2 Общие сведения 51 7.3 Описание входного файла с исходными данными 52 7.4 Описание файла настроек 52 7.5 Алгоритм работы программы 57 7.6 Эксплуатация программного продукта 58 7.7 Результат работы программы 58 1. Пример выборки сейсмограмм 64 2. Пример файла с векторами признаков 65 3. Файл с настройками программы 66 4. Пример файла отчета 67 5. Файл описания функций, типов переменных и используемых библиотек “nvclass.h” 68 6. Файл автоматической компиляции программы под ОС Unix -“Makefile” 73 7. Основной модуль - “nvclass.с” 74 Введение. Применение аппарата нейронных сетей для решения различных задач науки и техники обусловлено огромными потенциальными возможностями, этих технологий. Существуют задачи, решение которых просто невозможно аналитическими методами, а нейросети успешно с ними справляются. Даже в том случае, если можно найти решение при помощи уже изученных алгоритмов, нейронные сети порой позволяют сделать то же самое быстрее и более эффективно. В данном дипломе рассматривается задача, возникающая при сейсмическом мониторинге, –классификация сейсмических сигналов по типу источника, т.е. определение по записанной сейсмограмме землетрясений или взрывов. Несмотря на то, что для ее решения, в настоящее время успешно применяются методы статистического анализа, продолжается поиск более эффективных алгоритмов, которые бы позволили проводить классификацию точнее и с меньшими затратами. Основная цель дипломной работы – исследовать возможность применения нейронных сетей для идентификации типа сейсмического сигнала, выяснить, насколько данное решение будет эффективным в сравнении с уже используемыми методами. Первая глава посвящена описанию основных положений теории нейронных сетей, а также областям науки и техники, в которых эти технологии нашли широкое применение. Последующие два раздела предназначены формализовать на математическом уровне задачу классификации сейсмических сигналов и способе ее решения на основе статистических методов. Обзор различных архитектур нейронных сетей, предназначенных для решения задачи классификации, их основные положения, достоинства и недостатки, а также методы предварительной подготовки данных приведены в разделах 4 и 5. В шестой разделе говорится непосредственно о нейросетевом решении рассматриваемой задачи, построенном на основе известной, и часто используемой парадигмы – многослойного персептрона, детально обсуждаются основные алгоритмы обучения, выбора начальных весовых коэффициентов и методы оценки эффективности выбранной модели нейронной сети. В разделе “Программная реализация ” описывается специально разработанная программа, реализующая основные идеи нейросетевого программирования и адаптированная для решения поставленной задачи. Также в этом разделе представлены результаты экспериментов по обработке сейсмических сигналов, проведенных на базе созданной программы. И в заключении изложены основные выводы и рекомендации по направлению дальнейших исследований в применении нейронных сетей для решения задачи классификации сейсмических сигналов. 1. Основные положения теории нейронных сетей. Для того, чтобы обсуждать возможности нейросетевых технологий необходимо хотя бы немного иметь представление об элементарных понятиях, о том, что же такое нейрон, нейронная сеть, из чего она состоит и какие процессы в ней происходят. В нейроинформатике для описания алгоритмов и устройств выработана специальная «схемотехника», в которой элементарные устройства – сумматоры, синапсы, нейроны и т.п. объединяются в сети, предназначенные для решения задач. Это своего рода особенный язык для представления нейронных сетей и их обсуждения. При программной и аппаратной реализации на этом языке описания переводятся на языки другого уровня, более пригодные для реализации. Элементы нейронных сетей. Самыми простыми, базовыми элементами нейросетей являются: Элементы нейрона - умножители (синапсы), сумматор и нелинейный преобразователь. Синапсы осуществляют связь между нейронами, умножают входной сигнал на число, характеризующее силу связи, - вес синапса. Сумматор выполняет сложение сигналов, поступающих по синоптическим связям от других нейронов, и внешних входных сигналов. Нелинейный преобразователь реализует нелинейную функцию одного аргумента - выхода сумматора. Эта функция называется "функция активации" или "передаточная функция" нейрона. Нейрон в целом реализует скалярную функцию векторного аргумента. Математическая модель нейрона: [pic] (1) [pic] (2) где wi - вес синапса (weight), (i=0,1,2...p); w0 - значение смещения (bias); s - результат суммирования (sum); xi - компонента входного вектора (входной сигнал), (i=1,2,...p); y - выходной сигнал нейрона; p- число входов нейрона; f - нелинейное преобразование (функция активации). В общем случае входной сигнал, весовые коэффициенты и значения смещения могут принимать действительные значения. Выход (y) определяется видом функции активации и может быть как действительным, так и целым. Во многих практических задачах входы, веса и смещения могут принимать лишь некоторые фиксированные значения. Синаптические связи с положительными весами называют возбуждающими, с отрицательными весами - тормозящими. Таким образом, нейрон полностью описывается своими весами wi и передаточной функцией f(x). Получив набор чисел (вектор) xk в качестве входов, нейрон выдает некоторое число y на выходе. Эта модель была предложена Маккалоком и Питтсом еще в 1943 г. При этом использовались пороговые передаточные функции (рис. 2a), и правила формирования выходного сигнала y выглядели особенно просто: [pic] (3) В 1960 г. на основе таких нейронов Розенблатт построил первый в мире автомат для распознавания изображений букв, который был назван “перcептрон” [pic] (4) Нейронная сеть. Нейронная сеть — это набор нейронов, определенным образом связанных между собой. Как правило, передаточные функции всех нейронов в сети фиксированы, а веса являются параметрами сети и могут изменяться. Одними из наиболее распространенных являются многослойные сети, в которых нейроны объединены в слои. Слой - это совокупность нейронов c единым входным сигналом. В качестве основного примера рассмотрим сеть, которая достаточно проста по структуре и в то же время широко используется для решения прикладных задач — двухслойный персептрон с p входами и одним выходом (рис. 2.3). Как следует из названия, эта сеть состоит из двух слоев. Собственно нейроны располагаются в первом (скрытом) и во втором (выходном) слое. Итак, подавая на входы персептрона любые числа x1, x2, ..., xp, мы получим на выходе значение некоторой функции F(x1, x2, ..., xp), которое является ответом (реакцией) сети. Очевидно, что ответ сети зависит как от входного сигнала, так и от значений ее весовых коэффициентов. Выпишем точный вид этой функции [pic] (5) Кроме многослойных нейронных сетей существуют и другие разновидности, каждая из которых разработаны и применяются для решения конкретных задач. Разобравшись с тем, из чего состоят нейронные сети, и как они функционируют, перейдем к вопросу "как создать сеть, адаптированную для решения поставленной задачи?". Этот вопрос решается в два этапа: (рис. 1.4) На первом этапе следует выбрать следующее: . каким образом следует соединить их между собой; Эта задача на первый взгляд кажется необозримой, но, к счастью, необязательно придумывать нейросеть "с нуля" - существует несколько десятков различных нейросетевых архитектур, причем эффективность многих из них доказана математически. Наиболее популярные и изученные архитектуры - это многослойный персептрон, нейросеть с общей регрессией, сети Кохонена и другие. На втором этапе следует "обучить" выбранную сеть, то есть подобрать такие значения ее весов, чтобы сеть работала нужным образом. Необученная сеть подобна ребенку - ее можно научить чему угодно. В используемых на практике нейросетях количество весов может составлять несколько десятков тысяч, поэтому обучение - действительно сложный процесс. Для многих архитектур разработаны специальные алгоритмы обучения, которые позволяют настроить веса сети определенным образом. Обучение нейросети. Обучить нейросеть - значит, сообщить ей, чего мы от нее добиваемся. При обучении сети мы действуем совершенно аналогично. Пусть у нас имеется некоторая база данных, содержащая примеры из разных классов, которые необходимо научиться распознавать (набор рукописных изображений букв). Предъявляя изображение буквы "А" на вход сети, мы получаем от нее некоторый ответ, не обязательно верный. Нам известен и верный (желаемый) ответ - в данном случае нам хотелось бы, чтобы на выходе с меткой "А" уровень сигнала был максимален. Обычно в качестве желаемого выхода в задаче классификации берут набор (1,0,0,...), где 1 стоит на выходе с меткой "А", а 0 - на всех остальных выходах. Вычисляя разность между желаемым ответом и реальным ответом сети, мы получаем 33 числа - вектор ошибки. Далее применяя различные алгоритмы по вектору ошибки вычисляем требуемые поправки для весов сети. Одну и ту же букву (а также различные изображения одной и той же буквы) мы можем предъявлять сети много раз. В этом смысле обучение скорее напоминает повторение упражнений в спорте - тренировку. Оказывается, что после многократного предъявления примеров веса сети стабилизируются, причем сеть дает правильные ответы на все (или почти все) примеры из базы данных. В таком случае говорят, что "сеть выучила все примеры", " сеть обучена", или "сеть натренирована". В программных реализациях можно видеть, что в процессе обучения величина ошибки (сумма квадратов ошибок по всем выходам) постепенно уменьшается. Когда величина ошибки достигает нуля или приемлемого малого уровня, тренировку останавливают, а полученную сеть считают натренированной и готовой к применению на новых данных. Схематично процесс обучения представлен на рис Важно отметить, что вся информация, которую сеть имеет о задаче, содержится в наборе примеров. Поэтому качество обучения сети напрямую зависит от количества примеров в обучающей выборке, а также от того, насколько полно эти примеры описывают данную задачу. Так, например, бессмысленно использовать сеть для распознавания буквы “A”, если в обучающей выборке она не была представлена. Считается, что для полноценной тренировки требуется хотя бы несколько десятков (а лучше сотен) примеров. После того, как сеть обучена, ее можно применять ее для решения поставленной задачи (рис 1.4). Важнейшая особенность человеческого мозга состоит в том, что, однажды обучившись определенному процессу, он может верно действовать и в тех ситуациях, в которых он не бывал в процессе обучения. Например, можно читать почти любой почерк, даже если видим его первый раз в жизни. Так же и нейросеть, грамотным образом обученная, может с большой вероятностью правильно реагировать на новые, не предъявленные ей ранее данные. Например, мы можем нарисовать букву "А" другим почерком, а затем предложить нашей сети классифицировать новое изображение. Веса обученной сети хранят достаточно много информации о сходстве и различиях букв, поэтому можно рассчитывать на правильный ответ и для нового варианта изображения Примеры практического применения нейронных сетей. В качестве примеров рассмотрим наиболее известные классы задач, для решения которых в настоящее время широко применяются нейросетевые технологии. Прогнозирование. Прогноз будущих значений переменной, зависящей от времени, на основе предыдущих значений ее и/или других переменных. В финансовой области, это Распознавание или классификация. Определение, к какому из заранее известных классов принадлежит тестируемый объект. Следует отметить, что задачи классификации очень плохо алгоритмизируются. Если в случае распознавания букв верный ответ очевиден для нас заранее, то в более сложных практических задачах обученная нейросеть выступает как эксперт, обладающий большим опытом и способный дать ответ на трудный вопрос. Примером такой задачи служит медицинская диагностика, где сеть может учитывать большое количество числовых параметров (энцефалограмма, давление, вес и т.д.). Классификация предприятий по степени их перспективности (рис 1.8) - это уже привычный способ использования нейросетей в практике крупных компаний. При этом сеть также использует множество экономических показателей, сложным образом связанных между собой.
Помимо задач классификации, нейросети широко используются для поиска зависимостей в данных и кластеризации. Например, нейросеть на основе методики МГУА (метод группового учета аргументов) позволяет на основе обучающей выборки построить зависимость одного параметра от других в виде полинома (рис. 1.9). Такая сеть может не только мгновенно выучить таблицу умножения, но и найти сложные скрытые зависимости в данных (например, финансовых), которые не обнаруживаются стандартными статистическими методами. Кластеризация - это разбиение набора примеров на несколько компактных областей (кластеров), причем число кластеров заранее неизвестно (рис. Несмотря на большие возможности, существует ряд недостатков, которые все же ограничивают применение нейросетевых технологий. Во-первых, нейронные сети позволяют найти только субоптимальное решение, и соответственно они неприменимы для задач, в которых требуется высокая точность. Функционируя по принципу черного ящика, они также неприменимы в случае, когда необходимо объяснить причину принятия решения. Обученная нейросеть выдает ответ за доли секунд, однако относительно высокая вычислительная стоимость процесса обучения как по времени, так и по объему занимаемой памяти также существенно ограничивает возможности их использования. И все же класс задач, для решения которых эти ограничения не критичны, достаточно широк. 2. Постановка задачи классификации сейсмических сигналов. Международная система мониторинга (МСМ), сформировавшаяся в мире за последние десятилетия, предназначена для наблюдения за сейсмически активными регионами. Основная часть информации фиксируется на одиночных сейсмических станциях. Дальнейшая обработка этой информации позволяет оценить различные физические параметры, характеризующие записанное событие. Для решения этой задачи в настоящее время применяются различные аналитические методы из теории статистического анализа, позволяющие с высокой вероятностью правильно классифицировать данные. Как правило, для конкретного региона существует своя база данных записанных событий. Она включает в себя пример сейсмограмм характеризующих как землетрясения, так и взрывы произошедшие в этом регионе с момента начала наблюдения. Все существующие методы идентификации используют эту базу данных в качестве обучающего множества, тем самым, улавливая тонкие различия характерные для данного региона, методы, настраивают определенным образом свои параметры и в итоге учатся классифицировать все обучающее множество на принадлежность к одному из двух классов. Один из наиболее точных методов основан на выделении дискриминантных признаков из сейсмограмм и последующей классификации векторов признаков с помощью статистических решающих правил. Размерность таких векторов соответствует количеству признаков, используемых для идентификации и, как правило, не превышает нескольких десятков. Математическая постановка в этом случае формулируется как задача разделения по обучающей выборке двух классов и ставится так: имеется два набора векторов (каждый вектор размерности N): X1,…,Xp1 и Y1,…Yp2. Заранее известно, что Xi (i=1,…,p1) относится к первому классу, а Yj (j=1,…,p2) - ко второму. Требуется построить решающее правило, т.е. определить такую функцию f, что при f(x) > 0 вектор x относился бы к первому классу, а при f(x) 3. Статистическая методика решения задачи классификации. В данном разделе рассматривается методика определения типов сейсмических событий, основанная на выделении дискриминантных признаков из сейсмограмм и последующей классификации векторов признаков с помощью статистических решающих правил.[8] Исходные данные представлены в виде сейсмограмм (рис. 3.1) – это временное отображение колебаний земной поверхности. В таком виде анализировать информацию, оценивать различные физические характеристики зафиксированного события достаточно трудно. Существуют различные методы, специально предназначенные для обработки сигналов, которые позволяют выделять определенные признаки, и, в дальнейшем, по ним производить анализ записанного события. Как правило, в большинстве из этих методов на начальном этапе выполняется следующий набор операций: Далее, применяются различные алгоритмы для формирования определенного признака. В частности, можно легко найти максимальную амплитуду колебания сигнала, характеристику определяемую выражением max{peakMax – peakMin}. Применяя другие алгоритмы, можно построить большое количество таких признаков. Однако, для задачи идентификации типа сейсмического события, важными являются далеко не все. Из наиболее информативных можно выделить такие признаки, как отношение амплитуд S и P волн, или доля мощности S фазы на высоких (низких) частотах по отношению к мощности S фазы во всей полосе частот. Как правило, максимальное количество признаков, которое используется для этой задачи составляет около 25 – 30. 3.2 Отбор наиболее информативных признаков для идентификации. Как было показано выше, в сейсмограмме анализируемого события можно выделить достаточно много различных характеристик, однако, далеко не все из них могут действительно нести информацию, существенную для надежной идентификации взрывов и землетрясений. Многочисленные исследования в дискримининтном анализе показали, что выделение малого числа наиболее информативных признаков исключительно важно для эффективной классификации. Ниже представлена процедура отбора наиболее информативных дискриминантных признаков, осуществляемая на основании обучающих реализаций землетрясений и взрывов из данного региона.[8] В начале каждый вектор xsj = (x(i)sj, i(1,p); где s(1,2 -номер класса D(k)= (m(k,1) - m(k,2))T S-1n1+n2 (k) (m(k,1) - m(k,2)), (6) где: m(k,1), m(k,2) k - мерные векторы выборочных средних, вычисленные по k- мерным векторам x1j(k) j(1,n1 и x2j(k) j(1,n2 первого и второго классов; S- На первом шаге процедуры отбора значения функционала D(1) вычисляются для каждого из p признаков. Максимум из этих p значений достигается на каком то из признаков, который таким образом отбирается как первый информативный. На втором шаге значения функционала D(2) вычисляются уже для векторов, состоящих из пар признаков. Первый элемент в каждой паре - это признак, отобранный на предыдущем шаге, второй элемент пары - один их оставшихся признаков. Таким образом получаются p-1 значения функционала Описанная процедура ранжирует порядок следования признаков в обучающих векторах так, чтобы обеспечить максимально возможную скорость возрастания расстояния Махаланобиса (6) с ростом номера признака. Для селекции множества наиболее информативных признаков на каждом шаге k=1,2,...,p описанной выше итерационной процедуры ранжирования признаков по информативности сохраняются номер j(k) в исходной таблице признаков и имя выбранного признака, также вычисляется теоретическое значение полной вероятности ошибки классификации P(k) по формуле Колмогорова-Деева [12]. P(k) = (1/2)[1 - Tk(D(k)/((k)) + Tk(-D(k)/ ((k))], где k - число используемых признаков (7) Tk(z) = F(z) + (1/(k-1) ) (a1 - a2H1(z) + a3H2(z) - a4H3(z)) f(z), F(z) - функция стандартного Гауссовского распределения вероятностей; f(z) - плотность этого распределения; Hi(z) - полином Эрмита степени i, i=1,2,3; aj, j=1,...,4 - некоторые коэффициенты, зависящие от k, n1, n2 и Квадратичная дискриминационная функция описывается следующей формулой 3.4 Оценка вероятности ошибочной классификации методом скользящего экзамена. Оценивание вероятности ошибочной идентификации типа событий Из теории распознавания образов известно, что наиболее точной и универсальной оценкой вероятности ошибок классификации является оценка, обеспечиваемая процедурой “скользящего экзамена”(“cross-validation”) [11]. В методе скользящего экзамена на каждом шаге один из обучающих векторов xsj , j(1,ns, s(1,2, исключается из обучающей выборки. Оставшиеся векторы используются для адаптации (обучения) LDF или QDF или любого другого дискриминатора. Исключенный вектор затем классифицируется с помощью дискриминатора, обученного без его участия. Если этот вектор классифицируется неправильно, т.е. относится к классу 2 вместо класса 1 или наоборот, соответствующие “счетчики” (12 или (21 увеличиваются на 1. Приступая к разработке нейросетевого решения, как правило, сталкиваешься с проблемой выбора оптимальной архитектуры нейронной сети. Рассмотрим ряд основных парадигм нейронных сетей, успешно применяемых для решения задачи классификации, одна из постановок которой представлена в данной дипломной работе. 4.1 Нейрон – классификатор. Простейшим устройством распознавания образов в нейроинформатике является одиночный нейрон (рис. 4.1), превращающий входной вектор признаков в скалярный ответ, зависящий от линейной комбинации входных переменных [1- Скалярный выход нейрона можно использовать в качестве т.н. дискриминантной функции. Этим термином называют индикатор принадлежности входного вектора к одному из заданных классов, а нейрон соответственно – линейным дискриминатором. Так, если входные вектора могут принадлежать одному из двух классов, можно различить тип входа, например, следующим образом: если f(x) ( 0, входной вектор принадлежит первому классу, в противном случае – второму. Рассмотрим алгоритм обучения подобной структуры, приняв f(x)(x. Итак, в p-мерном пространстве задана обучающая выборка x1,…,xn (первый класс) и y1,…,ym (второй класс). Требуется найти такие p+1-мерный вектор w, что для всех i=1,…,n и j=1,…,m w0+(xi,w)>0 и w0+(yj,w) 0. Если для данного l ( n+m оно выполнено, переходим к следующем l (либо при l=n+m заканчиваем цикл), если же не выполнено, то модифицируем w по правилу w=w+zl , или w=w+hTzl, где T – номер модификации, а [pic] , например. Когда за весь цикл нет ни одной ошибки ( т.е. модификации w), то решение w найдено, в случае же ошибок полагаем l=1 и снова проходим цикл. В некоторых простейших случаях линейный дискриминатор – наилучший из возможных, а именно когда оба класса можно точно разделить одной гиперплоскостью, рисунок 4.2 демонстрирует эту ситуацию для плоскости, когда p=2. 4.2 Многослойный персептрон. Возможности линейного дискриминатора весьма ограничены. Для решения более сложных классификационных задач необходимо усложнить сеть вводя дополнительные (скрытые) слои нейронов, производящих промежуточную предобработку входных данных, таким образом, чтобы выходной нейрон- классификатор получал на свои входы уже линейно-разделимые множества. Такие структуры носят название многослойные персептроны [1-4,7,10] (рис. 1.3). Легко показать, что, в принципе, всегда можно обойтись одним скрытым слоем, содержащим, достаточно большое число нейронов. Действительно, увеличение скрытого слоя повышает размерность пространства, в котором выходной нейрон производит классификацию, что, соответственно, облегчает его задачу. Персептроны весьма популярны в нейроинформатике. И это обусловлено, в первую очередь, широким кругом доступных им задач, в том числе и задач классификации, распознавания образов, фильтрации шумов, предсказание временных рядов, и т.д., причем применение именно этой архитектуры в ряде случаев вполне оправдано, с точки зрения эффективности решения задачи. Рассмотрим какие алгоритмы обучения многослойных сетей разработаны и применяются в настоящее время.[7,10]. В основном все алгоритмы можно разбить на две категории: К первой группе относятся те, которые основаны на вычислении производной функции ошибки и корректировке весов в соответствии со значением найденной производной. Каждый дальнейший шаг направлен в сторону антиградиента функции ошибки. Основу всех этих алгоритмов составляет хорошо известный алгоритм обратного распространения ошибки (back propagation error).[1-5,7,10]. [pic] ,где функция ошибки [pic] Многочисленные модификации, разработанные в последнее время, позволяют существенно повысить эффективность этого алгоритма. Из них наиболее известными являются: 1. Обучение с моментом.[4,7]. Идея метода заключается в добавлении к величине коррекции веса значения пропорционального величине предыдущего изменения этого же весового коэффициента. [pic] 2. Автономный градиентный алгоритм (Обучение с автоматическим изменением длины шага (). [10] 3. RPROP (от resilient –эластичный), в котором каждый вес имеет свой адаптивно настраиваемый темп обучения.[4] 4. Методы второго порядка, которые используют не только информацию о градиенте функции ошибки, но и информацию о вторых производных .[3,4,7]. Стохастические методы обучения выполняют псевдослучайные изменения величин весов, сохраняя те изменения, которые ведут к улучшениям характеристик сети. К этой группе алгоритмов относятся такие как 1. Алгоритм поиска в случайном направлении.[10] 2. Больцмановское обучение или (алгоритм имитации отжига). [1] 3. Обучение Коши, как дополнение к Больцмановскому обучению.[1] Основным недостатком этой группы алгоритмов является очень долгое время обучения, а соответственно и большие вычислительные затраты. Однако, как пишут в различных источниках, эти алгоритмы обеспечивают глобальную оптимизацию, в то время как градиентные методы в большинстве случаев позволяют найти только локальные минимумы функционала ошибки. Известны также алгоритмы, которые основаны на совместном использовании обратного распространения и обучения Коши. Коррекция весов в таком комбинированном алгоритме состоит из двух компонент: направленной компоненты, вычисляемой с использованием алгоритма обратного распространения, и случайной компоненты, определяемой распределением Коши. 4.3 Сети Ворда. Одним из вариантов многослойного персептрона являются нейронные сети 4.2 Сети Кохонена. Сети Кохонена – это одна из разновидностей нейронных сетей, для настройки которой используется алгоритм обучения без учителя. Задачей нейросети Кохонена является построение отображения набора входных векторов высокой размерности на карту кластеров меньшей размерности , причем таким образом, что близким кластерам на карте отвечают близкие друг к другу входные векторы в исходном пространстве. Сеть состоит из M нейронов, образующих, как правило одномерную или двумерную карту (рис. 4.2). Элементы входных сигналов {xi} подаются на входы всех нейронов сети. В процессе функционирования (самоорганизации) на выходе слоя Кохонена формируются кластеры (группа активных нейронов определённой размерности, выход которых отличен от нуля), характеризующие определённые категории входных векторов (группы входных векторов, соответствующие одной входной ситуации). [9] Алгоритм Кохонена формирования карт признаков. [pic] где xi - i-ый элемент входного сигнала, wki - вес связи от i-го элемента входного сигнала к нейрону k. [pic] [pic] ((t)=((0)(1-t/tmax) ((t)=((0)(1-t/tmax) Благодаря своим способностям к обобщению информации, карты Кохонена являются удобным инструментом для наглядного представления о структуре данных в многомерном входном пространстве, геометрию которого представить практически невозможно. Еще одна группа технических применений связана с предобработкой данных. Второй уровень нейросети используется для кодирования информации. [pic] где Таким образом после предварительного обучения и формирования кластеров в слое Кохонена, на фазе вторичного обучения все нейроны каждого полученного кластера соединяются активными (единичными) синапсами со своим выходным нейроном, характеризующим данный кластер. Выход нейронов второго слоя определяется выражением: (11) [pic] где: [pic] Пороговое значение R можно выбрать таким образом, чтобы с одной стороны не были потеряны значения активированных кластеров, а с другой стороны - отсекался "шум не активизированных кластеров". В результате на каждом шаге обработки исходных данных на выходе получаются значения Sj, которые характеризуют явление, породившее данную входную ситуацию ([pic] - землетрясение; [pic] - взрыв). 4.5 Выводы по разделу. Итак, подводя итог данной главе, следует сказать, что это далеко не полный обзор нейросетевых архитектур, которые успешно справляются с задачами классификации. В частности ничего не было сказано о вероятностных нейронных сетях, о сетях с базисно радиальными функциями, о использовании генетических алгоритмов для настройки многослойных сетей и о других, пусть менее известных, но хорошо себя зарекомендовавших. Соответственно проблема выбора наиболее оптимальной архитектуры для решения задачи классификации сейсмических сигналов вполне актуальна. В идеале, конечно хотелось бы проверить эффективность хотя бы нескольких из них и выбрать наилучшую. Но для этого необходимо проводить более масштабные исследования, которые займут много времени. На данном этапе исследований была сделана попытка использовать хорошо изученные нейронные сети и алгоритмы обучения для того, чтобы убедиться в эффективности подхода в целом. В главе 6 детально обсуждаются нейросеть, которая была исследована в рамках настоящей дипломной работы. 5. Методы предварительной обработки данных. Если возникает необходимость использовать нейросетевые методы для решения конкретных задач, то первое с чем приходится сталкиваться – это подготовка данных. Как правило, при описании различных нейроархитектур, по умолчанию предполагают что данные для обучения уже имеются и представлены в виде, доступном для нейросети. На практике же именно этап предобработки может стать наиболее трудоемким элементом нейросетевого анализа. Успех обучения нейросети также может решающим образом зависеть от того, в каком виде представлена информация для ее обучения. В этой главе рассматриваются различные процедуры нормировки и методы понижения размерности исходных данных, позволяющие увеличить информативность обучающей выборки. 5.1 Максимизация энтропии как цель предобработки. Рассмотрим основной руководящий принцип, общий для всех этапов предобработки данных. Допустим, что в исходные данные представлены в числовой форме и после соответствующей нормировки все входные и выходные переменные отображаются в единичном кубе. Задача нейросетевого моделирования – найти статистически достоверные зависимости между входными и выходными переменными. Единственным источником информации для статистического моделирования являются примеры из обучающей выборки. Чем больше бит информации принесет пример – тем лучше используются имеющиеся в нашем распоряжении данные. Рассмотрим произвольную компоненту нормированных (предобработанных) данных: [pic]. Среднее количество информации, приносимой каждым примером Общий принцип предобработки данных для обучения, таким образом состоит в максимизации энтропии входов и выходов. 5.2 Нормировка данных. Как входами, так и выходами могут быть совершенно разнородные величины. Индивидуальная нормировка данных. Приведение к единому масштабу обеспечивается нормировкой каждой переменной на диапазон разброса ее значений. В простейшем варианте это – линейное преобразование: [pic] в единичный отрезок: [pic]. Обобщение для отображения данных в интервал Линейная нормировка оптимальна, когда значения переменной [pic] плотно заполняют определенный интервал. Но подобный «прямолинейный» подход применим далеко не всегда. Так, если в данных имеются относительно редкие выбросы, намного превышающие типичный разброс, именно эти выбросы определят согласно предыдущей формуле масштаб нормировки. Это приведет к тому, что основная масса значений нормированной переменной [pic] сосредоточится вблизи нуля [pic] Гораздо надежнее, поэтому, ориентироваться при нормировке не а экстремальные значения, а на типичные, т.е. статистические характеристики данных, такие как среднее и дисперсия. [pic], где [pic], [pic] В этом случае основная масса данных будет иметь единичный масштаб, т.е. типичные значения все переменных будут сравнимы (рис. 6.1) Однако, теперь нормированные величины не принадлежат гарантированно единичному интервалу, более того, максимальный разброс значений [pic] заранее не известен. Для входных данных это может быть и не важно, но выходные переменные будут использоваться в качестве эталонов для выходных нейронов. В случае, если выходные нейроны – сигмоидные, они могут принимать значения лишь в единичном диапазоне. Чтобы установить соответствие между обучающей выборкой и нейросетью в этом случае необходимо ограничить диапазон изменения переменных. Линейное преобразование, представленное выше, не способно отнормировать основную массу данных и одновременно ограничить диапазон возможных значений этих данных. Естественный выход из этой ситуации – использовать для предобработки данных функцию активации тех же нейронов. Например, нелинейное преобразование [pic], [pic] нормирует основную массу данных одновременно гарантируя что[pic] (рис. 5.2) Как видно из приведенного выше рисунка, распределение значений после такого нелинейного преобразования гораздо ближе к равномерному. Все выше перечисленные методы нормировки направлены на то, чтобы максимизировать энтропию каждого входа (выхода) по отдельности. Но, вообще говоря, можно добиться гораздо большего максимизируя их совместную энтропию. Существуют методы, позволяющие проводить нормировку для всей совокупности входов, описание некоторых из них приведено в [4]. 6.3 Понижение размерности входов. Поскольку заранее неизвестно насколько полезны те или иные входные переменные для предсказания значений выходов, возникает соблазн увеличивать число входных параметров, в надежде на то, что сеть сама определит, какие из них наиболее значимы. Однако чаще всего это не приводит к ожидаемым результатам, а к тому же еще и увеличивает сложность обучения. Напротив, сжатие данных, уменьшение степени их избыточности, использующее существующие в них закономерности, может существенно облегчить последующую работу, выделяя действительно независимые признаки. Можно выделить два типа алгоритмов, предназначенных для понижения размерности данных с минимальной потерей информации: . Отбор наиболее информативных признаков и использование их в процессе обучения нейронной сети; . Кодирование исходных данных меньшим числом переменных, но при этом содержащих по возможности всю информацию, заложенную в исходных данных. Рассмотрим более подробно оба типа алгоритмов.
Для того, чтобы понять какие из входных переменных несут максимум информации, а какими можно пренебречь необходимо либо сравнить все признаки между собой и определить степень информативности каждого из них, либо пытаться найти определенные комбинации признаков, которые наиболее полно отражают основные характеристики исходных данных. В разделе 3.2 был описан алгоритм, позволяющий упорядочить все признаки по мере убывания их значимости. Однако накладываемые ограничения не позволяют применять его для более распространенных задач. Для выбора подходящей комбинации входных переменных используется так называемые генетические алгоритмы [5], которые хорошо приспособлены для задач такого типа, поскольку позволяют производить поиск среди большого числа комбинаций при наличии внутренних зависимостей в переменных. 5.3.2 Сжатие информации. Анализ главных компонент. Самый распространенный метод понижения размерности - это анализ главных компонент (АГК). Традиционная реализация этого метода представлена в теории линейной алгебры. Основная идея заключается в следующем: к данным применяется линейное преобразование, при котором направлениям новых координатных осей соответствуют направления наибольшего разброса исходных данных. Для эти целей определяются попарно ортогональные направления максимальной вариации исходных данных, после чего данные проектируются на пространство меньшей размерности, порожденное компонентами с наибольшей вариацией [4]. Один из недостатков классического метода главных компонент состоит в том, что это чисто линейный метод, и соответственно он может не учитывать некоторые важные характеристики структуры данных. В теории нейронных сетей разработаны более мощные алгоритмы, осуществляющие “нелинейный анализ главных компонент”[3]. Они представляют собой самостоятельную нейросетевую структуру, которую обучают выдавать в качестве выходов свои собственные входные данные, но при этом в ее промежуточном слое содержится меньше нейронов, чем во входном и выходном слоях. (рис 5.3). Сети подобного рода носят название – автоассоциативные сети. Чтобы восстановить свои входные данные, сеть должна научиться представлять их в более низкой размерности. Базовый алгоритм обучения в этом случае носит название правило обучения Ойя для однослойной сети. [pic], где [pic] [pic],и [pic] [pic], . - коэффициент обучения; wij=wkj - веса сети , соответственно между входным – скрытым и скрытым – выходным слоями. Скрытый слой такой сети осуществляет оптимальное кодирование входных данных, и содержит максимально возможное при данных ограничениях количество информации. После обучения внешний интерфейс (wij) (рис.5.4) может быть сохранен и использован для понижения размерности. Нелинейный анализ главных компонент. Главное преимущество нейроалгоритмов в том, что они легко обобщаются на случай нелинейного сжатия информации, когда никаких явных решений уже не существует. Можно заменить линейные нейроны в описанных выше сетях – нелинейными. С минимальными видоизменениями нейроалгоритмы будут работать и в этом случае, всегда находя оптимальное сжатие информации при наложенных ограничениях. Например, простая замена линейной функции активации нейронов на сигмоидную в правиле обучения Ойя: [pic] приводит к новому качеству. Таким образом, нейроалгоритмы представляют собой удобный инструмент нелинейного анализа, позволяющий относительно легко находить способы глубокого сжатия информации и выделения нетривиальных признаков.
Конечно, описанными выше методиками не исчерпывается все разнообразие подходов к ключевой для нейро-анализа проблеме формирования пространства признаков. Например, существуют различные методики, расширяющие анализ главных компонент. Также, большего внимания заслуживают генетические алгоритмы. Необъятного не объять. Главное, чтобы за деталями не терялся основополагающий принцип предобработки данных: снижение существующей избыточности всеми возможными способами. Это повышает информативность примеров и, тем самым, качество нейропредсказаний. 6. Реализация нейросетевой модели и исследование ее технических характеристик. Ранее было показано, какими средствами нейроинформатики можно пытаться решить задачу идентификации типа сейсмического источника, какие процедуры целесообразно применять при предварительной подготовке данных, был приведен небольшой обзор различных алгоритмов обучения известных нейроархитектур. В этой главе представлено решение задачи на базе двухслойного персептрона, так как именно он был выбран на начальном этапе исследований. Дано также описание алгоритма обучения и методов его оптимизации. 6.1 Структура нейронной сети. Итак, для решения задачи идентификации типа сейсмического события предлагается использовать одну из самых универсальных нейроархитектур – многослойный персептрон, а точнее его двухслойную реализацию (рис. 6.1). На вход сети подается p-мерный вектор признаков {xi, i=1,2,…,p}. Для определенности будем рассматривать случай, когда p=9, хотя исследования проводились и для p=5, p=18. Оптимальное количество нейронов на скрытом слое H подбиралось экспериментально для разных p. Соответственно при p = 9 достаточно брать H равным также 9 или немного больше. Для разбиения исходных данных на два класса на выходе сети достаточно одного нейрона. [pic] y – значение выходного нейрона сети (выход сети) [pic] (12) f1(x) –функция активации нейронов скрытого слоя; f2(x) –функция активации нейрона выходного слоя. В качестве функции активации f1(x) для нейронов скрытого слоя и f2(x) для единственного нейрона на выходе сети предлагается использовать одну и ту же функцию, а именно сигмоидную функцию активации, для краткости будем обозначать ее как f(x): [pic], с производной в виде [pic]. Т.к. значения функции f(x) ограничены в диапазоне [0, 1], результат сети y(x) может принимать любые действительные значения из этого же диапазона, в следствии чего логично интерпретировать выходы сети следующим образом: если y(x) > 0.5, то вектор принадлежит к одному классу (взрывы), в противном случае к другому (землетрясения). На вход нейронной сети предлагается подавать вектора признаков составленные из сейсмограмм. О том, какие признаки были использованы для этой задачи и как они получены, было рассказано ранее в разделе 3.1. Стоит отметить, что проблема формирования векторов признаков – это исключительно проблема сейсмологии. Поэтому для исследования эффективности применения нейронных сетей в качестве исходных данных были использованы уже готовые выборки векторов, которые содержали в себе примеры и землетрясений и взрывов. Размерность векторов признаков p=9, хотя , как было отмечено в предыдущем разделе, проводились эксперименты и с другим количеством признаков. Для работы с нейросетью рекомендуется использовать исходные данные не в первоначальном виде, а после предварительной обработки при помощи процедуры индивидуальной нормировки по отдельному признаку, описанной в разделе 5.2. [pic] где xi – исходное значение вектора признаков, точнее его i-я компонента; xi,min – минимальное значение по i-му признаку, найденное из всей совокупности исходных данных, включающей оба класса событий; xi,max – максимальное значение по i-му признаку … Выбор именно этой нормировки, а не более универсальных, которые описаны в разделе 5, в настоящих исследованиях продиктованы тем обстоятельством, что непосредственно признаки измеренные по сейсмограммам, подвергаются последовательно двум нелинейным преобразованиям в соответствии с функциями y=Ln(x) и z=(1/7)(y1/7-1), и уже из этих значений формируются обучающие вектора. Такие преобразования приводят к большей кластеризации точек в многомерном пространстве, однако диапазон изменения каждого из признаков не нормирован относительно интервала [-1, 1], а выбранная нормировка позволяет без потери информации перенести все входные значения в нужный диапазон.
Если через [pic] обозначить желаемый выход сети (указание учителя), то ошибка системы для заданного входного сигнала (рассогласование реального и желаемого выходного сигнала) можно записать в следующем виде: [pic][pic], где k — номер обучающей пары в обучающей выборке, k=1,2,…,n1+n2 n1 - количество векторов первого класса; n2 - число векторов второго класса. В качестве функционала оптимизации будем использовать критерий минимума среднеквадратической функции ошибки: [pic] 6.4 Выбор начальных весовых коэффициентов. Перед тем, как приступить к обучению нейронной сети, необходимо задать ее начальное состояние. От того насколько удачно будут выбраны начальные значения весовых коэффициентов зависит, как долго сеть за счет обучения и подстройки будет искать их оптимальное величины и найдет ли она их. Как правило, всем весам на этом этапе присваиваются случайные величины равномерно распределенные в диапазоне [-A,A], например [-1,1], или [-3,3]. Шаг 1. Задать 12 случайных чисел x1, x2, …,x12 равномерно распределенных в диапазоне [0,1]. xi ( R[0,1]. Шаг 2. Для искомых параметров ( и ( величина [pic], полученная по формуле: [pic] будет принадлежать нормальному распределению с параметрами N[(,(]. [pic] Обе предложенные методики позволили на практике добиться лучших результатов, в сравнении со стандартным алгоритмом начальной инициализации весов. 6.5 Алгоритм обучения и методы его оптимизации. Приступая к обучению выбранной нейросетевой модели, необходимо было решить, какой из известных типов алгоритмов, градиентный (обратное распространения ошибки) или стохастический (Больцмановское обучение) использовать. В силу ряда субъективных причин был выбран именно первый подход, который и представлен в этом разделе. Обучение нейронных сетей как минимизация функции ошибки. Когда функционал ошибки нейронной сети задан (раздел 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] Непосредственно алгоритм обучения состоит из следующих шагов: Несмотря на универсальность, этот метод в ряде случаев становится малоэффективным. Для того, чтобы избежать вырожденных случаев, а также увеличить скорость сходимости функционала ошибки, разработано много модификаций стандартного алгоритма, в частности две из которых и предлагается использовать. Многостраничное обучение. С математической точки зрения обучение нейронных сетей (НС) – это многопараметрическая зад |
|
Смотреть видео онлайн
Онлайн видео бесплатно