У наші дні зростає необхідність в системах, які здатні невиконувати лише одного разу запрограмовану послідовність дійнад заздалегідь певними даними, але і здатні самі аналізувати зновуінформацію, що надходить, знаходити в ній закономірності, робитипрогнозування і т.д. У цій області програм найкращим чиномзарекомендували себе так звані нейронні мережі - самонавчаєтьсясистеми, що імітують діяльність людського мозку. Розглянемо докладнішеструктуру штучних нейронних мереж (НС) та їх застосування в конкретнихзавданнях. p>
Штучний нейрон. p>
Незважаючи на велику різноманітність варіантів нейронних мереж всі вони маютьспільні риси. Так всі вони, також як і мозок людини, складаються з великоїчисла однотипних елементів - нейронів, які імітують нейрони головногомозку, пов'язаних між собою. На рис.1 показана схема нейрона p>
p>
З малюнка видно, що штучний нейрон, так само як і живий, складаєтьсяз синапсів, що пов'язують входи нейрона з ядром, ядра нейрона, якездійснює обробку вхідних сигналів і аксона, який пов'язує нейронз нейронами наступного шару. Кожен синапс має вагу, який визначаєнаскільки відповідний вхід нейрона впливає на його стан. Станнейрона визначається за формулою p>
(1) де n - число входів нейрона xi - значення i-го входу нейрона wi - вага i-го синапсу p>
Потім визначається значення аксона нейрона за формулою
Y = f (S) (2) p>
Де f - деяка функція, яка називається активаційний. Найбільшчасто як активаційний функції використовується так званий сігмоід,який має такий вигляд: p>
(3) p>
Основна перевага цієї функції в тому, що вона диференційовних на всійосі абсцис і має дуже просту похідну: p>
(4) p>
При зменшенні параметра? сігмоід стає пологішим, виродилисяв горизонтальну лінію на рівні 0,5 при? = 0. При збільшенні? сігмоід всебільше наближається до функції одиничного стрибка. p>
Нейронні мережі зворотного поширення. p>
Нейронні мережі зворотного поширення - це потужний інструментпошуку закономірностей, прогнозування, якісного аналізу. Такеназва - мережі зворотного поширення (back propagation) вони отрималичерез використання алгоритму навчання, в якому помилка поширюєтьсявід вихідного шару до вхідного, тобто в напрямку, протилежномунапряму розповсюдження сигналу при нормальному функціонуванні мережі. p>
Нейронна мережу зворотного поширення складається з декількох шарівнейронів, причому кожен нейрон шару i пов'язаний з кожним нейроном шару i +1,тобто мова йде про повно-НС. p>
У загальному випадку задача навчання НС зводиться до знаходження якоїсьфункціональної залежності Y = F (X) де X-вектор вхідний, а Y-вихіднийвектори. У загальному випадку така задача, при обмеженому наборі вхіднихданих має нескінченну безліч рішень. Для обмеження просторупошуку при навчанні ставиться завдання мінімізації цільової функції помилки НС,яка знаходиться за методом найменших квадратів: p>
(5) де yj - значення j-го виходу нейросети dj-цільове значення j-го виходу p - число нейронів у вихідному шарі p>
Навчання нейросети проводиться методом градієнтного спуску, тобто накожної ітерації зміна ваги здійснюється за формулою p>
(6) де? - параметр визначає швидкість навчання p>
(7) де yj-значення виходу j-го нейрона p>
Sj - зважена сума вхідних сигналів, що визначається за формулою (1). Прице множник p>
(8)де xi - значення i-го входу нейрона
Далі розглянемо визначення перший множника формули (7)
(9) де k - число нейронів у шарі n 1. P>
Введемо допоміжну змінну p>
(10) p>
Тоді ми зможемо визначить рекурсивну формулу для визначення n --ного шару якщо нам відомо наступного n +1- го шару. p>
(11) p>
Знаходження ж для останнього шару НС не представляє труднощі,тому що нам відомий цільової вектор, тобто вектор тих значень, якімає видавати НС при даному наборі вхідних значень. p>
(12) p>
І нарешті запишемо формулу (6) у розгорнутому вигляді p>
(13) p>
Розглянемо тепер повний алгоритм навчання нейросети p>
1. подати на вхід НС один із потрібних образів і визначити значення виходів нейронів нейросети p>
2. розрахувати для вихідного шару НС за формулою (12) і розрахувати зміни ваг вихідного шару N за формулою (13) p>
3. Розрахувати за формулами (11) та (13) відповідно і для інших верств НС, n = N-1 .. 1 p>
4. Скорегувати всі ваги НС p>
(14) p>
5. Якщо помилка істотна, то перейти на крок 1 p>
На етапі 2 мережі по черзі у випадковому порядку пред'являються вектора знавчальної послідовності. p>
Підвищення ефективності навчання НС зворотного поширення p>
Найпростіший метод градієнтного спуску, розглянутий вище, дуженеефективний у випадку, коли похідні за різними ваг сильновідрізняються. Це відповідає ситуації, коли значення функції S длядеяких нейронів близька за модулем до 1 або коли модуль деяких вагбагато більше 1. У цьому випадку для плавного зменшення помилки треба вибиратидуже маленьку швидкість навчання, але при цьому навчання може зайнятинедозволено багато часу. p>
Найпростішим методом удосконалення градієнтного спуску євведення моменту? , коли вплив градієнта на зміну ваг змінюєтьсяз часом. Тоді формула (13) набуде вигляду p>
(13.1) p>
Додатковою перевагою від введення моменту є здатністьалгоритму долати дрібні локальні мінімуми. p>
Представлення вхідних даних p>
Основна відмінність НС в тому, що в них всі вхідні і вихідні параметрипредставлені у вигляді чисел з плаваючою точкою зазвичай в діапазоні [0 .. 1]. Утой же час дані предметної області часто мають інше кодування. Такце можуть бути числа в довільному діапазоні, дати, символьні рядки.
Таким чином дані про проблему можуть бути як кількісними так іякісними. Розглянемо спочатку перетворення якісних даних учислові, а потім розглянемо спосіб перетворення вхідних даних употрібний діапазон. p>
Якісні дані ми можемо розділити на дві групи: впорядковані
(ордінальние) і неврегульовані. Для розгляду способів кодування цихданих ми розглянемо задачу про прогнозування успішності лікування якого -небудь захворювання. Прикладом впорядкованих даних можуть наприклад бутидані, наприклад, про додаткові фактори ризику при цьому захворюванні.
| Ні | Ожиріння | Алкоголь | Куріння | Гіпертонія | p>
А також можливим прикладом може бути наприклад вік хворого
| До 25 років | 25-39 років | 40-49 років | 50-59 років | 60 і старше | p>
Небезпека кожного фактора зростає в таблицях при русі зліванаправо. p>
У першому випадку ми бачимо, що у хворого може бути декілька факторівризику одночасно. У такому випадку нам необхідно використовувати такийкодування, при якому відсутня ситуація, коли різних комбінаційчинників відповідає одне і те ж значення. Найбільш поширений спосібкодування, коли кожному фактору ставиться у відповідність розряд двійковогочисла. 1 в цьому розряді говорить про наявність фактора, а 0 про його відсутність.
Параметри ні можна поставити відповідно число 0. Таким чином дляподання всіх факторів досить 4-х розрядного двійкового числа.
Таким чином число 10102 = 1010 означає наявність у хворого гіпертонії івживання алкоголю, а кількістю 00002 відповідає відсутність у хворогофакторів ризику. Таким чином фактори ризику будуть представлені числами вдіапазоні [0 .. 15]. p>
У другому випадку ми також можемо кодувати всі значення двійковимивагами, але це буде недоцільно, тому що набір можливих значень будедуже нерівномірним. У цьому випадку більш правильним буде встановлення ввідповідність кожному значенню своєї ваги, що відрізняється на 1 від вагисусіднього значення. Так число 3 буде відповідати віку 50-59лет.
Таким чином вік буде закодований числами в діапазоні [0 .. 4]. P>
У принципі аналогічно можна чинити і для невпорядкованих даних,поставивши у відповідність кожному значенню будь-яке число. Однак цевводить небажану впорядкованість, яка може спотворити дані, ісильно ускладнити процес навчання. Як один із способів вирішенняцієї проблеми можна запропонувати поставити у відповідність кожному значеннюодного з входів НС. У цьому випадку за наявності цього значеннявідповідний йому вхід встановлюється в 1 або в 0 при іншому випадку.
На жаль цей спосіб не є панацеєю, бо при великій кількостіваріантів вхідного значення числом входів НС розростається до величезноїкількості. Це різко збільшить витрати часу на навчання. В якостіваріанти вирішення цієї проблеми можна використовувати декілька інше рішення.
У відповідність кожному значенню вхідного параметра ставиться бінарнийвектор, кожен розряд якого відповідає окремого входу НС. Наприкладякщо число можливих значень параметра 128, то можна використовувати 7розрядний вектор. Тоді 1 значенням буде відповідати вектор 0000000 а
128 - вектор 1111111, а, наприклад, 26 значенню - 0011011. Тоді числонеобхідних для кодування параметрів входів можна визначити як p>
N = log2n (15) p>
Де n-кількість значень параметра p>
N-кількість входів p> < p> Перетворення числових вхідних даних p>
Для НС необхідно щоб вхідні дані лежали в діапазоні [0 .. 1], в тойчас як дані проблемної області можуть лежати в будь-якому діапазоні.
Припустимо що дані по одному з параметрів лежать в діапазоні
[Min .. Max]. Тоді паіболее простим способом нормування буде p>
(16) де x-початкове значення параметра p>
-значення, що подається на вхід НС p>
На жаль цей спосіб кодування не позбавлений недоліків. Так у випадкуякщо той розподіл даних на вході може прийняти вигляд p>
p>
Тобто розподіл вхідних параметрів буде вкрай нерівномірним, щопризведе до погіршення якості навчання. Тому в подібних ситуаціях, атакож у випадку, коли значення входу лежить в діапазоні можнавикористовувати нормування за допомогою функції виду p>
(17)
-----------------------< br>Рис.1 Схема нейрона p>