Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_практ.doc
Скачиваний:
7
Добавлен:
19.02.2016
Размер:
7.08 Mб
Скачать

Навчання

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]