Керуючі елементи NNTool

Щоб запустити NNTool, необхідно виконати одноїменну команду в командному вікні MATLAB:

>> nntool

після цього з'явиться головне вікно NNTool, іменоване "Вікном керування мережами і даними" (Network/Data Manager) (рис. 1).

Рис. 1. Головне вікно NNTool

Панель "Мережі і дані" (Networks and Data) має функціональні клавіші з наступними призначеннями:

· Допомога (Help)- короткий опис керуючих елементів даного вікна;

· Нові дані (New Data...)- виклик вікна, що дозволяє створювати нові набори даних;

· Нова мережа (New Network...)- виклик вікна створення нової мережі;

· Імпорт (Import...)- імпорт даних з робочого простору MATLAB у простір змінних NNTool;

· Експорт (Export...)- експорт даних із простору змінних NNTool у робочий простір MATLAB;

· Вид (View)- графічне відображення архітектури обраної мережі;

· Видалити (Delete)- видалення обраного об'єкта.

На панелі "Тільки мережі" (Networks only) розташовані клавіші для роботи винятково з мережами. При виборі покажчиком миші об'єкта будь-якого іншого типу, ці кнопки стають неактивними. При роботі з NNTool важливо пам'ятати, що клавіші View, Delete, Initialize, Simulate, Train і Adapt (зображені на рис. 1 як неактивні) діють стосовно до того об'єкта, що відзначений у даний момент виділенням. Якщо такого об'єкта немає, або над виділеним об'єктом неможливо зробити зазначену дію, відповідна клавіша неактивна.

Розглянемо створення нейронної мережі за допомогою NNTool на прикладі.

Приклад 1.

Нехай потрібно створити нейронну мережа, що виконує логічну функцію "І".

Створення мережі

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

Перед створенням мережі необхідно заготовити набір навчальних і цільових даних. Складемо таблицю істинності для логічної функції "І", де P1 і Р2 - входи, а А - бажаний вихід (табл. 1).

Табл. 1. Таблиця істинності логічної функції "І"

P1 P2 A
     
     
     
     

Щоб задати матрицю, що складається з чотирьох векторів-рядків, як вхідну, скористаємося кнопкою New Data. У вікні, що з'явилося, варто зробити змінними, показані рис. 2, і натиснути клавішу "Створити" (Create).

Рис. 2. Завдання вхідних векторів   Рис. 3. Завдання цільового вектора  

 

Після цього у вікні керування з'явиться вектор data1 у розділі Inputs. Вектор цілей задається аналогічно (рис. 3).

Після натискання на Create у розділі Targets з'явиться вектор target1. Дані в поле "Значення" (Value) можуть бути представлені будь-яким зрозумілим MATLAB виразом. Приміром, що визначення вектора цілей можна еквівалентно замінити рядком виду

bitand([0 0 1 1], [0 1 0 1]).

Тепер варто приступити до створення нейронної мережі. Вибираємо кнопку New Network і заповнюємо форму, як показано на рис. 4.

При цьому поля несуть наступні значеннєві навантаження:

· Ім'я мережі (Network Name) - це ім'я об'єкта створюваної мережі.

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

· Вхідні діапазони (Input ranges)- матриця з числом рядків, рівним числу входів мережі. Кожен рядок являє собою вектор із двома елементами: перший - мінімальне значення сигналу, що буде подано на відповідний вхід мережі при навчанні, другий - максимальне. Для спрощення введення цих значень передбачений список, що випадає, "Одержати з входу" (Get from input), що дозволяє автоматично сформувати необхідні дані, вказавши ім'я вхідної змінної.

· Кількість нейронів (Number of neurons)- число нейронів у шарі.

· Передатна функція (Transfer function)- у цьому пункті вибирається передатна функція (функція активації) нейронів.

· Функція навчання (Learning function)- функція, що відповідає за відновлення ваг і зсувів мережі в процесі навчання.

Рис. 4. Вікно "Створення мережі"     Рис. 5. Попередній перегляд створюваної мережі  

 

За допомогою клавіші "Вид" (View) можна подивитися архітектуру створюваної мережі (рис. 5).Так, ми маємо можливість упевнитися, чи всієї дії були зроблені вірно. На рис. 5 зображена персептронная мережа з вихідним блоком, що реалізує передатну функцію з твердим обмеженням. Кількість нейронів у шарі дорівнює одному, що символічно відображається розмірністю вектора-стовпця на виході шару і вказується числом безпосередньо під блоком передатної функції. Розглянута мережа має два входи, тому що розмірність вхідного вектора-стовпця дорівнює двом.

Отже, структура мережі відповідає нашому завданню. Тепер можна закрити вікно попереднього перегляду, натиснувши клавішу "Закрити" (Close), і підтвердити намір створити мережу, натиснувши "Створити" (Create) у вікні створення мережі.

У результаті пророблених операцій у розділі "Мережі" (Networks) головного вікна NNTool з'явиться об'єкт з ім'ям network1.

Навчання

