Топології нейронної мережі
Загальна кількість ваги і порогових коефіцієнтів в мережі повинна бути меншою, а краще — набагато меншою, ніж число навчальних спостережень. В ідеалі потрібно мати в десять або двадцять раз більше спостережень, ніж є ваги. Якщо навчальних спостережень недостатньо, слід обмежитись мережами невеликих розмірів, оскільки для моделювання складної функції просто бракує даних. Якщо число спостережень… Читати ще >
Топології нейронної мережі (реферат, курсова, диплом, контрольна)
ТОПОЛОГІЇ НЕЙРОННОЇ МЕРЕЖІ та їх застосування В пакеті ST Neural Networks
1. Вибір архітектури мережі
В пакеті ST Neural Networks можливі два варіанти вибору архітектури мережі: метод спроб і помилок, і використання автоматичного конструктора мережі.
При виборі архітектури методом спроб і помилок варто дотримуватись певних описаних нижче евристичних правил. Крім того, в пакеті STNN є вбудована функція Радник (Network Advisor), яка запропонує початкову конфігурацію мережі, спираючись на властивості вхідних даних. Програма автоматично зберігає кращу з мереж, отриманих на даний момент. Після закінчення пошуку її можна буде знову викликати і працювати з нею.
Якщо є тільки вхідні змінні, необхідно використовувати мережу Кохонена. Для всіх інших випадків надамо декілька загальних порад.
Перший крок. Висока швидкість навчання дозволяє використовувати байєсові мережі як відправну точку у розв’язанні задачі: якщо така мережа зовсім не може розв’язати задачу, то, ймовірно, що цього не зможе зробити і мережа іншої архітектури. Хоча байєсова мережа звичайно знаходить приблизний шлях розв’язання задачі, вона, взагалі говорячи, не видає результати такої якості, як мережі інших архітектур.
Другий крок. Тепер можна спробувати інші архітектури мереж. Іноді мережі MLP дають набагато кращі результати, ніж байєсові (завдяки нерадіальним елементам), у той час, як радіальні базисні функції подібні за своєю структурою до байєсових мереж і дають схожі результати. Якщо MLP-мережі дають результати гірші, ніж байєсові, має сенс звернутися до RBF: в них використовується той же радіальний підхід, що і в байєсових мережах, але вони компактні.
У всіх випадках слід пам’ятати, що на результат навчання мережі можуть дуже впливати параметри алгоритму навчання, тому не варто відкидати яку-небудь архітектуру, не проробивши з нею серію дослідів.
Остаточний вибір залежить і від того, яка швидкість виконання потрібна. Як правило, чим менша мережа, тим довше вона навчається і тим швидше працює.
Найскладніше обрати число проміжних шарів і число елементів в них. Ось декілька порад, які можуть вам допомогти:
1. При використанні багатошарового перцептрону для більшості задач достатньо одного проміжного шару. Якщо навіть при великому числі схованих елементів не вдасться зменшити помилку до прийнятного рівня, можна спробувати мережу з двома проміжними шарами.
2. Чим більше число прихованих елементів в мережі, тим складнішу задачу вона може моделювати, але при цьому знадобиться більш тривале навчання і виникне небезпека перенавчання. При експериментуванні слідкуйте за тим, як змінюються навчальна і контрольна помилки. Якщо при додаванні нових елементів зменшуються обидві помилки, то, очевидно, мережа поки що надто мала. Якщо ж контрольна помилка стала набагато більшою, ніж помилка навчання (і, зокрема, якщо вона збільшується при подальшому навчанні), то, ймовірно, що дана мережа надто велика.
3. Загальна кількість ваги і порогових коефіцієнтів в мережі повинна бути меншою, а краще — набагато меншою, ніж число навчальних спостережень. В ідеалі потрібно мати в десять або двадцять раз більше спостережень, ніж є ваги. Якщо навчальних спостережень недостатньо, слід обмежитись мережами невеликих розмірів, оскільки для моделювання складної функції просто бракує даних. Якщо число спостережень менше, ніж число входів, помножене на число виходів, слід використовувати тільки лінійні моделі. Недостача даних — одна з можливих причин для видалення деяких вхідних змінних. Навіть якщо ці змінні містили якусь інформацію, їх видалення і наступне зменшення розміру мережі може покращити результат.
мережа матриця перцептрон
2. Користувальницькі архітектури мереж Ті готові архітектури мереж, які створюються програмою STNN, відносяться до числа найвикористовуваних. Однак, побудовані таким чином мережі не обов’язково будуть кращими з усіх можливих. Особливо це стосується багатошарових перцептронів.
Мережі для задачі класифікацій. Задачі класифікації в пакеті STNN підрозділяються на дві категорії: задачі з двома класами, де використовується один вихідний елемент, і задачі з багатьма класами, де мережа містить три або більше вихідних елементів.
Задачі з двома класами. В задачі з двома класами цільове вихідне значення рівне або 1 (що означає належність до одного з класів), або Q (належність іншому класові).
Задачі з багатьма класами. В задачі з багатьма класами цільове вихідне значення у елемента, який відповідає правильному класові, дорівнює 1, а у інших елементів — 0.
Корисно представляти собі вихідні значення як ймовірності.
1. В задачі з двома класами єдине вихідне значення можна вважати оцінкою, яку мережа дає для ймовірності того, що дане спостереження належить до «позитивного» класу (1).
2. В задачі з багатьма класами вихідні значення можна вважати оцінкою ймовірності належності окремим класам, за умови, що їх сума за всіма класами пронормована на одиницю.
В пакеті STNN є засоби підтримки обох варіантів інтерпретації.
Мережі для задач з двома класами. Мережа для двох класів реалізується стандартною логістичною функцією активації у вихідному елементі, оскільки вихідне значення завжди знаходиться в інтервалі (0;1).
Однак, характеристики такої мережі іноді вдається покращити, обравши для параметра Функція помилок (Error function) значення Ентропія (Entropy) проста (single). Стандартна середньоквадратична функція помилок (Sum-Squared) теоретично більше підходить для задач регресії.
Мережі для задач з багатьма класами. Вихідні значення мережі в задачі з багатьма класами можна інтерпретувати як ймовірності, якщо їх пронормувати на одиничну суму. Щоб зробити це в пакеті ST Neural Networks оберіть для вихідного шару функцію активації Софтмакс (Softmax) (за допомогою Редактора мережі - Network Editor), а для параметра Функція помилок (Error function) — тип Ентропія (Entropy) множинна (multiple).
В функції софтмакс використовується зважена і нормована на одиницю сума експонент, і ця функція за властивостями близька до логістичної. Можна показати, що якщо вхідні дані представляють собою вибірку з якогось експоненційного розподілу (найвідомішим прикладом експоненційного розподілення є нормальне), то виходи софтмакс-елементів можна трактувати як ймовірності.
Ймовірності належності спостереження різним класам (а не тільки самі класи, які їм назначила програма ST Neural Networks) можна подивитись, змінивши у вікнах Прогнати одне спостереження (Run Single Case), Прогнати набір даних (Run Data Set) і Прогнати окреме спостереження (Run One-off Case) значення Показувати при виведенні (Outputs Shown) на Активації (Activations).
3. Додавання матриці втрат Якщо мережа навчена з таким розрахунком, щоб вихідні значення були оцінками ймовірностей, програму ST Neural Networks можна настроїти так, щоб враховувати матрицю втрат.
В найпростішому варіанті оцінки ймовірності використовуються безпосередньо — спостереження відноситься до найбільш ймовірного класу. Звісно, що при цьому мережа іноді може помилятися (і буде помилятись, якщо в даних містяться перешкоди).
Однак, буває так, що одні помилки обходяться дорожче за інші. Наприклад, при діагностиці серйозного захворювання призначення лікування людині, яка насправді здорова, можна вважати менш серйозною помилкою, ніж відсутність лікування для дійсно хворої.
Матриця втрат представляє собою квадратну матрицю, коефіцієнтами якої є відносні ціни різноманітних помилок класифікації. Вона помножується на вектор оцінених ймовірностей, в результаті виходить вектор оцінок втрат, і кожне спостереження приписується тому класові, у якого буде найменша оцінка для ціни помилки.
Оскільки правильна класифікація не несе ніяких втрат, на головній діагоналі матриці втрат завжди стоять нулі; що стосується інших коефіцієнтів матриці, то коефіцієнт, який стоїть на перетині n-го стовпця і m-го рядка є ціна неправильної класифікації спостереження, що належить насправді до класу номер n, як того, що належить класові номер m.
В пакеті STNN матрицю втрат можна побудувати за допомогою лінійної мережі, яка має таке ж число елементів у вхідному і вихідному шарах, як у первинної мережі у вихідному шарі. Мережа для матриці втрат повинна мати числові вхідні змінні і одну номінальну вихідну змінну, яка відповідає виходу мережі, до якої додається матриця втрат.
Таким чином, найпростіший спосіб побудувати матрицю втрат такий: проігнорувати всі вхідні змінні початкового набору даних, а вихідну змінну зробити типу вхідна/вихідна (Input/Output); обрати тип мережі Лінійна (Linear), а якщо він вже обраний, натиснути кнопку Порада (Advise). Виникає мережа з однією вхідною і однією вихідною змінною, причому обидві будуть номінальними. Тепер потрібно додати N нових вхідних змінних, де N — число можливих номінальних значень, і після цього видалити існуючу вхідну змінну: в результаті буде побудована мережа матриці втрат з потрібним числом входів і правильним постпроцесуючим шаром. Потім за допомогою Редактора мережі (Network Editor) потрібно встановити нульові значення порогів (Thresholds) вихідного шару і помістити коефіцієнти матриці втрат на місце всіх інших ваг.
Після того, як матриця втрат побудована, її можна додати до навченої мережі, оцінюючої ймовірності, і в результаті вийде складова мережа, оцінююча втрати. При цьому необхідно також задати для параметра Тип результату класифікації (Classification Output Type) значення Помилка (Error).
Матрицю втрат можна включати до байєсових імовірнісних мереж пакета STNN при їх створенні. Після того, як матриця втрат побудована, не можна далі навчати складову мережу, оскільки при цьому будуть зіпсовані коефіцієнти втрат.
4. Мережі для регресії
В задачах регресії ціль полягає в прогнозуванні значення безупинної вихідної змінної. Багатошаровий перцептрон у своєму первісному вигляді може для цього не підійти, оскільки стандартна логістична функція активації приймає значення в інтервалі (0;1), а вихідні значення задачі можуть знаходитись зовсім в іншому діапазоні.
Масштабування вихідних значень. Програма ST Neural Networks автоматично усуває цю невідповідність шляхом масштабування (шкалування) вихідних значень. За замовчуванням в багатошаровому перцептроні використовується шкалування методом Мінімакс (Minimax) як для вхідних, так і для вихідних змінних.
Після того, як мережа навчена, програма ST Neural Networks визначає для кожної змінної коефіцієнти масштабу і зсуву за мінімальним і максимальним значенням на навчальній множині і перетворює дані, помножуючи їх на коефіцієнт масштабу і додаючи зсув.
В результаті нульовий рівень активації відповідає мінімальному значенню, що зустрілося в навчальних даних, а одиничний рівень активації - максимальному значенню. Тим самим мережа може інтерполювати значення в діапазоні зміни навчальних даних, але не може екстраполювати за межами цієї області навіть тоді, коли дані самі напрошуються на це.
Надати мережі здатність до екстраполяції можна декількома способами.
1. Зменшити діапазон параметрів Мін/середн (Min/Mean) і Макс/cт.відхил. — (Max/SD) для шкалювання методом Мінімакс (Minimax) у порівнянні з областю значень активації (наприклад, до [0,2;0.8] для стандартної логістичної функції активації). Таким чином, з’явиться невелика можливість екстраполяції (сильна екстраполяція, як правило, не буває виправдана).
2. Використовувати лінійну функцію активації в останньому шарі мережі. Це робить можливою велику міру екстраполяції, хоча, зрештою, вихідний сигнал буде все одно насичений через насичених логістичних елементів у попередніх шарах мережі.
3. Достоїнством даного способу є можливість «тонкого настроювання» останнього шару за допомогою ітеративного навчання методом псевдозворотніх (Pseudo-Inverse).
Викиди. Регресійні мережі особливо чутливі до проблеми викидів. При використанні середньоквадратичної функції помилок (Squared Error function) точки, надто віддалені від основної маси, викликають непропорційно великий вплив на положення гіперплощин регресії. У випадку, коли такі точки насправді є аномаліями (наприклад, хибні точки, породжені збоями у вимірювальній апаратурі), вони можуть дуже погіршити якість результату.
Ось один з можливих способів вирішення цієї проблеми: навчити мережу, потім протестувати її на навчальних спостереженнях, знайти і відкинути ті з них, які дають дуже велику помилку, а потім знову навчити мережу. На останньому етапі спостереження з викидами потрібно помітити як невраховувані.
Якщо спостереження-викид пояснюється сумнівним значенням тільки якоїсь однієї змінної, то можна видалити саме те значення, в результаті чого програма буде трактувати це спостереження як таке, що має пропущене значення.
Інший підхід оснований на використанні функції помилок «міських кварталів» (Error function City-Block). Замість того, щоб при підрахунку помилки підсумовувати квадрати різниць за кожною змінною, тут підсумовуються просто модулі різниць. Без зведення до квадрату навчання стає набагато менш чутливим до викидів.
У той час як при використанні середньоквадратичної функції помилок «вплив», який окреме спостереження робить на положення гіперплощини, пропорційний відстані від нього до гіперплощини, у випадку функції помилок «міських кварталів» це зусилля однакове для всіх точок, і тільки лише напрямок залежить від того, по яку сторону від гіперплощини розташована точка. Насправді середньоквадратична функція помилок прагне знайти середнє значення, а функція помилок «міських кварталів» — медіану.
5. Часові ряди Велика кількість важливих задач формулюється в термінах аналізу часових рядів. Ціль тут полягає в тому, щоб спрогнозувати значення деякої (як правило, числової) змінної, знаючи попередні значення цієї або інших змінних. В пакеті ST Neural Networks мережу будь-якої архітектури можна навчити для аналізу часового ряду.
Для того, щоб зробити прогноз часового ряду, потрібно лише повідомити програму ST Neural Networks, як вона повинна формувати з даних спостережень, що відносяться до різних моментів часу, набори для навчання або виконання. Для цього, при побудові мережі потрібно зробити наступне:
1. Якщо змінна буде використовуватись і як вхідна (через її минулі значення), і як вихідна (майбутні значення), задайте їй тип Вхідна/вихідна (Input/Output) у вікні Редактор даних (Data Set Editor). У більшості задач аналізу часових рядів є всього одна змінна. Програма ST Neural Networks дозволяє працювати і з декількома змінними — як вхідними, так і вихідними.
2. Встановіть параметр Вікно Часу (Steps) в діалоговому вікні Створити мережу (Create Network), щоб повідомити програмі, скільки останніх значень змінної слід брати на вході.
3. Встановіть параметр Горизонт (Lookahead), щоб повідомити програмі, на скільки кроків вперед потрібно прогнозувати результат.
Частіше за все параметр Горизонт (Lookahead) встановлюється рівним одиниці, параметр Вікно Часу (Steps) варіюється в залежності від змісту задачі, і всі змінні, що використовуються мають тип Вхідна/вихідна (Input/Output). У випадку, коли прогнозується єдина вхідна/вихідна змінна з параметром Горизонт (Lookahead) рівним 1, програма ST Neural Networks може подавати результати прогнозу знову на вхід мережі.
Розглянемо приклад роботи для класичної задачі з квітами ірисів. Вибірка містить 4 вхідні характеристики і 1 вихідну, яка вказує на один з трьох класів квітів. Оскільки АК мережі вимагає багато часу для роботи, візьмемо скорочений варіант задачі про іриси усього з двадцятьма контрольними спостереженнями.
В одному з діалогових вікон (рис. 1) для автоматичного створення мережі можна відібрати типи мереж, що будуть аналізуватися. Вони упорядковані в порядку зростання складності навчання.
Рисунок 1 — ДВ для вибору мережі
Лінійні (Linear) мережі майже не вимагають навчання і включені сюди тому, що дають гарну крапку відліку для порівняння, ефективності різних методів. Мережі PNN і GRNN також досить прості, радіальні базисні функції (Radio Basis Functions) улаштовані трохи складно, трьохі чотирьохшарові, багатошарові перцептрони (Multilayer Perceptrons) — це дуже складні конструкції.
Оберемо НМ MLP для розв’язання задачі з квітами (рис 2).
Рисунок 2 — Файл з даними irisdat. sta
Для тришарового MLP пошук зводиться до вибору числа елементів у схованому шарі. Власне кажучи, це лінійний пошук для функції, що містить перешкоди (при різних прогонах навчання мережі, навіть з тим самим числом елементів, можуть виходити різні результати). На першому етапі застосовується тактика «захоплення у вилку»: передбачається, що мережа повинна містити не менш одного і не більш ніж задане число схованих елементів, що визначається евристично по числу неявних спостережень, що навчаються, потім застосовується розподіл навпіл для пошуку оптичного числа в цьому діапазоні. Оскільки пошук відбувається при наявності шуму, на цьому етапі не обов’язково буде знайдений абсолютний мінімум, і тому на другому етапі алгоритм переключається на один з варіантів методу «віджигу», у якому послідовно пробується різне число схованих елементів і пошук концентрується на «паї» більш перспективних ділянках. Звичайно перший етап завершується найбільше після десяти — п’ятнадцяти ітерацій, а другий етап може продовжуватися необмежений час.
Алгоритми, застосовувані для PNN і GRNN мереж дуже схожі, при цьому для визначення придатного коефіцієнта згладжування застосовується алгоритм одномірного пошуку. Алгоритми для мереж RBF і чотирьохшарових MLP улаштовані трохи складніше, оскільки пошук тут відбувається не на відрізку прямої, а на двовимірній сітці (у випадку мереж RBF у результаті пошуку визначається як число елементів, так і коефіцієнт згладжування).
Однак із труднощів, пов’язаних з таким алгоритмом пошуку, полягає в тому, що мережа великого розміру може давати такі ж результати за якістю, як і невеликі і, отже, більш краща мережа. Як ми вже знаємо, занадто великі за розміром мережі страждають від перенавчання, і якщо в задачі є контрольна безліч, то алгоритм має можливість це визначити. Однак, по природних розуміннях ефективності, алгоритм навчання MLP (спуск по сполучених градієнтах) використовується тут у варіанті з ранньою зупинкою, тобто він зупиняється, як тільки контрольна помилка починає рости, а тим самим у момент зупинки навчання знаходиться в найкращому стані з досягнутих на той час. Унаслідок цього застосовується алгоритм виявляється менш чуттєвим до перенавчання, чим це можна було б очікувати.
Щоб врахувати ці обставини, можна задати спеціальний коефіцієнт Штраф за елемент (Unit Penally). Він визначає величину штрафу, що помножується на число елементів у мережі і визначається до її помилки перед рішенням питанням про те, яка мережа краще. Тим самим мережа з великим числом елементів повинна виправдати свій розмір, тобто давати істотно меншу помилку. Навіть дуже маленький коефіцієнт (наприклад, 0,001) буде впливати на те, щоб при інших рівних перевага віддавалася мережам, чиї розміри менші.
На нашій невеликій навчальній задачі цей алгоритм можна прогнати в інтерактивному режимі. Задавайте значення параметра Штраф за елемент (Unit Penally) рівним 0,001 і виберіть типи мереж Лінійні (Linear), Радіальні базисні функції (Radio Basis Functions) і Тришарові багатошарові перцептрони (Three Layer Multilayer Perceptrons). По завершенню алгоритму знову створена найкраща мережа буде завантажена замість поточної мережі (якщо така була).