Відбір даних для подачі до входу нейронної мережі

Тип работы:
Реферат
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

ВІДБІР ДАНИХ ДЛЯ ПОДАЧІ ДО ВХОДУ НЕЙРОННОЇ МЕРЕЖІ

Содержание

  • 1. Представлення типів даних
  • 2. Подальша обробка
  • 3. Генетичний алгоритм відбору вхідних даних
  • 4. Нелінійне пониження розмірності
  • 5. Пропущені значення
  • 6. Створення нового набору даних

1. Представлення типів даних

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

Представлення змінних. Безперервні (числові) значення представляються однією числовою змінною. Усі питання, пов’язані з діапазоном значень, вирішуються в системі ST Neural Networks шляхом масштабування (шкалування), яке є складовою частиною процедури препостпроцесування.

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

Нормальні змінні (атрибути) в ST Neural Networks мають спеціальне представлення як номінальні змінні. Спеціальні засоби дозволяють перетворювати їх до вигляду, зрозумілого для нейронної мережі. Приклад номінальної змінної: Рід (Gender) — Чол (Male), Жін (Female). Номінальні змінні з двома станами, які приймають два значення, представляються в бінарному вигляді (змінній відповідає один елемент мережі, котрий або активується, або не залежить від значення змінної).

Будь-яку номінальну змінну можна записати методом кодування 1-із-N: при цьому одній номінальній змінній відповідають N елементів мережі (тут N — число різних номінальних значень змінної), один з яких може бути активним, а інші - ні. Кодування методом 1-із-N — це стандартний спосіб запису номінальних змінних, які можуть приймати більше двох значень. Для змінних, що приймають тільки два значення, стандартним є бінарне представлення, хоча можна використовувати і кодування l-із-N (за одним виключенням: вихідна змінна імовірнісної нейронної мережі завжди кодується методом 1-із-N).

Якщо номінальна змінна приймає багато різних значень, то можна використовувати метод кодування N-в-1, різним варіантам відповідають різні цілочисельні значення єдиної змінної. В пакеті STNN для цього потрібно обрати варіант кодування: Явне (Explicit), Мінімакс (Minimах) або Ні (None). Різним номінальним значенням будуть відповідати числа 1,2,3,., після чого вони будуть природним чином упорядковані.

Текстові рядки. Нейронна мережа не зможе обробляти довільні рядки тексту, поки їй не буде вказаний спосіб приписування їм числових значень або 1-із-N кодів.

2. Подальша обробка

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

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

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

нейронна мережа генетичний алгоритм

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

При роботі з пакетом ST Neural Networks є два способи відбору змінних: метод спроб і помилок та Генетичний алгоритм відбору вхідних даних (Genetic Algorithm Input Selection).

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

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

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

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

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

Цю процедуру можна прискорити, працюючи з випадковою підмножиною спостережень. Для цього потрібно задати невелику кількість навчальних і контрольних спостережень, число тестових спостережень покласти рівним нулю, а потім застосувати операцію Змішати все (Shuffle All) (меню Правка/Змінні - Edit/Case).

3. Генетичний алгоритм відбору вхідних даних

Генетичний алгоритм відбору вхідних даних (Genetic Algorithm lnput Selection) пакета STNN реалізує автоматизований підхід до вибору значимих вхідних даних.

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

Кожний можливий варіант набору вхідних змінних можна представити у вигляді бітової маски. Нуль у відповідній позиції означає, що ця вхідна змінна не включена до вхідного набору, одиниця — що включена. Таким чином, маска представляє собою рядок бітів — по одному на кожну можливу вхідну змінну — і Генетичний алгоритм відбору вхідних даних (Genetic Algorithm Input Selection) оптимізує такий бітовий рядок.

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

4. Нелінійне пониження розмірності

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

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

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

Для того, щоб виконати нелінійне зниження розмірності, потрібно використати п’ятишарову мережу автоасоціативної пам’яті. Її середній шар служить для зменшення розмірності, а сусідні з ним шари, що відокремлюють його від вхідного і вихідного шарів, виконують нелінійні перетворення. Щоб здійснити нелінійне зниження розмірності за допомогою автоасоціативної мережі в пакеті ST Neural Networks, потрібно:

1. Сформулювати навчальний набір даних для автоасоціативної мережі.

2. Вихідні змінні оголосити невраховуваними, а вхідним змінним присвоїти тип Вхідна/вихідна (Input/Output).

3. Побудувати автоасоціативну MLP-мережу з п’ятьма шарами. В середньому схованому шарі повинно бути менше елементів, ніж у вхідному і вихідному шарах. У двох проміжних шарах, що залишилися, повинно бути достатньо велике (і однакове) число елементів.

4. Навчити автоасоціативну мережу на підготовленій навчальній множині. Тут годиться будь-який ітеративний алгоритм навчання (наприклад, спуск по сполученим градієнтам).

5. Видалити два останніх шари автоасоціативної мережі (кнопкою Видалити (Delete) у вікні Редактор мережі (Network Editor). В результаті вийде мережа для препроцесування, що зменшує розмірність. За допомогою препроцесуючої мережі отримати версію вхідних даних у зменшеній розмірності. Скопіювати ці дані з вікна Прогнати набір даних (Run Data Set) у вікно Редактор даних (Data Set Editor), замінивши ними початкові вхідні, але залишивши вихідні змінні. Таким чином, буде побудована навчальна множина для зниження розмірності.

6. Побудувати іншу (обробну) мережу і навчити її на побудованій на попередньому кроці.

7. За допомогою команди Мережа (Network) додати (Append) меню Файл/Відкрити (Fife/Open) додати обробну мережу до препроцесуючої мережі. При цьому буде побудована єдина мережа, яка одночасно препроцесує і обробляє дані.

5. Пропущені значення

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

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

Крім цього, засоби керування пропущеними значеннями є в Редакторі даних (Data Set Editor). Там, де це можливо, слід відкидати або змінні, у яких багато пропущених значень, або спостереження з пропущеними значеннями. Можна обрати будь-який варіант і наказати програмі ST Neural Networks автоматично виявляти і відкидати відповідні змінні або спостереження.

6. Створення нового набору даних

Для створення нового набору даних необхідно виконати таку послідовність дій:

Увійти до діалогового вікна Create Data Set за допомогою команди Data Set із меню File New. Увести значення числа вхідних та вихідних змінних. Натиснути на кнопку Create. При створенні нового набору даних програма STNN автоматично відкриває вікно Data Set Editor, основним елементом якого є таблиця, яка містить всі спостереження набору даних. На початку таблиця матиме одну строчку, а значення всіх змінних будуть невідомими (позначені знаком запитання). У вхідних змінних заголовок стовпця чорного кольору, у вихідних — блакитного; входи від виходів відокремлюються чорною вертикальною лінією. Створимо набір даних для розв’язання задачі «виключаючого або». Є дві вхідні змінні (VAR1, VAR2), та одна вихідна (VAR3), як показано на рис. 1.

Для додавання чергової строчки просто натисніть на кнопку Enter. Для видалення зайвих строчок, виділіть їх мишею і натисніть кл. CTRL+X. У пакеті є можливість надавати імена окремим спостереженням та змінним. Для цього подвійним натисканням в середній частині мітки стрічки даного спостереження або змінної установити текстовий курсор та ввести необхідне ім'я. За замовчуванням як мітки стрічки або стовпця береться її/його номер. Для призначення типу змінної обирають змінну, клацнувши на мітці відповідного стовпця, а потім натиснувши праву кнопку мишки, призначають необхідний тип Input, Output, Input/Output, Ignored. Таким же чином задають номінальну змінну, задають тип підмножини.

Рисунок 1 — Вікно із файлом даних

Створити нову мережу у пакеті STNN можна засобами діалогового вікна Create Network, доступ до якого здійснюється через File New/Network. Можна створити мережу, користуючись автоматичним конструктором мережі. Є функція поради Advise, яка дозволяє автоматично конфігурувати більшість характеристик мережі за набором вихідних даних. Треба обрати тип мережі із випадаючого списку Type, наприклад Multilayer Perceptron. Натиснути кнопку Advise.

Рисунок 2 — Параметри Н М для «виключаюче або»

Програма установить параметри за замовчуванням для препостпроцесування і конфігурацію мережі, виходячи із типу змінних. Натисніть на кнопку Creаte і в результаті буде створена нова мережа. Для задачі «виключного або» необхідна мережа із трьома шарами: вхідним шаром із двох елементів, проміжним шаром теж із двох елементів і вихідним шаром із одного (рисунок 2).

Діалогове вікно Creаte Network містить дві таблиці: та, що ліворуч, призначена для препостпроцесування змінних, а та, що праворуч — власне для задавання параметрів мережі. Натиснувши на кнопку Advise можете бути впевнені, що препостпроцесування змінних буде проведено відповідно до типу даних і що кількість шарів мережі та елементів кожного шару обрано розумно. Якщо ви точно наслідували всім інструкціям, то отримаєте мережу, як показано на рис. 3.

Рисунок 3 — Топологія НМ для «виключаюче або»

Наступний крок після задавання набору даних та побудови нейронної мережі - це її навчання. В пакеті STNN реалізовано такі основні алгоритми навчання багатошарового перцептрону: метод зворотного поширення, спряжених градієнтів та Левенберга-Маркара. Проведемо навчання мережі для розв’язання задачі «виключаюче або» методом зворотного поширення. Відкрийте вікно Training Error Graph за допомогою Statistics/Training Graph (рисунок 4).

Рисунок 4 — Графік помилки навчання НМ

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

Режим роботи алгоритму зворотного поширення залежить від ряду параметрів, більшість яких зібрано у діалоговому вікні Back propagation (рис. 5).

Рисунок 5 — Діалогове вікно алгоритму навчання Back propagation

Для більшості задач добрим початковим наближенням будуть значення, які надаються за замовчуванням, однак за необхідністю їх можна змінити, як, наприклад для задачі «виключаюче або». На рис. 5 Epochs означає кількість епох, які проходять при одному натисканні на кл. Train. Значення 100 цілком прийнятно. Learning rate — швидкість навчання, при збільшенні якої алгоритм працює швидше, але в деяких задачах це може призвести до нестійкості (особливо, якщо дані зашумлені). Для задачі «виключаюче або» підходить відносно висока швидкість, наприклад, 0,9. Momentum — інерція, яка покращує навчання в ситуаціях, коли помилка мало змінюється, а також придає алгоритму додаткову стійкість. Значення даного параметру завжди повинно знаходитись у межах [0,1). Рекомендується використовувати високу швидкість навчання у сполученні з невеликим коефіцієнтом інерції і навпаки. Однак, у задачі «виключаюче або» обидва параметри необхідно взяти великими, наприклад, 0,9. При використанні функції Shuffle Cases порядок, в якому спостереження надходять до входу мережі, змінюється кожної нової епохи. При таких настройках параметрів задача «виключаюче або» розв’язується приблизно за 200 ітерацій.

Якщо треба порівняти результати роботи алгоритму за різними варіантами, натисніть кнопку Reinitialize діалогового вікна Back propagation. В результаті вага мережі заново буде встановлена випадковим чином для початку нового сеансу навчання. Якщо тепер натиснути на кнопку Train, на графіку почне відображатися нова лінія. Щоб зробити порівняння наглядним, треба ввести значення до поля Label у вікні Training Graph, тоді наступна лінія малюватиметься іншим кольором, а указана мітка виведеться праворуч від графіка як умовна позначка.

У вікні Training Graph надається сумарна помилка мережі, однак іноді виникає необхідність прослідкувати за тим, як алгоритм навчання сприймає окремі спостереження. У пакеті STNN помилки окремих спостережень надаються у вигляді гістограми у вікні Case Errors.

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

При запуску мережі на поточному наборі даних можливі два варіанти: обробляти окремі спостереження, або всю множину разом. Для обробки окремих спостережень слугує вікно Run Single Case. Для тестування мережі за усім набором даних слугує вікно Run Data Set (рис. 6), у якому є (зліва направо): фактичні виходи мережі, цільові вихідні значення, помилки, тобто різниця між першими та другими і сумарна помилка за кожним спостереженням. Над таблицею наводиться кінцева середньоквадратична помилка.

Рисунок 6 — Діалогове вікно навчання набору даних

Для наочного зображення навчальної вибірки у меню Run/Cluster Diagram надається можливість на площині XOY відобразити характеристики, як це наприклад зроблено для задачі «виключаюче або» (рис. 6):

Рисунок 6 — Графік розподілу елементів навчальної вибірки для задачі «виключаюче або»

Після остаточного навчання мережі у пункті меню Run/Response Graph та Surface можна наочно побачити результати навчання нейронної мережі. Для задачі «виключаюче або» такі результуючі графіки наведено на рис. 7):

Рисунок 7 — Результуючі графіки навчання мережі

ПоказатьСвернуть
Заполнить форму текущей работой