Наша мета - побудувати нейронну мережу, що виконує функцію логічного «І». Очевидно, не можна розраховувати на те, що відразу після етапу створення мережі остання буде забезпечувати правильний результат (правильне співвід-ношення "вхід/вихід"). Для досягнення мети мережу необхідно належним образом навчити, тобто підібрати придатні значення параметрів. У MATLAB реалізована більшість відомих алгоритмів навчання нейронних мереж, серед яких представлене два для персептронних мереж розглянутого виду. Створюючи мережу, ми вказали LEARNP як функцію, що реалізує алгоритм навчання (рис. 4).

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

Відзначивши покажчиком миші об'єкт мережі network1, викличемо вікно керування мережею натисканням кнопки Train. Перед нами виникне вкладка "Train" вікна властивостей мережі, що містить, у свою чергу, ще одну панель вкладок (рис. 6).Їхнє головне призначення - керування процесом навчання. На вкладці "Інформація навчання" (Training info) потрібно вказати набір навчальних даних у поле "Входи" (Inputs) і набір цільових даних у поле "Мети" (Targets). Поля "Виходи" (Outputs) і "Помилки" (Errors) NNTool заповнює автоматично. При цьому результати навчання, до яких відносяться виходи і помилки, будуть зберігатися у змінних із зазначеними іменами.

Рис. 6. Вікно параметрів мережі, відкрите на вкладці "навчання" (Train)   Рис. 7. Вкладка параметрів навчання    

 

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

На вкладці "Параметри навчання" (Training parameters) для нашої мережі (рис. 7)можна установити наступні поля:

· Кількість епох (epochs)- визначає число епох (інтервал часу), по закінченню якого навчання буде припинено.

· Епохою називають однократне представлення всіх навчальних вхідних даних на входи мережі.

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

· Період відновлення (show)- період відновлення графіка кривої навчання, виражений числом епох.

· Час навчання (time)- після закінчення зазначеного тут часового інтервалу, вираженого в секундах, навчання припиняється.

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

Наступна вкладка "Необов'язкова інформація" (Optional Info) показана на рис. 8.

Рис.8.Вкладка необов'язкової інформації   Рис. 9. Крива навчання  

 

Розглянемо вкладку навчання (Train). Щоб почати навчання, потрібно натиснути кнопку "Навчити мережа" (Train Network). Після цього, якщо в даний момент мережа не задовольняє жодній з умов, зазначених у розділі параметрів навчання (Training Parameters), з'явиться вікно, що ілюструє динаміку цільової функції - криву навчання. У нашому випадку графік може виглядати так, як показано на рис. 9. Кнопкою "Зупинити навчання" (Stop Training) можна припинити цей процес. З малюнка видно, що навчання було зупинено, коли функція мети досягла установленої величини (goal = 0).

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

Отже, алгоритм навчання знайшов точне рішення задачі. У методичних цілях переконаємося в правильності рішення задачі шляхом прогону навченої мережі. Для цього необхідно відкрити вкладку "Прогін" (Simulate) і вибрати в списку, що випадають, "Входи" (Inputs) заготовлені дані. У даній задачі природно використовувати той же набір даних, що і при навчанні data1. При бажанні можна установити прапорець "Задати мети" (Supply Targets). Тоді в результаті прогону додатково будуть розраховані значення помилки. Натискання кнопки "Прогін мережі" (Simulate Network) запише результати прогону в змінну, ім'я якої зазначено в полі "Виходи" (Outputs). Тепер можна повернутися в основне вікно NNTool і, виділивши мишею вихідну змінну network1, натиснути кнопку "Перегляд" (View). Вміст вікна перегляду збігається зі значенням вектора цілей - мережа працює правильно.

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

Повернемося до вкладки "Необов'язкова інформація" (Optional Info) (рис. 8).Щоб зрозуміти, якої мети служать представлені тут параметри, необхідно обговорити два поняття: перенавчання й узагальнення.

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

Для попередження перенавчання застосовується наступна техніка. Дані поділяються на дві множині: навчальну (Training Data) і контрольну (Validation Data). Контрольна множина у навчанні не використовується. На початку роботи помилки мережі на навчальномій і контрольній множинаах будуть однаковими. У міру того, як мережа навчається, помилка навчання убуває, і, поки навчання зменшує дійсну функцію помилки, помилка на контрольній множині також буде убувати. Якщо ж контрольна помилка перестала убувати чи навіть стала рости, це вказує на те, що навчання варто закінчити. Зупинка на цьому етапі називається ранньою зупинкою (Early stopping).

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

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

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

Навчання мережі можна проводити в різних режимах. У зв'язку з цим, у NNTool передбачено дві вкладки, що представляють навчальні функції: розглянута раніше вкладка Train і "Адаптація" (Adapt). Adapt уміщає вкладку інформація адаптації (Adaption Info), на якій містяться поля, схожі по своєму призначенню з полями вкладки Training Info і виконують ті ж функції і вкладку параметри адаптації (Adaption Parameters). Остання містить єдине поле "Проходи" (passes). Значення, зазначене в цьому полі, визначає, скільки разів усі вхідні вектори будуть представлені мережі в процесі навчання.

Параметри вкладок "Train" і "Adapt" у MATLAB використовуються функ-ціями train і adapt, відповідно. Докладна довідкова інформація з цих функцій приведена в у HELP-файлі.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: