Термінова допомога студентам
Дипломи, курсові, реферати, контрольні...

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

РефератДопомога в написанніДізнатися вартістьмоєї роботи

Міжнародна система моніторингу (ЧСЧ), сформувалася світі за останні десятиліття, варта контролю над сейсмічно активними регіонами. Більшість інформації фіксується на одиночних сейсмічних станціях. Подальша обробка цієї інформації дозволяє оцінити різні фізичні параметри, що характеризують записане подія. Відповідно ніж информативнее записаний сигнал, тим більше коштів різноманітних параметрів… Читати ще >

Классификация сейсмічних сигналів з урахуванням нейромережних технологий (реферат, курсова, диплом, контрольна)

МОСКОВСЬКИЙ ДЕРЖАВНИЙ ІНСТИТУТ ЕЛЕКТРОНІКИ І МАТЕМАТИКИ.

Кафедра МОСОИиУ.

ПОЯСНЮВАЛЬНА ЗАПИСКА.

До ДИПЛОМНОМУ ПРОЕКТУ На тему: _Класифікація сейсмічних сигналів з урахуванням нейромережних технологій.________________________________________________________ Студент Керівник проекта:

Допущений до защите____________________200___г.

КОНСУЛЬТАНТИ ПРОЕКТУ: Спеціальна частина Конструкторсько-технологічна частина Економічна частина Техніка безопасности.

Зав. кафедрой________________________.

МОСКВА.

Аннотация.

У цьому дипломі розглядається завдання класифікації сейсмічних сигналів на кшталт джерела, тобто. визначення по записаній сейсмограмі землетрусів чи вибухів. Основна мета диплома полягає у дослідженні можливість застосування апарату нейронних мереж на вирішення поставленої завдання, і порівняння ефективності цього рішення зі стандартними аналітичними методами.

Аннотация 2 Запровадження 5 1. Основні становища теорії нейронних мереж 7 2. Постановка завдання класифікації сейсмічних сигналів 16 3. Статистична методика виконання завдання класифікації 18.

3.1 Виділення інформаційних ознак з сейсмограмм 18.

3.2 Відбір найбільш інформативних ознак для ідентифікації 19.

3.3 Процедури статистичної ідентифікації 21.

3.4 Оцінка ймовірності помилковою класифікації методом ковзаючого іспиту 22 4. Огляд різних архітектур нейронних мереж, виділені на завдань класифікації 23.

4.1 Нейрон-классификатор 23.

4.2 Багатошаровий персептрон 25.

4.3 Мережі Ворда 27.

4.4 Мережі Кохонена 27.

4.5 Висновки у розділі 37 5. Методи попередньої обробки даних 31.

5.1 Максимізація ентропії як мету предобработки 31.

5.2 Нормировка даних 32.

5.3 Зниження розмірності вхідних даних 34.

5.3.1 Відбір найбільш інформативних ознак 34.

5.3.2 Стиснення інформації. Аналіз головних компонент 35.

5.4 Висновки .у розділі 37 6. Реалізація нейросетевой моделі як дослідження її технічних характеристик 38.

6.1 Структура нейромережі 38.

6.2 Вихідні дані 40.

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

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 8. Укладання 61 Список літератури 63 Додаток 64.

1. Приклад вибірки сейсмограмм 64.

2. Приклад файла з векторами ознак 65.

3. Файл з настройками програми 66.

4. Приклад файла звіту 67.

5. Файл описи функцій, типів змінних і використовуваних библиотек.

«nvclass.h» 68.

6. Файл автоматичної компіляції програми під ОС Unix -«Makefile» 73.

7. Основний модуль — «nvclass.с» 74.

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

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

Основна мета дипломної роботи — досліджувати можливість застосування нейронних мереж для ідентифікації типу сейсмічного сигналу, з’ясувати, наскільки таке рішення буде ефективний тоді як вже використовуваними методами.

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

Наступні два розділу призначені формалізувати на математичному рівні завдання класифікації сейсмічних сигналів і способі її вирішення на основі статистичних методов.

Огляд різних архітектур нейронних мереж, виділені на рішення завдання класифікації, їх основні тези, чесноти та вади, а також методи попередньої підготовки даних наведені у розділах 4 і 5.

У шостий розділі говориться безпосередньо про нейросетевом рішенні аналізованої завдання, побудованому з урахуванням відомої, і найчастіше використовуваної парадигми — багатошарового персептрона, детально обговорюються основні алгоритми навчання, вибору початкових вагових коефіцієнтів і методи оцінки ефективності обраної моделі нейронної сети.

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

І на укладанні викладено основні висновки та рекомендації в напрямі подальших досліджень, у застосуванні нейронних мереж на вирішення завдання класифікації сейсмічних сигналов.

1. Основні становища теорії нейронних сетей.

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

У нейроинформатике для описи алгоритмів і пристроїв вироблено спеціальна «схемотехника», у якій елементарні устрою — сумматоры, синапсы, нейрони тощо. об'єднують у мережі, призначені на вирішення завдань. Це свого роду особливий мову до подання нейронних мереж, і обговорення. При програмної і апаратної реалізації цією мовою описи переводяться мовами іншого рівня, більш придатні реализации.

Элементы нейронних сетей.

Найбільш простими, базовими елементами нейромереж є:. Адаптивний акумулятор. Елемент вычисляющий скалярне твір вектора вхідного сигналу x на вектор параметрів w;. Нелінійний перетворювач сигналу f перетворюючий скалярний сигнал x в f (x);. Формальний нейрон. (рис. 1.1). Він з елементів трьох типов.

Елементи нейрона — умножители (синапсы), акумулятор і нелінійний перетворювач. Синапсы здійснюють зв’язок між нейронами, множать вхідний сигнал на число, характеризує силу зв’язку, — вагу синапса.

Акумулятор виконує складання сигналів, вступників по синоптичним зв’язкам з інших нейронів, і зовнішніх вхідних сигналів. Нелінійний перетворювач реалізує нелінійну функцію одного аргументу — виходу сумматора. Ця функція називається «функція активації «чи «передатна функція «нейрона. Нейрон загалом реалізує скалярную функцію векторного аргумента.

Математическая модель нейрона:

[pic] (1).

[pic] (2).

где wi — вагу синапса (weight), (i=0,1,2…p); w0 — значення усунення (bias); p. s — результат підсумовування (sum); xi — компонента вхідного вектора (вхідний сигнал), (i=1,2,…p); y — вихідний сигнал нейрона; pчисло входів нейрона; f — нелінійне перетворення (функція активации).

У випадку вхідний сигнал, вагові коефіцієнти і значення усунення можуть приймати відвідувачів справжні значення. Вихід (y) визначається виглядом функції активації і може бути як дійсним, і цілим. Багато практичних завданнях входи, ваги і усунення можуть лише деякі фіксовані значения.

Синаптичні зв’язки України із позитивними вагами називають збудливими, з негативними вагами — тормозящими.

Отже, нейрон повністю описується своїми вагами wi і передавальної функцією f (x). Отримавши набір чисел (вектор) xk як входів, нейрон видає певна кількість y на выходе.

Ця модель було запропоновано Маккалоком і Питтсом ще 1943 р. У цьому використовувалися порогові передавальні функції (рис. 2a), і правил формування вихідного сигналу y виглядали особливо просто:

[pic] (3).

У 1960 р. з урахуванням таких нейронів Розенблатт побудував першим у світі автомат для розпізнавання зображень літер, який було названо «перcептрон» (perception — сприйняття). Цей автомат мав дуже просту однослойную структуру і як міг вирішувати лише стосовно прості (лінійні) завдання. З тих пір прокуратура вивчила і складніші системи з нейронів, які у ролі передатних складні безперервні функції. Одною з найбільш часто використовуваних передатних функцій називається сигмоидной (чи логістичній) (рис. 2б) і замислюється над формулой.

[pic] (4).

Нейронная сеть.

Нейронна мережу — це набір нейронів, належним чином пов’язаних між собою. Зазвичай, передавальні функції всіх нейронів у мережі фіксовані, а ваги є параметрами сіті й можуть изменяться.

Одним із найпоширеніших є багатошарові мережі, в яких нейрони об'єднують у верстви. Шар — це сукупність нейронів з єдиним вхідним сигналом. Основним прикладу розглянемо мережу, що досить проста структурою й те водночас широко використовується на вирішення прикладних завдань — двухслойный персептрон з p входами і одного виходом (рис. 2.3).

Відповідно до назви, ця мережа і двох верств. Власне нейрони вміщено у першому (прихованому) і друге (вихідному) шарі. Вхідний шар (також наявність його називають нульовим чи «вырожденным») лише передає вхідні сигнали всім H нейронам першого шару (тут H = 4). Кожен нейрон першого шару має p входів, яким приписані ваги wi0, wi1,wi2, …, wip (для нейрона з номером і). Вагомості wi0 і v0 відповідають зміщення b описання формального нейрона, яке наведено вище. Отримавши вхідні сигнали, нейрон підсумовує його з відповідними вагами, потім застосовує до про цю суму передатну функцію і пересилає результат однією з входів нейрона другого («вихідного») шару. Натомість, нейрон вихідного шару підсумовує одержані від першого шару сигнали з декотрими вагами vi.

Отже, подаючи на входи персептрона будь-які числа x1, x2, …, xp, ми одержимо не вдома значення деякою функції F (x1, x2, …, xp), яке є (реакцією) мережі. Вочевидь, відповідь мережі залежить як від вхідного сигналу, і від значень її вагових коэффициентов.

Випишемо точний вид цієї функции.

[pic] (5).

Крім багатошарових нейронних мереж є й інші різновиду, кожна з яких розроблено й застосовуються на вирішення конкретних завдань. У тому числі можна назвати. полносвязные мережі, у яких кожен нейрон пов’язане з всіма іншими (на входи кожного нейрона подаються вихідні сигнали інших нейронів);. мережі з зворотними зв’язками (рекуррентные). Вони належним чином виходи з наступних верств нейронів подаються на вхід предыдущим.

Розібравшись із тим, із чого складаються нейронные мережі, і як функціонують, час торкнутися питання «як створити мережу, адаптовану на вирішення поставленого завдання? ». Це питання вирішується удвічі етапу: (рис. 1.4) 1. Вибір типу (архітектури) мережі 2. Підбір терезів (навчання) сети.

У першому етапі слід вибрати таке:. які нейрони хочемо використовувати (число входів, передавальні функции);

. як слід поєднати їхній між собою;. що взяти як входів і виходів сети.

Це завдання здавалося б здається неозорої, але, на щастя, необов’язково придумувати нейросеть «від початку «- є кілька десятків різних нейромережних архітектур, причому ефективність багатьох із них доведено математично. Найпопулярніші і вивчені архітектури — це багатошаровий персептрон, нейросеть із загальною регресією, мережі Кохонена і другие.

З другого краю етапі слід «навчити «обрану мережу, тобто підібрати такі значення її терезів, щоб мережу працювала за потрібне чином. Необученная мережу подібна дитині - яку можна навчити будь-чого. У використовуваних на практиці нейросетях кількість терезів їх може становити кілька десятків тисяч, тому навчання — справді складного процесу. Багатьом архітектур розроблено спеціальні алгоритми навчання, що дозволяють налаштувати ваги мережі певним образом.

Обучение нейросети.

Навчити нейросеть — отже, повідомити їй, чого ж ми від нього домагаємося. Цей процес відбувається дуже нагадує навчання дитини алфавіту. Показавши дитині зображення літери «А », ми запитуємо його: «То яка то літера? «Якщо відповідь хибний, ми повідомляємо дитині той відповідь, який ми хотіли б від нього отримати: «Це літера, А ». Дитина запам’ятовує цей приклад разом із вірним відповіддю, тобто у пам’яті відбуваються певні зміни потрібному напрямі. Ми будемо повторювати процес пред’явлення літер знову і знову до того часу, коли всі 33 літери будуть твердо запомнены. Такий процес називають «навчання з учителем » .

Якщо навчання відбувалося мережі ми завжди діємо цілком аналогічно. Нехай ми є деяка база даних, що містить приклади із різних класів, які потрібно навчитися розпізнавати (набір рукописних зображень літер). Пред’являючи зображення літери «А «на вхід мережі, ми від неї певний відповідь, необов’язково вірний. Нам відомий вірний (бажаний) відповідь — у разі нам хотілося б, щоб у вихід із міткою «А «рівень сигналу був максимальний. Зазвичай, у ролі бажаного виходу в завданню класифікації беруть набір (1,0,0,…), де 1 слід за вихід із міткою «А », а 0 — усім інших виходах. Вираховуючи різницю між бажаним відповіддю і реальним відповіддю мережі, ми маємо 33 числа — вектор помилки. Далі застосовуючи різні алгоритми по вектору помилки обчислюємо необхідні поправки для терезів мережі. Одну й саму букву (і навіть різні зображення одному й тому самі літери) ми можемо пред’являти мережі багаторазово. У цьому сенсі навчання скоріш нагадує повторення вправ він — тренировку.

Виявляється, що буває після багаторазового пред’явлення прикладів ваги мережі стабілізуються, причому мережу дає правильні відповіді все (або «майже все) приклади з даних. У разі кажуть, що «мережу вивчила все приклади », «мережу навчена », чи «мережу натренована ». У програмних реалізаціях можна побачити, у процесі навчання величина помилки (сума квадратів помилок за всі виходам) поступово зменшується. Коли величина помилки сягає нуля чи прийнятного малого рівня, тренування зупиняють, а отриману мережу вважають натренованої та готовою до застосуванню на нових даних. Схематично процес навчання представлений рис 1.5.

Важливо, що все інформація, яку мережу має про завданню, міститься у наборі прикладів. Тому якість навчання мережі безпосередньо залежить кількості прикладів в навчальною вибірці, і навіть від цього, наскільки повно ці два приклади описують це завдання. Приміром, безглуздо використовувати мережу для розпізнавання літери «A», тоді як навчальною вибірці вона було представлено. Вважається, що з повноцінної тренування потрібно хоча трохи десятків (а краще сотень) прикладів. Повторимо вкотре, що мережі - складний і наукомісткий процес. Алгоритми навчання мають різноманітним параметрам і настрою, керувати якими потрібно розуміння їхнього впливу. Застосування нейросети.

Потому, як мережу навчена, яку можна застосовувати її на вирішення поставленого завдання (рис 1.4). Найважливіше особливість людського мозку у тому, що, якось обучившись певному процесу, може вірно діяти й тоді, у яких не бував у процесі навчання. Наприклад, можна читати майже будь-який почерк, навіть якщо бачимо його вперше життя. Також і нейросеть, грамотним чином навчена, може запросто правильно реагувати налаштувалася на нові, не пред’явлені їй раніше дані. Наприклад, ми можемо намалювати букву «А «іншим почерком, а потім запропонувати нашої мережі класифікувати нове зображення. Вагомості навченої мережі зберігають досить багато інформації подібність і розбіжностях літер, тому треба прогнозувати пошук правильної відповіді й у варіант изображения Примеры практичного застосування нейронних сетей.

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

Прогнозирование.

Прогноз майбутніх значень перемінної, яка від часу, з урахуванням попередніх значень її і/або інших змінних. У фінансової області, це, наприклад, прогнозування курсу акцій на 1 день вперед, чи прогнозування зміни курсу валют на визначено ный період часу та т.д. (рис 1.6).

Распознавание чи классификация.

Визначення, до якого з заздалегідь відомих класів належить тестований об'єкт. Слід зазначити, що завдання класифікації дуже погано алгоритмизируются. Якщо у разі розпізнавання літер вірний відповідь очевидний нам заздалегідь, то складніших практичних завданнях навчена нейросеть постає як експерт, у якого великим досвідом та здатний дати у відповідь важкий вопрос.

Прикладом такої завдання служить медична діагностика, де мережу може враховувати дуже багато числових параметрів (енцефалограма, тиск, вага і т.д.). Звісно, «думка «мережі у разі не можна вважати окончательным.

Класифікація підприємств із ступеня їх перспективності (рис 1.8) — то це вже звичний спосіб використання нейромереж на практиці великих компаній. У цьому мережу також використовує безліч економічних показників, складним чином пов’язаних між собой.

Кластеризацию та віднайдення закономерностей.

Крім завдань класифікації, нейромережі широко йдуть на пошуку залежностей у цих і кластеризации.

Наприклад, нейросеть з урахуванням методики МГУА (метод групового обліку аргументів) дозволяє з урахуванням навчальною вибірки побудувати залежність одного параметра з інших як полинома (рис. 1.9). Така мережу може лише миттєво вивчити таблицю множення, а й знайти складні приховані залежність у даних (наприклад, фінансових), які виявляються стандартними статистичними методами.

Кластеризація — це розбивка набору прикладів сталася на кілька компактних областей (кластерів), причому число кластерів заздалегідь невідомо (рис. 1.10). Кластеризація дозволяє представити неоднорідні дані на більш наочному вигляді й використовувати далі на дослідження кожного кластера різні методи. Наприклад, в такий спосіб можна швидко виявити фальсифіковані страхові випадки чи несумлінні предприятия.

Попри великі можливості, існує низка недоліків, які все-таки обмежують застосування нейромережних технологій. По-перше, нейронные мережі дозволяють знайти субоптимальное рішення, і відповідно вони неприйнятні для завдань, у яких визначена висока точність. Функціонуючи за принципом чорної скриньки, вони також неприйнятні в разі, коли необхідно пояснити причину прийняття рішень. Навчена нейросеть видає відповідь за частки секунд, проте досить висока обчислювальна вартість процесу навчання як за часом, і за обсягом займаній пам’яті також істотно обмежує можливості їх використання. І все-таки клас завдань, на вирішення яких ці обмеження не критичні, досить широк.

2. Постановка завдання класифікації сейсмічних сигналов.

Міжнародна система моніторингу (ЧСЧ), сформувалася світі за останні десятиліття, варта контролю над сейсмічно активними регіонами. Більшість інформації фіксується на одиночних сейсмічних станціях. Подальша обробка цієї інформації дозволяє оцінити різні фізичні параметри, що характеризують записане подія. Відповідно ніж информативнее записаний сигнал, тим більше коштів різноманітних параметрів можна знайти й точніше. Щодо недавно — для спостереження використовують групи сейсмічних станцій. Найбільшого застосування отримали малоапертурные групи з діаметром приблизно 3 км. з допомогою те, що у разі можна знехтувати спотвореннями сигналу, виникаючими через неоднорідність земної поверхні. Причина використання сейсмічних груп також у тому, що з такий метод спостереження можна використовувати спеціальні алгоритми комплексної обробки зареєстрованим багатоканальної сейсмограммы, що забезпечують кращу якість оцінки параметрів записаній інформації, тоді як одиночними сейсмічними станціями. Один із численних завдань, які виникають за регіональному моніторингу, це завдання ідентифікації типу сейсмічного джерела чи завдання класифікації сейсмічних сигналів. Вона у цьому, щоб за сейсмограмі визначити причину виникнення зафіксованого події, тобто. розрізнити вибух і землетрус. Її вирішення передбачає розробку певного методу (вирішального правила), що з певної ймовірністю міг зарахувати записане подія до жодного з двох класів. На рис. 2.1 представлена схема постановки задачи.

Аби вирішити це завдання нині застосовуються різні аналітичні методи з теорії статистичного аналізу, що дозволяють з високою ймовірністю правильно класифікувати дані. Зазвичай, для конкретного регіону є власна база даних записаних подій. Вона включає у собі приклад сейсмограмм характеризуючих як землетрусу, і вибухи зміни у цьому регіоні з початку спостереження. Усі існуючі методи ідентифікації використовують цю базі даних як який навчає безлічі, цим, вловлюючи тонкі відмінності характерні для цього регіону, методи, налаштовують належним чином свої параметри і у результаті навчаються класифікувати все обучающее безліч на належність до одного з двох классов.

Одне з найбільш точних методів грунтується на виділенні дискриминантных ознак з сейсмограмм і наступного класифікації векторів ознак з допомогою статистичних вирішальних правил. Розмірність таких векторів відповідає кількості ознак, що використовуються ідентифікації як і правило, не більше кількох десятков.

Математична постановка у разі формулюється як завдання поділу за навчальною вибірці двох класів та ставиться так: є два набору векторів (кожен вектор розмірності N): X1,…, Xp1 і Y1,…Yp2. Заздалегідь відомо, що Xi (i=1,…, p1) належить до першого класу, а Yj (j=1,…, p2) — до другого. Потрібна побудувати вирішальне правило, тобто. визначити таку функцію f, що з f (x) > 0 вектор x ставився б до першого класу, а при f (x) < 0 — до другого, де x ({X1,…, Xp1, Y1,…, Yp2}.

3. Статистична методика виконання завдання классификации.

У розділі розглядається методику визначення типів сейсмічних подій, джерело якої в виділенні дискриминантных ознак з сейсмограмм і наступного класифікації векторів ознак з допомогою статистичних вирішальних правил. 8] 3.1 Виділення інформаційних ознак з сейсмограмм.

Вихідні дані представлені у вигляді сейсмограмм (рис. 3.1) — це тимчасове відображення коливань земної поверхности.

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

Зазвичай, більшість із цих методів на початковому етапі знають виконується наступний набір операцій: 1. З усієї сейсмограммы виділяється частина («тимчасове вікно»), яке містить інформацію якусь окремої складової сейсмічного події, наприклад, лише про P-волне. 2. Для виділених даних послідовно застосовується таких процедур як: а) Бистре (дискретне) перетворення Фур'є (ШПФ); б) Потім накладаються характеристики певного фільтра, наприклад, фільтра Гаусса. в) Протилежне перетворення Фур'є (ОБПФ), щоб отримати отфильтрованный сигнал.

Далі, застосовуються різні алгоритми на формування певного ознаки. Зокрема, можна легко знайти максимальну амплітуду коливання сигналу, характеристику котру визначаємо вираженням max{peakMax — peakMin}. Визначивши даний параметр для частоти f1 скажімо для P хвилі, і навіть для частоти f2 для P. S хвилі можна відшукати їхні ставлення P (f1)/S (f2), і використовувати його на ролі дискримінаційної для признака.

Застосовуючи інші алгоритми, можна побудувати дуже багато таких ознак. Проте, для завдання ідентифікації типу сейсмічного події, важливими є далеко ще не все. З найбільш інформативних можна назвати такі ознаки, як ставлення амплітуд P. S і P хвиль, чи частка потужності P. S фази на високих (низьких) частотах стосовно потужності P. S фази в усій смузі частот.

Зазвичай, якомога більше ознак, що використовується з цією завдання становить близько 25 — 30.

3.2 Відбір найбільш інформативних ознак для идентификации.

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

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

На початку кожен вектор xsj = (x (i)sj, i (1,p); де s (1,2 -номер класу (s=1 — землетрусу s=2 — вибухи), j (1,ns, nsчисло навчальних векторів даного класу складається з p ознак, вибраних з евристичних міркувань як може бути корисні для цієї проблеми розпізнавання. У цьому число p може бути досить велика і навіть перевищувати число наявних навчальних векторів у кожному з класів, але для стійкості обчислень мало виконуватися умова p < n1+n2. Процедура відбору ознак — итерационная і складається з p кроків кожному у тому числі число відібраних ознак поповнюється одиницю. На кожному проміжному k-м кроці процедура працює із n1+n2 k-мерными векторами xsj (k) (k (p), сформованих з k-1 ознак, відібраних внаслідок перших k-1 кроків і чи деякого нового ознаки у складі решти. Відбір ознак грунтується на оцінюванні за векторами, що складається з різних ознак, стохастичного відстані Кульбака-Махаланобиса D (k) між распределениями ймовірностей векторів xsj (k):

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 першого і другого класів; P. S- 1n1+n2 (k) є (k (k) — мірна зворотна вибіркова матриця ковариаций, розрахований з усього набору k — мірних векторів x1j (k) j (1,n1 і x2j (k) j (1,n2.

У першому кроці процедури відбору значення функціоналу D (1) обчислюються кожного з p ознак. Максимум з цих p значень досягається на якому те з ознак, який в такий спосіб відбирається як інформативний. З другого краю кроці значення функціоналу D (2) обчислюються вже для векторів, які з пар ознак. Перший елемент у кожному парі - це ознака, відібраний попередньому кроці, другий елемент пари — один їх решти ознак. Отже виходять p-1 значення функціоналу D (2). Другий інформативний ознака відбирають з умови, що вона досягається максимум функціоналу D (2). Далі процедура триває аналогічно, і k-м кроці процедури відбору обчислюються значення функціоналу D (k) по обучающим векторах, що складається з k ознак. Перші k-1 компонент цих векторів є інформативні ознаки, відібрані на попередніх k-1 кроках, остання компонента — одне із решти ознак. Як k-го інформативного ознаки відбирається той ознака, котрій функціонал D (k) -максимален.

Описана процедура ранжирує порядок прямування ознак в навчальних вектори те щоб забезпечити максимально можливу швидкість зростання відстані Махаланобиса (6) зі зростанням номери ознаки. Для селекції безлічі найбільш інформативних ознак кожному кроці k=1,2,…, p описаної вище итерационной процедури ранжирування ознак по інформативності зберігаються номер j (k) в вихідної таблиці ознак й ім'я обраного ознаки, також обчислюється теоретичне значення повної ймовірності помилки класифікації P (k) за такою формулою Колмогорова-Деева [12].

P (k) = (½)[1 — Tk (D (k)/((k)) + Tk (-D (k)/ ((k))], де k — число використовуваних ознак (2(k) = [(t+1)/t][r1+r2+D (k)]; t = [(r1+r2)/r1r2]-1; r1=k/n1; r2=k/n2.

(7).

Tk (z) = F (z) + (1/(k-1)) (a1 — a2H1(z) + a3H2(z) — a4H3(z)) f (z),.

F (z) — функція стандартного Гауссовского розподілу ймовірностей; f (z) — щільність цього розподілу; Hi (z) — поліном Эрмита ступеня і, i=1,2,3; aj, j=1,…, 4 — деякі коефіцієнти, залежать від k, n1, n2 і D (k) [12]. Ця формула, як було зазначено показано у різних дослідженнях, має хорошу точність при розмірах вибірок порядку сотні мільйонів і rs 0, то приймається, що вектор x (k) належить першому класу — (землетрус); у протилежному разі належить другому клас (взрыв).

Квадратична дискримінаційна функція описується наступній формулою [pic] (9) де [pic], s=1,2 — зворотні матриці ковариаций навчальних вибірок 1-го і 2- го класів, обчислені по обучающим векторах x1j (k) j (1,n1 і x2j (k) j (1,n2, соответственно.

3.4 Оцінка ймовірності помилковою класифікації методом ковзаючого экзамена.

Поцінування ймовірності помилковою ідентифікації типу подій (землетрясение-взрыв), у кожному конкретному регіоні є ще однією з основних практичних завдань моніторингу. Це завдання доводиться вирішувати на підставі накопичення регіональних сейсмограмм подій, про які достеменно відомо, що вони породжені землетрусами чи вибухами. Ці самі сейсмограммы є «навчальні дані «на адаптацію вирішальних правил.

З теорії розпізнавання образів відомо, що точної і універсальної оцінкою ймовірності помилок класифікації є оцінка, забезпечувана процедурою «ковзаючого экзамена"(«cross-validation») [11].

У методі ковзаючого іспиту кожному кроці одне із навчальних векторів xsj, j (1,ns, s (1,2, виключається з навчальною вибірки. Решта вектори йдуть на адаптації (навчання) LDF чи QDF чи іншого дискриминатора. Виключений вектор потім класифікується з допомогою дискриминатора, навченого без його. Якщо це вектор класифікується неправильно, тобто. належить до класу 2 замість класу 1 чи навпаки, відповідні «лічильники» (12 чи (21 збільшуються на 1. Виключений вектор потім повертається у навчальну вибірку, а вилучається вже інший вектор xs (j+1). Процедура повторюється всім nl +n2 навчальних векторів. Вычисляемая внаслідок величина p0=((12 +(21)/(nl +n2) є заможної оцінкою повної ймовірності помилковою класифікації. Значення дискриминатора, отримані внаслідок процедури ковзаючого іспиту обох класів, ранжируются за амплітудою: ранжированные послідовності зручніше порівнювати з порогом і робити висновки щодо «фізичних» причинах помилковою класифікації. 4. Огляд різних архітектур нейронних мереж, виділені на завдань классификации.

Приступаючи до розробки нейросетевого рішення, зазвичай, зіштовхуєшся з проблемою вибору оптимальної архітектури нейронної мережі. Оскільки області застосування найвідоміших парадигм перетинаються, то тут для розв’язання цілком конкретної завдання можна використовувати зовсім різні типи нейронних мереж, і навіть результати може стати однаковими. Буде та чи інша мережу краще організувати і практичнішим, залежить здебільшого від умов завдання. Отож для вибору кращої доводиться проводити численні детальні исследования.

Розглянемо ряд основних парадигм нейронних мереж, успішно застосовуваних на вирішення завдання класифікації, одне з постановок якій подається в даної дипломної работе.

4.1 Нейрон — классификатор.

Найпростішим пристроєм розпізнавання образів в нейроинформатике є одиночний нейрон (рис. 4.1), перетворює вхідний вектор ознак в скалярний відповідь, залежить від лінійної комбінації вхідних змінних [1- 5, 7,10]:

Скалярний вихід нейрона можна використовувати як т.зв. дискриминантной функції. Цим терміном називають індикатор приналежності вхідного вектора до жодного з заданих класів, а нейрон відповідно — лінійним дискриминатором. Тож якщо вхідні вектора можуть належати одного з двох класів, можна розрізнити тип входу, наприклад, наступним чином: якщо 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.4). Передавальні функції (зазвичай сигмоидного типу) служать для перетворення внутрішньої активності нейрона. Коли різних блоках прихованого шару використовують різні передавальні функції, нейросеть виявляється здатної виявляти нових властивостей в предъявляемом образі. Для настройки вагових коефіцієнтів використовуються самі алгоритми, про які йшлося у попередньому разделе.

4.2 Мережі Кохонена.

Мережі Кохонена — це одне з різновидів нейронних мереж, для настройки якої використовується алгоритм навчання без вчителя. Завданням нейромережі Кохонена є будування відображення набору вхідних векторів високої розмірності карті кластерів меншою розмірності, причому таким чином, що близьким кластерам на карті відповідають близькі друг до друга вхідні вектори в вихідному пространстве.

Мережа складається з M нейронів, їхнім виокремленням, зазвичай одномірну чи двумерную карту (рис. 4.2). Елементи вхідних сигналів {xi} подаються на входи всіх нейронів мережі. У процесі функціонування (самоорганізації) на виході шару Кохонена формуються кластери (група активних нейронів певній розмірності, вихід яких різниться від нуля), що характеризують певні категорії вхідних векторів (групи вхідних векторів, відповідні однієї вхідний ситуації). [9].

Алгоритм Кохонена формування карт ознак. Крок 1. Форматувати ваги випадковими значеннями. Поставити розмір околиці ((0), і швидкість ((0) і tmax. Крок 2. Поставити значення вхідних сигналів (x1,…, xp). Крок 3. Обчислити відстань до всіх нейронів мережі. Відстані dk від вхідного сигналу x до кожного нейрона k визначається по формуле:

[pic] де xi — i-ый елемент вхідного сигналу, wki — вагу зв’язку від i-го елемента вхідного сигналу до нейрона k. Крок 4. Знайти нейрон — переможець, тобто. знайти нейрон j, котрій відстань dj найменше: j: dj < dk (k (p Крок 5. Підбудувати ваги найкращих і його соседей.

[pic] [pic] Крок 6. Обновити розмір околиці ((t) і швидкість ((t).

((t)=((0)(1-t/tmax) ((t)=((0)(1-t/tmax) Крок 7. Якщо (t < tmax), то Крок 2, інакше СТОП.

Завдяки своїм здібностям до великого узагальнення інформації, карти Кохонена є зручним інструментом для наочного уявлення про структуру даних в багатомірному вхідному просторі, геометрію якого уявити практично неможливо. Мережі зустрічного распространения.

Ще один група технічних застосувань пов’язані з предобработкой даних. Карта Кохонена групує близькі вхідні сигнали Х, а необхідна функція Y = G (X) будується з урахуванням звичайній нейромережі прямого поширення (наприклад багатошарового персептрона чи лінійної зірки Гроссберга[1]) до виходам нейронів Кохонена. Така гібридна архітектура було запропоновано Р. Хехт-Нильсеном і має назву мережі зустрічного распространения[1−3,7,9]. Нейрони шару Кохонена навчаються без вчителя, з урахуванням самоорганізації, а нейрони які розпізнають верств адаптуються з учителем итерационными методами. Приклад такий структури на вирішення завдання класифікації сейсмічних сигналів наведено на рис. 4.5.

Другий рівень нейромережі використовується для кодування інформації. Вагові коефіцієнти tij (і =1,…, M; j=1,2) — коефіцієнти від i-го нейрона шару Кохонена до j-му нейрона вихідного шару розраховуються наступним образом:

[pic] де Yi — вихід іго нейрона шару Кохонена Sj — компонента цільового вектора (S={0,1} - вибух, S={1,0}-землетрясение).

Отже після попереднього навчання дітей і формування кластерів в шарі Кохонена, на фазі вторинного навчання все нейрони кожного отриманого кластера з'єднуються активними (поодинокими) синапсами зі своїми вихідним нейроном, що характеризує даний кластер.

Вихід нейронів другого шару визначається выражением:

(11) [pic] де: [pic] Kj — розмірність j-ого кластера, тобто. кількість нейронів шару Кохонена сполучених з нейроном j вихідного шару відмінними від нуля коефіцієнтами. R — граничне значення (0 < R < 1).

Граничне значення R можна вибрати в такий спосіб, щоб із однієї боку були втрачені значення активованих кластерів, з другого боку — отсекался «шум не активізованих кластерів » .

У результаті кожен крок обробки вихідних даних не вдома виходять значення Sj, які характеризують явище, породившее цю вхідну ситуацію ([pic] - землетрус; [pic] - взрыв).

4.5 Висновки по разделу.

Отже, підсумовуючи даної главі, слід зазначити, що це зовсім повний огляд нейромережних архітектур, які вдало виходить із завданнями класифікації. Зокрема не було сказано про ймовірнісних нейронних мережах, про мережах із базисно радіальними функціями, про використанні генетичних алгоритмів для настройки багатошарових мереж, і про інші, нехай менш відомих, але добре зарекомендували. Відповідно проблема вибору найоптимальнішою архітектури на вирішення завдання класифікації сейсмічних сигналів цілком актуальна. У ідеалі, звісно хотілося б перевірити ефективність хоча б кількох із неї і вибрати найкращу. Але цього необхідно здійснювати масштабні дослідження, які займуть чимало часу. На цьому етапі досліджень була спроба використовувати добре вивчені нейронные сіті й алгоритми навчання у тому, щоб у ефективності підходу загалом. У розділі 6 детально обговорюються нейросеть, що була досліджували у межах справжньої дипломної работы.

5. Методи попередньої обробки данных.

Якщо виникла потреба використовувати нейросетевые методи для вирішення конкретних завдань, то перше із чим вони зіштовхуються — це підготовка даних. Зазвичай, в описах різних нейроархитектур, по вмовчанням припускають що ці на навчання вже є і подано в вигляді, доступному для нейромережі. Насправді саме етап предобработки може бути найбільш трудомістким елементом нейросетевого аналізу. Успіх навчання нейромережі він може вирішальним чином залежати від цього, що не вигляді представлена інформація на її обучения.

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

5.1 Максимізація ентропії як мету предобработки.

Розглянемо основний керівний принцип, загальний всім етапів предобработки даних. Припустимо, що у вихідні дані представлені у числової форми і після відповідної нормировки все вхідні і вихідні перемінні відбиваються поодинці кубі. Завдання нейросетевого моделювання — знайти статистично достовірні залежності між вхідними і вихідними перемінними. Єдиним джерелом інформації для статистичного моделювання є приклади з навчальною вибірки. Чим більше біт інформації принесе приклад — краще використовуються що у нашому розпорядженні данные.

Розглянемо довільну компоненту нормованих (предобработанных) даних: [pic]. Середнє кількість інформації, принесеної кожним прикладом [pic], одно ентропії розподілу значень цієї компоненти [pic]. Якщо цих значень зосереджено відносно невеликий області одиничного інтервалу, інформаційне на утримання такої компоненти мало. У межі нульової ентропії, коли всі значення перемінної збігаються, ця змінна несе немає інформації. Навпаки, якщо значення перемінної [pic] рівномірно розподілені поодинці інтервалі, інформація такий перемінної максимальна.

Загальний принцип предобработки даних на навчання, в такий спосіб полягає в максимізації ентропії входів і выходов.

5.2 Нормировка данных.

Як входами, і виходами можуть цілком різнорідні величини. Вочевидь, що результати нейросетевого моделювання нічого не винні залежати від одиниць виміру цих величин. Як-от, щоб мережу трактувала їх значення однаково, все вхідні і вихідні величин мали бути зацікавленими наведено до єдиному масштабу. З іншого боку, підвищення швидкості і забезпечення якості навчання корисно провести додаткову предобработку, що вирівнює розподілу значень ще до його етапу обучения.

Индивидуальная нормировка данных.

Приведення до єдиного масштабу забезпечується нормировкой кожної перемінної на діапазон розкиду її значень. У найпростішому варіанті це — лінійне преобразование:

[pic] в одиничний відрізок: [pic]. Узагальнення для відображення даних в інтервал [pic], рекомендованого для вхідних даних тривиально.

Лінійна нормировка оптимальна, коли значення перемінної [pic] щільно заповнюють певний інтервал. Але такий «прямолінійний» підхід застосуємо які завжди. Тож якщо у цих є щодо рідкісні викиди, які набагато перевищують типовий розкид, саме ця викиди визначать відповідно до попередньої формулі масштаб нормировки. Це спричинить різке до того що, що переважна більшість значень унормованого перемінної [pic] зосередиться поблизу нуля [pic] Набагато надійніше, тому, орієнтуватися при нормировке не, а екстремальні значення, але в типові, тобто. статистичні характеристики даних, такі як середнє і дисперсия.

[pic], где.

[pic], [pic].

І тут переважна більшість даних матиме одиничний масштаб, тобто. типові значення все змінних можна порівняти (рис. 6.1).

Проте, тепер нормовані величини не належать гарантовано одиничному інтервалу, більше, максимальний розкид значень [pic] заздалегідь ніхто не знає. Для вхідних даних це може бути байдуже, але вихідні перемінні використовуватимуться на ролі еталонів для вихідних нейронів. Що стосується, якщо вихідні нейрони — сигмоидные, можуть приймати значення лише одиничному діапазоні. Щоб виявити відповідність між навчальною вибіркою і нейросетью у разі необхідно обмежити діапазон зміни переменных.

Лінійне перетворення, представлене вище, нездатна отнормировать основну масу даних, і одночасно обмежити діапазон можливих значень цих даних. Природний вихід із цій ситуації - використовуватиме предобработки даних функцію активації тієї ж нейронів. Наприклад, нелінійне преобразование.

[pic], [pic] внормовує основну масу даних одночасно гарантуючи что[pic] (рис. 5.2).

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

Усе вище перелічені методи нормировки спрямовані те що, щоб максимізувати ентропію кожного входу (виходу) окремо. Але, взагалі кажучи, можна домогтися набагато більше максималізуючи їхнє спільне ентропію. Існують методи, дозволяють проводити нормировку для всієї сукупності входів, опис декого з тих наведено в [4].

6.3 Зниження розмірності входов.

Оскільки заздалегідь невідомо, наскільки корисні ті чи інші вхідні перемінні для передбачення значень виходів, виникає спокуса збільшувати число вхідних параметрів, з думкою те що, що мережа сама визначить, які їх найбільш значимі. Проте найчастіше це призводить до очікуваним результатам, а при цьому що й збільшує складність навчання. Навпаки, стиснення даних, зменшення рівня їх надмірності, що використовує що у них закономірності, може істотно полегшити наступну роботу, виділяючи справді незалежні ознаки. Можна виділити два типу алгоритмів, виділені на зниження розмірності даних із мінімальної втратою информации:

. Відбір найбільш інформативних ознак і в процесі навчання нейронної сети;

. Кодування вихідних даних меншою кількістю змінних, та заодно містять наскільки можна усю інформацію, закладену у вихідних данных.

Розглянемо докладніше обидва типу алгоритмов.

5.3.1 Відбір найбільш інформативних признаков.

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

У розділі 3.2 був описаний алгоритм, дозволяє впорядкувати бачимо всі ознаки у напрямку зниження їхньої значимості. Проте накладываемые обмеження не дозволяють застосовувати її більш поширених задач.

Для вибору підходящої комбінації вхідних змінних використовується так звані генетичні алгоритми [5], що добре пристосовані для завдань подібного типу, оскільки дозволяють виробляти пошук серед великого числа комбінацій за наявності внутрішніх залежностей в переменных.

5.3.2 Стиснення інформації. Аналіз головних компонент.

Найпоширеніший метод зниження розмірності - це аналіз головних компонент (АГК).

Традиційна реалізація цього представленій у теорії лінійної алгебри. Основна ідея ось у чому: до даних застосовується лінійне перетворення, у якому напрямам нових координатних осей відповідають напрями найбільшого розкиду вихідних даних. Для ці цілей визначаються попарно ортогональные напрями максимальної варіації вихідних даних, після чого дані проектуються на простір меншою розмірності, породжене компонентами із найбільшою варіацією [4]. Одне з недоліків класичного методу головних компонент у тому, що це суто лінійний метод, і може нехтувати деякі важливі характеристики структури данных.

Теоретично нейронних мереж розроблено потужніші алгоритми, здійснюють «нелінійний аналіз головних компонент"[3]. Вони уявляють собою самостійну нейросетевую структуру, яку навчають видавати в ролі виходів свої власні вхідні дані, та заодно у її проміжному шарі міститься менше нейронів, ніж у вхідному і вихідному шарах. (рис 5.3). Мережі такого роду звуться — автоассоциативные сети.

Щоб відновити свої вхідні дані, мережу має навчитися представляти в дешевше розмірності. Базовий алгоритм навчання у цьому випадку називається правило навчання Ойя для однослойной мережі. Враховуючи те, що у такий структурі ваги з індексами в обох шарах однакові, дельта-правило навчання верхнього (а й викликав цим нижнього) шару можна записати в виде:

[pic], где.

[pic] [pic], и [pic] [pic], [pic], j=1,2,…, d — компонента вхідного вектора; [pic], виходи мережі j=1,…, d; d — кількість нейронів на вхідному ми вихідному шарах (розмірність вектора ознак); yi — вихід з i-го нейрона внутрішнього шару, i=1,…, M M — кількість нейронів на внутрішньому слое;

. — коефіцієнт навчання; wij=wkj — ваги мережі, відповідно між вхідним — прихованим і прихованим — вихідним слоями.

Прихований шар такий мережі здійснює оптимальне кодування вхідних даних, і має максимально можливе при даних обмеженнях кількість інформації. Після навчання зовнішній інтерфейс (wij) (рис. 5.4) то, можливо збережено і використаний зниження размерности.

Нелинейный аналіз головних компонент.

Головна перевага нейроалгоритмов у цьому, що вони охоче узагальнюються на випадок нелінійного стискування інформації, коли ніяких явних рішень не існує. Можна замінити лінійні нейрони в описаних вище мережах — думок нелінійних. З мінімальними видозмінами нейроалгоритмы працюватимуть у разі, завжди знаходячи оптимальне стиснення інформації при накладених обмеженнях. Наприклад, проста заміна лінійної функції активації нейронів на сигмоидную у правилі навчання Ойя:

[pic] призводить до новому качеству.

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

5.4 Висновки по разделу.

Звісно, описаними вище методиками не вичерпується й усе розмаїття підходів до ключовою для нейро-анализа проблеми формування простору ознак. Наприклад, існують різноманітні методики, розширюють аналіз головних компонент. Також, на більшу увагу заслуговують генетичні алгоритми. Неосяжного не охопити. Головне, щоб за деталями не губився основний принцип предобработки даних: зниження існуючої надмірності усіма можливими засобами. Це підвищує інформативність прикладів і тим самим, якість нейропредсказаний.

6. Реалізація нейросетевой моделі як дослідження її технічних характеристик.

Раніше засвідчили, якими засобами нейроинформатики можна намагатися вирішити завдання ідентифікації типу сейсмічного джерела, які процедури доцільно застосовувати при попередньої підготовці даних, було наведено невеличкий огляд різних алгоритмів навчання відомих нейроархитектур. У цієї главі представлено вирішення завдання з урахуванням двухслойного персептрона, оскільки саме він був обраний на початковому етапі знають досліджень. Дано також опис алгоритму навчання дітей і методів його оптимизации.

6.1 Структура нейронної сети.

Отже, на вирішення завдання ідентифікації типу сейсмічного події пропонується використовувати однією з найбільш універсальних нейроархитектур — багатошаровий персептрон, а точніше його двошарову реалізацію (рис. 6.1). Як засвідчили експерименти, збільшити кількість прихованих верств не призводить до найкращим результатам, а тільки ускладнює процес навчання, тому й була обрано саме реалізація з однією прихованим шаром нейронов.

На вхід мережі подається p-мерный вектор ознак {xi, i=1,2,…, p}. Для визначеності розглядатимемо випадок, коли p=9, хоча дослідження проводилися, і для p=5, p=18. Оптимальний кількість нейронів на прихованому шарі H підбиралося експериментально до різних p. Відповідно при p = 9 досить брати H рівним також 9 чи значно більше. Для розбивки вихідних даних на два класу не вдома мережі досить одного нейрона. Між вхідним і прихованим верствами, і навіть між прихованим і вихідним верствами використовувалася полносвязная структура. З урахуванням цих доповнень опишемо усталені малюнку 7.1 позначення: p — розмірність вихідних даних (кількість ознак що використовуються класифікації); H — число нейронів на прихованому шарі; xi — компонента вхідного вектора ознак, і = 1,…, p; x0 (1 — постійне вплив що використовується до роботи нейронної мережі; wji — вагові коефіцієнти між вхідним і прихованим верствами, і = 0,1,…, p, j = 1,…, H; vk — вагові коефіцієнти між прихованим і вихідним верствами, k = 0,1,…, H. zj — значення виходу j-го нейрона прихованого шару; z0 (1, j = 1,…, H;

[pic] y — значення вихідного нейрона мережі (вихід сети).

[pic] (12) f1(x) -функція активації нейронів прихованого шару; f2(x) -функція активації нейрона вихідного слоя.

Як функції активації f1(x) для нейронів прихованого шару і f2(x) для єдиного нейрона не вдома мережі пропонується використовувати один, і таку ж функцію, саме сигмоидную функцію активації, для стислості будемо позначати її як f (x):

[pic], з похідною в виде.

[pic]. Вигляд такий функції представлений рис. 6.2.

Т.к. значення функції f (x) обмежені буде в діапазоні [0, 1], результат мережі y (x) може приймати будь-які справжні значення від цього ж діапазону, у слідстві чого логічно інтерпретувати виходи мережі наступним чином: якщо y (x) > 0.5, то вектор належить одного класу (вибухи), в іншому разі до іншого (землетрусу). 6.2 Вихідні данные.

На вхід нейронної мережі пропонується подавати вектора ознак що складаються з сейсмограмм. Про те, які ознаки були використані це завдання і як отримані, йшлося до цього часу розділі 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], а обрана нормировка дозволяє без втрати інформації перенести все вхідні значення потрібний диапазон.

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

Якщо за [pic] позначити бажаний вихід мережі (вказівку вчителя), то помилка системи для заданого вхідного сигналу (неузгодженість реального і бажаного вихідного сигналу) можна записати наступного виде:

[pic][pic], де k — номер навчальною пари навчальною вибірці, k=1,2,…, n1+n2 n1 — кількість векторів першого класу; n2 — число векторів другого класса.

Як функціоналу оптимізації використовуватимемо критерій мінімуму среднеквадратической функції ошибки:

[pic].

6.4 Вибір початкових вагових коэффициентов.

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

Зазвичай, всім вагам цьому етапі присвоюються випадкові величини рівномірно розподілені буде в діапазоні [-A, A], наприклад [-1,1], чи [-3,3]. Проте, як показали експерименти, таке рішення перестав бути найкращим й у як альтернатива пропонується використовувати решта видів початковій ініціалізації, саме: 1. Присвоювати вагам випадкові величини, задані не рівномірним розподілом, а нормальним розподілом з параметрами N[(,(], де вибіркове середнє (=0, а дисперсія (= 2, будь-якої іншої невеличкий позитивної величині. Щоб сформувати нормально розподіленої величини можна використовувати наступний алгоритм:

Крок 1. Поставити 12 випадкових чисел x1, x2, …, x12 рівномірно розподілених буде в діапазоні [0,1]. xi (R[0,1].

Крок 2. Для шуканих параметрів (і (величина [pic], отримана по формуле:

[pic] належатиме нормальному розподілу з параметрами N[(,(]. 2. Можна виробляти початкову ініціалізацію терезів відповідно до методикою, запропонованої Nguyen і Widrow [7]. З цією методики використовуються такі перемінні [pic] число нейронів поточного шару [pic] кількість нейронів наступного шару [pic] коефіцієнт масштабирования:

[pic] Уся процедура складається з таких кроків: До кожного нейрона наступного слоя[pic]: Инициализируются вагові коефіцієнти (з нейронів поточного шару): [pic]случайное число буде в діапазоні [-1,1] (чи [pic]). Обчислюється норма [pic] Далі ваги перетворюються на відповідність до правилом: [pic] Усунення [pic] вибираються випадково з діапазону [pic].

Обидві запропоновані методики дозволили практично домогтися кращих результатів, порівняно зі стандартним алгоритмом початковій ініціалізації весов.

6.5 Алгоритм навчання дітей і методи його оптимизации.

Приступаючи до навчання обраної нейросетевой моделі, потрібно було вирішити, який із відомих типів алгоритмів, градиентный (зворотне поширення помилки) чи стохастический (Больцмановское навчання) використовувати. З низки суб'єктивні причини був обраний саме перший підхід, що й представлено цьому разделе.

Обучение нейронних мереж, як мінімізація функції ошибки.

Коли функціонал помилки нейронної мережі заданий (розділ 6.3), то головна завдання навчання нейронних мереж зводиться для її мінімізації. Градиентное навчання — це итерационная процедура добору терезів, у якій кожен наступний крок направлений у бік антиградиента функції помилки. Математично це можна зробити висловити наступним образом:

[pic], чи, що таке саме: [pic], тут ((- темп навчання на кроці (. Теоретично оптимізації його відомий як засіб якнайшвидшого спуска. ].

Метод зворотного поширення ошибки.

Історично найбільшу труднощі шляху до ефективному правилу навчання багатошарових персептронов викликала процедура розрахунку градієнта функції помилки [pic]. Річ у тім, що помилка мережі визначається з її виходам, тобто. безпосередньо пов’язане лише з вихідним шаром терезів. Питання перебував у .тому, як визначити помилку для нейронів на прихованих шарах, щоб знайти похідні по відповідним вагам. Потрібен був процедура передачі помилки з вихідного шару до попереднім верствам мережі, у бік зворотному обробці вхідний інформації. Тому такий метод, коли його знайдено, отримав назву методу зворотного поширення помилки (error backpropagation).

Розберемо його з прикладу двухслойного персептрона з однією нейроном на выходе.(рис 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. Повторювати кроки із першого по 4 кожному за вектора який навчає безлічі до того часу, поки помилка по всьому безлічі не досягне прийнятного уровня.

Попри універсальність, його часом стає малоефективним. А, щоб уникнути вырожденных випадків, і навіть збільшити швидкість збіжності функціоналу помилки, розроблено багато модифікацій стандартного алгоритму, зокрема 2 серед яких і пропонується использовать.

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

З математичної погляду навчання нейронних мереж (СР) — це многопараметрическая завдання нелінійної оптимізації. У класичному методі зворотного поширення помилки (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 З++ 3.1 чи вище.. Для Unix стандартний компілятор cc, входить до складу базової комплектації будь-який ОС сімейства Unix. 7.3 Опис вхідного файла з вихідними данными.

Як вихідних даних використовується отформатированный текстовий файл, у якому зберігається інформацію про розмірності векторів, їх кількості та самі вектора даних. Файл повинен мати форму числової матриці. Кожна рядок матриці відповідає одному вектору ознак. Кількість ознак має збігатися з параметром NDATA. Кількість шпальт дорівнювала кількості ознак плюс два. Перший стовпець містить порядковий номер вектора в загальної сукупності даних (відповідає послідовності 1, 2, 3,…, NPATTERN), а останньому стовпці записані значення покажчика класифікатора: 1- для вектора з першого класу, 0 — для вектора з другого класу. Усі числові параметри поділяються прогалинами і записуються в кодах ASCII. Приклад файла приведено у додатку 2.

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

Параметри настройки програми утримуватися у вхідному файлі «nvclass.inp». Приклад файла приведено у додатку 3. Для настройки використовуються такі перемінні: TYPE — РЕЖИМ РОБОТИ ПРОГРАММЫ.

TYPE=11.

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

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

2. TESTVECTOR — Ім'я файла з тестованим вектором.

3. NETWORKFILE — Ім'я файла з матрицями терезів попередньо навченої сети.

TYPE=12.

Це значення пасують зовнішньому режиму функціонування програми із навчанням нейронної сіті й тестуванням у ньому заданого вектора. Необхідно поставити такі параметры:

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

2. NPATTERN -Кількість векторів признаков.

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

4. TESTVECTOR — Ім'я файла з тестованим вектором;

5. RESNETFNAMEІм'я вихідного файла з матрицями терезів навченої сети.

TYPE=21.

Дане значення відповідає внутрішньому режиму з перевіркою однієї з векторів з вибірки. Для функціонування програми що необхідно дати такі параметры:

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

2. NPATTERN -Кількість векторів признаков.

3. PATTERNFILEІм'я файла з набором векторів признаков.

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

TYPE=22.

При даному значенні параметра програма функціонуватиме у внутрішньому режимі із послідовною перевіркою всіх векторов.

(«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 Результат роботи программы.

Для досліджень можливостей розробленого програмного забезпечення було проведено різні експерименти, головна мета яких — підібрати значення параметрів настройки програми, у яких підсумкові результати її роботи містили найменше помилок ідентифікації. Методика, по якої оцінювалася помилка класифікації, полягає в підході «crossvalidation».

Експерименти проводилися на даних, отриманих з сейсмограмм, записаних в Норвезької сейсмологической мережі. У вихідної вибірці налічувалося 86 подій із різних класів, їх відповідно 50 — землетрусів і 36 — вибухів. Дослідження проводили для різного числа ознак ідентифікації, саме для 18 і 9-те розмірних векторів признаков.

Перша серія експериментів було проведено на 18 розмірних вектори. Структура нейронної мережі відповідала, де 18 — кількість нейронів у вхідному шарі, 9- число нейронів першою прихованому шарі, 1- розмірність виходу мережі. Збільшення нейронів на прихованому шарі не зумовлювало поліпшенню результатів, а при зменшенні виникали додаткові помилки, в слідстві чого така структура пропонується ролі оптимальной.

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

Як початковій конфігурації використовувалися такі значення настраиваемых параметрів в файлі «nvclass.inp»:

TYPE=22.

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 розмірних векторів ознак було використано наступна структура нейронної мережі, тобто. 5 нейронів на прихованому шарі було достатньо отримання хороших результатов.

Як приклад наведемо дослідження аналогічні тим, які описані выше.(Рис. 7.3, 7.4).

Останню діаграму можна в виде.

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

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

8.

Заключение

.

Проведені дослідження таки підтвердили ефективність застосування нейромережних технології ідентифікації типу джерела сейсмічних події. При певних настроюваннях нейронної мережі можна домогтися результатів, коли ймовірність правильного розпізнавання становить 96.5%. Помилки виникають лише з 3 вектори з 86. Якщо ж порівнювати отримані результати з тими, які можна досягти використанні стандартних методів класифікації, одне із варіантів яких приведено у розділі 4, то вони повторюють одне одного. І статистика і нейронные мережі помиляються однакову кількість раз, причому самих і тієї ж вектори. З 86 подій статистичні методи помиляються на 3 вектори (1-землетрясение і 2-взрыва), і нейросетевой класифікатор також помиляється саме у цих вектори. Відповідно поки не можна казати про якомусь перевагу одного методу над другим.

Зауважимо, що у справжніх дослідженнях було використано досить загальні і універсальні технології нейроинформатики (багатошарові мережі застосовуються на вирішення багатьох завдань, але ці який завжди найоптимальніша нейроструктура), а застосування вужчих і спеціалізованих нейронних парадигм деяких випадках дає змогу отримувати кращі результати. У частковості, з допомогою нейропакетов тих-таки даних було поставлено ряд експериментів над мережами Кохонена, описаними розділ 5.4. Результати показали, що його помилок ідентифікації здебільшого становить 3−4 вектора, тобто. практично збігаються з результатами, отриманими на багатошарових мережах і класичних методах.

Отже, підсумовуючи всьому вище сказаного, виділимо основні результати проведених досліджень: 1. Нейронные мережі дозволяють успіш-но розв’язувати проблему визначення типу джерела сейсмічного події. 2. Нове рішення не поступається за паливною ефективністю традиційних методів, які у час на вирішення досліджуваної завдання. 3. Можливі поліпшення технічних характеристик нейросетевого решения.

Як подальших досліджень, вкладених у підвищення ефективності нейросетевого рішення, можна запропонувати такі:. Для багатошарових мереж прямого поширення покінчити з проблемою початковій ініціалізації вагових коефіцієнтів. Якщо припустити, що є неявна залежність між матрицею початкових вагових коефіцієнтів й конкретної реалізацією вибірки даних, настановленим навчання нейронної мережі, можна пояснити ті випадки, коли результат кілька років гірше, ніж у більшості експериментів. Можливо, реалізація алгоритму враховує розподіл вихідних даних дозволить одержувати стабільніші результати.. Для тих самих мереж можна використовувати інші засоби навчання, дозволяють з більшою ймовірністю знаходити глобальний мінімум функції помилки.. Дослідження інших парадигм й розробка спеціальної моделі, призначеної конкретно на вирішення даного завдання можуть призвести поліпшити отриманих результатов.

1. Уоссермен Ф. «Нейрокомпьютерная техніка» — М.: Мир, 1992. 2. Горбань О. Н., Дубинин-БарковскийВ.Л., Кирдин О. Н. «Нейроинформатика» СП «Наука» РАН 1998. 3. Горбань О. Н., Россиев Д. А. «Нейронные мережі на персональному комп’ютері» СП «Наука» РАН 1996. 4. Єжов А.А., Шумський С. А. «Нейрокомпьютинг і застосування економіки і бизнесе».1998. 5. Bishop C.M. «Neural Networks and Pattern Recognition.» Oxford Press. 1995. 6. Goldberg D. «Genetic Algorithms in Machine Learning, Optimization, and Search.» — Addison-Wesley, 1988. 7. Fausett L.V. «Fundamentals of Neural Networks: Architectures, Algorithms and Applications», Prentice Hall, 1994. 8. Kohonen T. «Self-organization and Associative Memory», Berlin: Springer;

Verlag, 1989. 9. Kushnir A.F., Haikin L.M., Troitsky E.V. «Physics of the earth and planetary interiors» 1998. 10. Копосов А.І., Щербаков І.Б., Кисленко Н. А., Кисленко О. П., Варивода Ю. В. Звіт по науково-дослідної роботі «Створення аналітичного огляду інформаційних джерел щодо застосування нейронних мереж для завдань газової технології «; та інших., ВНДІГАЗ, 1995, internet 11. Fukunaga K., Kessel D.L., «Estimation of classification error», IEEE Trans. Comp. З 20, 136−143. 1971. 12. Деев А. Д., «Застосування статистичного дискримінаційного аналізу та його ассимптотического розширення порівнювати різних розмірностей простору.», РАН 195, 759−762. 1970.

Приложение.

1. Приклад вибірки сейсмограмм.

У лівому стовпці представлені сейсмограммы, описують вибухи, а правом — землетрясения.

2. Приклад файла з векторами ознак. Представлена вибірка з файла 9_Norv.txt, що містить 9 розмірні вектора признаков.

NumOfPattern: 86.

PatternDimens: 9.

1 -14.3104 -13.2561 -13.4705 -13.4306 -14.1015 -13.3503 -13.3805 -13.7369 -0.3494 0 2 -14.6881 -13.6349 -12.9050 -13.4323 -14.2279 -13.4720 -13.2117.

— 13.5791 -1.2801 0 3 -14.4036 -14.1745 -13.8014 -12.7209 -14.6283 -13.9589 -13.4649.

— 12.9716 -0.8250 0 …

55 -14.3693 -13.4362 -11.4072 -12.3129 -14.8612 -13.3480 -12.8517.

— 13.4014 -0.7738 0 56 -14.2856 -12.6858 -13.8215 -13.4282 -14.0982 -13.1587 -13.2792.

— 13.7852 -1.3442 0 57 -14.4822 -13.1141 -13.7787 -13.4466 -13.6761 -13.2969 -13.6033.

— 13.9252 -0.6642 1 58 -13.5522 -13.1302 -13.5444 -14.1471 -13.2994 -13.2368 -13.9776.

— 14.4295 -0.9973 1 59 -14.8524 -11.9846 -13.7231 -14.2496 -13.4809 -13.0515 -13.8950.

— 14.3923 -1.8284 1 …

85 -14.5994 -13.6920 -12.8539 -13.7629 -14.1699 -13.2075 -13.3422.

— 13.6788 -11.9537 1 86 -14.3821 -13.6093 -12.8677 -13.7788 -14.1260 -13.3246 -13.2966.

— 13.6453 -11.4304 1.

3. Файл з настройками программы.

# # Common parameters for programm «NVCLASS «# # # # # # # # # # # # # # # # # # # # # # 11 — OnlyTest mode, 12 — TestAfterLearn mode, # 21 — CheckOneVector, 22 — CrossValidation mode. # TYPE=22 NDATA=9 NPATTERN=86 PatternFile=9_Norv.txt NTEST=10 TestVector=vector.tst NetworkFile=9.net ResNetFname=9.net NumberVector=57 ReportFile=Report.txt Debug=Yes # # Next parameters was define in result experiments and if you will # change it, the any characteristics of Neural Net may be not optimal # (since may be better then optimal).

# # # # # # # # # # # # # «NetStructure «must be: [NDATA, NUNIT1,1] (NOUT=1 always) # value «AUTO «- «NetStructure «will be define the programm.(See help). # example: [18,9,1], or [18,18,1], or [9,9,5,1] NetStructure=[18,12,1] # may be: [Gauss] or [Random] InitWeigthFunc=Gauss Constant=3 Alfa=0 Sigma=1.5 Widrow=No Shuffle=Yes Scaling=Yes LearnTolerance=0.1.

Eta=1.

MaxLearnCycles=50 Loop=3 #end of list.

4. Приклад файла отчета.

NVCLASS report — Wed Jun 02 15:58:02 1999.

Type = 12.

Neural Net ;

PatternFile — vect.txt.

Test Vector (s) — vector.tst.

ResNetFname — 12.net.

LearnTolerance = 0.10.

InitialWeigthFunc = Gauss[ 0.0, 1.5].

< Loop 1 > Learning cycle result:

NumIter = 5.

NumLE = 3.

Error vector (s): 58, 59, 63, +——-+———+————+———+ | N | ID | Result |Target| +——-+———+————+———+ | 1 | 24 | 0.1064 | 0 | | 2 | 25 | 0.9158 | 1 | | 3 | 26 | 0.0452 | 0 | | 4 | 27 | 0.0602 | 0 | | 5 | 28 | 0.0348 | 0 | | 6 | 29 | 0.0844 | 0 | | 7 | 30 | 0.1091 | 0 | | 8 | 31 | 0.0821 | 0 | | 9 | 32 | 0.0298 | 0 | | 10 | 33 | 0.2210 | 0 | +——-+———+————+———+.

< Loop 2 > Learning cycle result:

NumIter = 5.

NumLE = 5.

Error vector (s): 33, 34, 55, 58, 63, +——-+———+————+———+ | N | ID | Result |Target| +——-+———+————+———+ | 1 | 24 | 0.1279 | 0 | | 2 | 25 | 0.9929 | 1 | | 3 | 26 | 0.0960 | 0 | | 4 | 27 | 0.1463 | 0 | | 5 | 28 | 0.1238 | 0 | | 6 | 29 | 0.1320 | 0 | | 7 | 30 | 0.1478 | 0 | | 8 | 31 | 0.1235 | 0 | | 9 | 32 | 0.0740 | 0 | | 10 | 33 | 0.5140 | 1 | +——-+———+————+———+.

5. Файл описи функцій, типів змінних і використовуваних библиотек.

«nvclass.h». /* * —- Neuro classificator—- * * Common defines */.

#include #include #include #include #include #include #include //#include //#include #include.

#define DefName «nvclass.inp «.

#define MAXDEF 100 #define MAXLINE 256 #define NMAXPAT 100 #define NMXINP 20 #define NMXUNIT 20.

#define CONT 0.

#define EXIT_OK 1 #define EXIT_CNT 2.

#define RESTART 911 #define MAXEXP 700 /* Max arg exp (arg) without error «OVERFLOW «*/.

#define Random 10 #define Gauss 20.

#define OK 0 #define Error 1 #define Yes 77 #define No 78 #define Min 0 /* Find_MinMax (…) */ #define Max 1.

#define TYPE_ONE 21 #define TYPE_TWO 22 #define TYPE_THREE 23 #define TYPE_FOUR 24.

int NDATA = 0; int NUNIT1 = 0; int NUNIT2 = 0; int NUNIT3 = 0; int NOUT = 1;

int NPATTERN = 0; /* Number of input pattern*/ int NWORK = 0; /* Number of work pattern*/ int NTEST= 0; /* Number of test pattern*/.

int result; int STOP = 0;

int NumOut = 250; /* Number of itteration, after which show result in debugfile. */ int Num_Iter=10;/* The parameters requred in the procecc of */ float Percent=0.25; /* dinamic lerning with change «eta «*/.

float LearnTolerance = 0.10; float TestTolerance = 0.5;

float MAX_ERR=0.1; /* min error */ float eta = 1.0; /* learning coefficient*/ float MIN_ETA=0.1;

float **Array_MinMax; int *Cur_Number;

float W1[NMXINP][NMXUNIT]; float W2[NMXUNIT];

float PromW1[NMXINP][NMXUNIT]; float PromW2[NMXUNIT];

float PromW1_OLD[NMXINP][NMXUNIT]; float PromW2_OLD[NMXUNIT];

float Err1[NMXUNIT]; float Err2; float OLD_ERROR; float GL_Error=0.0;

float Out1[NMXUNIT]; float Out2;

char NetStr[20]= «Auto »; /* String with pattern of Net Structure*/.

int Type = TYPE_THREE; /* Enter the mode of work of programm */.

int InitFunc = Random; /* Random [=10] weigth will RandomDistribution Gauss [=20] - … GaussianDistributon */ float Constant = 1; /* RandomDistribution [-Constant, Constant]*/.

float Alfa = 0; /* GaussianDistribution [Alfa, Sigma]*/ float Sigma = 1; /* … */ int Widrow = No; /* Nguyen-Widrow initialization start weigth*/.

int Loop = 1; /* Number repeat of Learning cycle */.

char *PatternFile; /* File with input patterns*/ char *TestVector; char *ReportFile= «report.txt »; /* name of report file */ char *NetworkFile; /* Name of input NetConfig file */ char *ResNetFname; /* Name of output NetConfig file */.

int DEBUG = Yes; /* if «Yes «then debug info in the DebugFile */ char *DebugFile= «Logfile.log »; /* Name of the debug file*/.

int NumberVector = 0; /* Number of TEST vector */ int Shuffle = Yes; /* Flag — shuffle the input vectors*/ int Scaling = Yes; /* Scaling input vector */ int MaxLearnCycles = 1999; /* Max number of learning iteration */.

FILE *Dfp; /* Debug file pointer */ FILE *Rfp; /* Report file pointer*/.

typedef struct Pattern { int ID; /* ID number this vector in all set of pattern */ float *A; /* pattern (vector) A={a[0], a[1],…, a[NDATA]} */ float Target; /* class which this vector is present*/ } PAT;

PAT *Input; PAT *Work; PAT *Test;

/* lines in defaults file are in the form «NAME=value «*/ typedef struct Default { char *name; /* name of the default */ char *value; /* value of the default */ } DEF;

/* structure of statistics info about one test vector */ typedef struct Statistic { int ID; /* Primery number from input file */ float Target; float TotalRes; /* Total propability */ int Flag; /* Flag = 1, if vector was error and = 0 in over case */ float *result; /* Result of testing vector on current iteration */ int *TmpFlag; /* analog «Flag «on current itteration */ int *NumIter; /* Number iteration of learning on which.

Learning cycle STOPED */ int **NumLE; /* Error vectors after cycle of learning was test*/ } STAT;

/* structure of the some result of learning cycle */ typedef struct ResLearning { int NumIter; int LearnError[NMAXPAT+1]; /* A[0]-count of error,.

A[1]-ID1,.

A[2]-ID2,…

A[NMAXRL]-ID?.*/ } RL;

/* function prototypes */.

void OnlyTestVector (void); void TestAfterLearn (void); void CheckOneVector (void); void CrossValidation (void);

DEF **defbuild (char *filename); DEF *defread (FILE *fp); FILE *defopen (char *filename); char *defvalue (DEF **deflist, const char *name); int defclose (FILE *fp); void defdestroy (DEF **, int); void getvalues (void);

void Debug (char *fmt, …); void Report (char *fmt, …);

void Widrow_Init (void); int Init_W (void); float RavnRaspr (float A, float B); float NormRaspr (float B, float A);

void ShufflePat (int *INP, int Koll_El);

float F_Act (float x); float Forward (PAT src); int LearnFunc (void); int Reset (float ResErr, int Cnt, int N_Err); void Update_Last (int n, float Total_Out); void Update_Prom1 (int n); void Prom_to_W (void); void Update_All_W (int num, float err_cur); void Init_PromW (void); void Prom_to_OLD (void); int CheckVector (float Res, PAT src); int *TestLearn (int *src);

RL FurtherLearning (int NumIteration, float StartLearnTolerans, float EndLearnTolerans,.

RL src);

STAT *definestat (PAT src); STAT **DefineAllStat (PAT *src, int Num); void FillStatForm (STAT *st, int iteration, float res, RL lr); void FillSimpleStatForm (STAT *st, float res); void destroystat (STAT *st, int param); void DestroyAllStat (STAT **st, int Num); void PrintStatHeader (void); void printstat (STAT *st); void PrintStatLearn (RL src); void PrintTestStat (STAT **st, int len); void PrintErrorStat (STAT **st, int Len);

int DefineNetStructure (char *ptr); void getStructure (char buf[20]);

PAT patcpy (PAT dest, PAT src); PAT* LocPatMemory (int num); void ReadPattern (PAT *input, char *name, int Len); void FreePatMemory (PAT* src, int num); void ShowPattern (char *fname, PAT *src, int len); void ShowVector (char *fname, PAT src); float getPatTarget (float res);

PAT* DataOrder (PAT* src, int Len, int Ubit, PAT* dest, PAT* test); void FindMinMax (PAT *src, int Dimens, int Num_elem, float **Out_Array); void ConvX_AB01(PAT src);

int *DefineCN (int len); int getPosition (int Num, int *src, int Len); void DestroyCN (int *src); void ShowCurN (int LEN);

float **LocateMemAMM (void); void FreeAMM (float **src);

void WriteHeaderNet (char *fname, float **src); void WriteNet (char *fname, int It); void ReadHeaderNet (char *fname, float **src); int ReadNet (char *fname, int It); FILE *OpenFile (char *name); int CloseFile (FILE *fp);

/* End of common file */.

6. Файл автоматичної компіляції програми під Unix -«Makefile». CC= cc LIBS= -lm.

OBJ= nvclass.o.

nvclass: $(OBJ).

$(CC) -o nvclass $(LIBS) $(OBJ).

nvclass.o: nvclass.c.

7. Основний модуль — «nvclass.с» /* * Neuron Classificator ver 1.0 */.

#include «common.h «.

/* ========================= * MAIN MODULE * ========================= */ void main (int argc, char *argv[]) { int і; char buf[MAXLINE], PrName[20], *ptr; time_t tim; time (&tim);

/* UNIX Module */.

Dfp = OpenFile (DebugFile); strcpy (buf, argv[0]); ptr = strrchr (buf, «/ «); ptr++; strcpy (PrName, ptr); Debug («nn «%p.s «- Started %p.s », PrName, ctime (&tim));

getvalues (); Rfp = OpenFile (ReportFile);

DefineNetStructure (NetStr); /* NetStr string from input file */ getStructure (buf);

Debug («nNeyral net %p.s », buf); Input = LocPatMemory (NPATTERN); Work = LocPatMemory (NPATTERN);

Array_MinMax = LocateMemAMM (); Cur_Number = DefineCN (NPATTERN);

printf («nMetka — 1 »); if (Type == TYPE_ONE).

OnlyTestVector (); if (Type == TYPE_TWO).

TestAfterLearn (); if (Type == TYPE_THREE).

CheckOneVector (); if (Type == TYPE_FOUR).

CrossValidation ();

time (&tim); Debug («nn%s — Normal Stoped %p.s », PrName, ctime (&tim));

CloseFile (Dfp); CloseFile (Rfp); FreeAMM (Array_MinMax); DestroyCN (Cur_Number); FreePatMemory (Input, NPATTERN); FreePatMemory (Work, NPATTERN); }.

/* *OnlyTestVectors — read net from (NetworkFile) and test the TestVector (s) */ void OnlyTestVector (void) { char buf[MAXLINE+1];

STAT **st, *stat; int i, j; float Res;

Debug («nOnlyTestVector proc start »); Debug («n NPATTERN = %d », NPATTERN); Debug («n NTEST = %d », NTEST);

Test = LocPatMemory (NTEST); ReadPattern (Test, TestVector, NTEST); /* ShowPattern («1.tst », Test, NTEST);*/ PrintStatHeader (); st = DefineAllStat (Test, NTEST); ReadHeaderNet (NetworkFile, Array_MinMax); if (Scaling == Yes).

{ for (i=0;i ", i+1);

ReadNet (NetworkFile, i+1); for (j=0;j.

Показати весь текст
Заповнити форму поточною роботою