Нейроемулятори
Доступність і зростаючі обчислювальні можливості сучасних комп'ютерів привели до широкого поширення програм, що використовують принципи нейромережної обробки даних, але виконаних на традиційних комп'ютерах. Цей підхід орієнтується на здатність нейромереж вирішувати формалізовані задачі.
Переваги таких "віртуальних" нейрокомп'ютерів для відносно невеликих завдань очевидні:
- Не треба витрачатися на нову апаратуру, якщо можна використати комп'ютери загального призначення.
- Користувач не повинен освоювати особливості програмування на спец-процесорах і способи їх сполучення з базовим комп'ютером.
- Універсальні ЕОМ не накладають жодних обмежень на структуру мереж і способи їх навчання, тоді як спец-процесори найчастіше мають обмежений набір «зашитих» функцій активації і досягають пікової продуктивності лише на певному колі завдань.
Нейропрограмне забезпечення можна розділити на готові нейропакети загального призначення, більш дорогі системи розробки нейрозастосувань, що мають більше можливостей, але вимагають і більших знань, і, нарешті, готові комплексні рішення з елементами нейромережної обробки інформації, зазвичай прихованими від очей користувача.
Серед нейропакетів freeware в Інтернет можна знайти групу демонстраційних програм, використання яких дозволяє наочно демонструватирізні властивості нейромереж. Є серед цієї групи прості, що дозволяють демонструвати окремі властивості нейромереж, такі, як Sharky, Kohonen, EasyDemo, і складні пакети - для демонстрації груп властивостей, до яких можна віднести і такий комерційний пакет, як Матлаб.
Нейромережа для класифікації Sharky Neural Network
Sharky Neural Network - це комп'ютерна програма фірми SharkTime Software для демонстрації можливостей нейромережного класифікатора. Програма freeware, працює під ОС Windows різних версій.
Програма реалізує нейронну мережу типу багатошарового перцептрона, що призначена для класифікації 2D-точок в два різних класи: жовтий і синій. Кожна множина 2D-точок представляє геометричну фігуру (форму) - коло, квадрат, діамант, хвилю, місяць або іншу фігуру. Програма при класифікації не визначає форму, вона просто розподіляє всі крапки на дві групи: сині та жовті. Геометрична форма розпізнаваних фігур при цьому проявляється при візуалізації результату класифікації.
Вихідні дані можна завантажити тільки у вигляді визначеного образу з кількох наявних заготовок (xor, circle, square, diamond, ring, moon, wave тощо). На сайті можна завантажити додаткові файли «AI.points», «cn.points», «N.points», «Two_Spirals_Cartesian.points» і Two_Spirals_Radial.points».
Програма дозволяє вносити зміни у вихідні дані: додавати, видаляти, завантажувати або зберігати точки. Комбінація клавіш Ctrl + Left Click дозволяє працювати в режимі spray (додавати групу розсіяних навколо кліку точок).
При активізації програми на екрані з'являється основне вікно (рис.1).
Рис.1. Інтерфейс нейроемулятора Sharky Neural Network
Основне меню програми містить 5 пунктів:
- Network – нейромережа.
- Shape - тип (форма) вихідних даних.
- Points - робота з вихідними точковими множинами.
- View - спосіб демонстрації даних на екрані.
- Help - допомога.
З нейромережею можна проводити наступні дії: «Запуск», «Зупинка» (Stop), «Оновлення мережі» (Reset Network), «Навчання» (Learn), «Вихід з програми» (Exit). Команди для Запуску і Зупинки винесені на другий рядок екрана (Learn і Stop), причому, кнопка запуску містить назву операції, яка буде виконуватися (в даному прикладі виконуватися буде навчання (Learn)) - яка саме операція буде виконуватися, вибирається в пункті меню Network.
Структура нейромережі задається у вигляді кількості шарів перцептрону і кількості нейронів в кожному шарі (вхідний і вихідний шари завжди містять по 2 нейрона).
У програмі використовується структура нейромережі 2: ...: 2. Перша цифра 2 означає «Два входи», оскільки кожна 2D-точка має два значення - х і у. Символ 2 в кінці означає «2 виходи», оскільки ця мережа класифікує точки на 2 різних класи (жовтий, синій).
Для завдання типу мережі пропонується знайти і відзначити в таблиці потрібну структуру (Network Structure). Тип мережі вибирається з наступного списку (рис.2):
Рис. 2. Вибір структури нейромережі
- 2:2 означає двохшаровий перцептрон з 2 нейронами у вхідному шарі і 2 - в вихідному.
- 2:9:2 означає тришаровий перцептрон з 9 нейронами в проміжному шарі;
- 2:5:5:5:2 означає п'ятишаровий перцептрон з 5 нейронами в кожному з 3 проміжних шарів.
Кожен нейрон має зміщення (bias) і використовує двохполярний сигмоїд як функцію активації f (x) = 2 / (1 + e-βx) -1
Обрана архітектура мережі наочно відображається схемою в лівій частині екрана (рис.3).
Рис. 3. Відображення архітектури нейромережі
Режим навчання налаштовується при натисканні кнопки Learn в 3 рядку екрану. Для навчання істотними є такі параметри, як порядок пред'явлення зразків (Order), фіксація помилок (Premphase Error), перевірка (Verify), числові значення ni (min і max), auto decrease (фіксоване значення 0,912), down rate, momentum (рис.4а). Крім того, встановлюються такі параметри, як режим навчання (Hard, Normal або Soft) і кількість епох (від 1 до 10000) (рис.4б).
Рис. 4а. Вибір параметрів режиму навчання |
Рис.4б. Налаштування режиму навчання |
В пункті меню View обираються параметри, що будуть впливати на вигляд результату 2D Graph, на якому може бути відображено: осі координат (Coordinate Axis), тільки множина точок (Points), точки і відповідь нейромережі (Points and Network Answer) тощо (рис.5).
Рис.5. Параметри пункту меню View
Для полегшення сприйняття різні види інформації фарбуються в різні кольори. Передбачено регулювання частоти зміни інформації на екрані (рис.6).
Рис.6. Зафарбовування різних видів інформації
При вирішенні завдання XOR для очищення екрана в меню Points вибирається пункт Clear Points. Потім Shape -> XOR. При виборі XOR зона графіки заповнюється множинами точок, синіх - 1 і жовтих – 2 (рис.7).
Рис.7. Множина точок для вирішення завдання XOR
Координати точок (їх всього 400) можна зберегти в файлі (Points -> Save Points As ...). Файл зберігається у форматі *.points, для перегляду можна скористатися редактором Блокнот (рис.8).
Рис. 8. Фрагмент вмісту файлу з координатами точок
Після натискання кнопки Learn через деякий час (кілька секунд) Отримаємо результат у вигляді жовтої і синьої зон екрану (рис. 9а). Незначні зміни налаштувань в розглянутому прикладі дозволяють змінити результат в сторону уточнення класифікації (рис. 9б):
Рис. 9а-б. Результат класифікації
Змінюючи структуру нейромережі (кількість шарів і кількість нейронів в кожному шарі), кількість епох, параметри навчання (критерії закінчення), способи виведення інформації на екран і коригуючи запропоновані графічні образи, можна побачити, як впливають різні параметри на розпізнавання досліджуваної множини точок.
При наявності навчальної та тестової множин точок за графіками в нижній частині основного екрана можна побачити момент перенавчання мережі та скорегувати необхідну кількість епох.
Практичне застосування нейроемулятора
Для практичного засвоєння нейроемулятора наведено кроки роботи (А, Б, В) на прикладі класифікації фігури подвійної спіралі
Крок А. Підготовка вихідних даних.
Для підготовки вихідних даних в меню Points вибирається пункт Clear Points, щоб очистити вікно (Рис. 10 а-б).
Рис. 10а. Вибір Clear Points для очищення вікна |
Рис. 10б. Вибір команди Generate Points |
Рис. 11. Діалогове вікно Generate Points.
Після натиску на кнопку «Generate», генеруються нові групи точок (рис.12а, 12б,12в):
Рис.12а,б,в. Генерація точок за розподіленням Circle Cartesian |
Якщо змінити налаштування на Square Radial чи Square Cartesian, то отримуються нові конфігурації точок (Рис.13 а, б).
Рис. 13а. Розподілення Square Radial |
Рис. 13б. Розподілення Square Cartesian |
Після додавання умови «Мінімальна дистанція між класами» (рис.14а) отримується наступний вигляд (рис.14б).
Рис. 14а. Вибір значення дистанції |
Рис. 14б. Розподілення з врахуванням дистанції |
Встановлюється умова «Мінімальна дистанція всередині класів» (Рис. 15а). Остаточний вигляд налаштованої множини точок (рис. 15б).
Рис. 15а. Вибір значення дистанції |
Рис. 15б. Розподілення з врахуванням дистанції |
Утворений набір точок зберігається командою Points – Save Points As (рис.16).
Рис. 16. Збереження налаштованого набору точок «Two Spirals Cartesian»
Крок Б. Використання нейроемулятора для контрастування нейронної мережі.
Контрастування нейронної мережі служить для спрощення її архітектури, зменшення числа вхідних сигналів і зниження вимог до точності і кількості вхідних сигналів.
Послідовність роботи:
- Створити, навчити і перевірити нейромережу в Sharky, що вирішує завдання класифікації точок "Two Spirals Cartesian". Привести і розшифрувати графіки, що характеризують навчання.
- Змінюючи різні параметри мережі, визначити характеристики, що отримані у всіх дослідах, і на їх основі виявити мінімальне число шарів і нейронів, коли завдання ще вирішується.
- За рахунок зміни кількості епох визначити їх оптимальну кількість для навчання розглянутого типу мережі.
- Описати, як впливають регульовані параметри на ефективність навчання.
- Виявити умови, при яких відбувається перенавчання мережі.
1. Створення і навчання нейромережі
Для початку завантажується власний набір точок. У верхньому меню вибирається пункт: Points - Open Points – Потрібний файл (рис.17а). Після вибору в полі відображається множина точок, що була збережена у попередньому кроці (рис.17б):
Рис. 17а. Вибір команди на завантаження набору точок |
Рис. 17б. Відображення завантаженого набору точок «Two Spirals Cartesian» |
Для навчання вибираємо чотиришарову мережу з 10 нейронами на кожному з двох прихованих шарів і з 2 нейронами на вході і виході. (2:10:10:2), режим навчання Learn (Normal), всі параметри залишаються за замовчуванням (рис 18а,б).
Рис. 18а,б. Налаштування режиму навчання зі всіма параметрами і архітектурою мережі |
Навчання мережі
Дане завдання було вирішено за 2810 епох, при цьому відсоток помилки склав 1%. Числове значення швидкості навчання (ni) склало 0,015 (Рис.19).
Рис.19. Результат навчання мережі
Під спіраллю відображається трьохколірний графік.
- Зеленою лінією позначено значення середньоквадратичної помилки. На даному прикладі це значення зменшується, але має 7 великих стрибків. У ці моменти в мережі спостерігалося перенавчання.
- Яскраво-червоною лінією позначено просту помилку, вона теж монотонно убуває, маючи ті ж 7 стрибків у моменти перенавчання.
- Бордовою лінією позначено помилку перевірки, яка не має значних стрибків і змін.
Після навчання мережі, можна здійснити її контрастування.
2. Контрастування навченої мережі.
а. Зміна архітектури мережі та аналіз характеристик навчання.
Для початку можна змінити архітектуру мережі, а саме, третій прихований шар з 10 нейронами замінити на 5 нейронів (рис.20).
Рис.20. Навчання мережі з архітектурою 2:10:5:2
Дане завдання виконане за 3330 епох (тобто часу знадобилося більше), причому відсоток помилки становить 4,75%, що в 4 рази більше за попередній результат. За графіками внизу видно, що до кінця навчання виникає явне перенавчання, тобто якби не було натиснута кнопка Stop, помилка б почала збільшуватися ще більше. Числове значення швидкості навчання не змінилося (0,015).
Тепер спробуємо зменшити кількість нейронів і в другому, і в третьому шарах, а саме, виберемо структуру 2:5:5:2. Інші параметри залишимо незмінними (рис.21).
Рис. 21. Навчання мережі з архітектурою 2:5:5:2
Така мережа не справляється з поставленим завданням: на графіках явно видно перенавчання, яке веде до величезної помилку (ми зафіксували 25% на 11841 епохах, але вона може збільшитися ще). Таким чином, зменшувати більше число нейронів не можна.
Спробуємо змінити кількість шарів нейронів. Зменшимо наше число шарів до 3, а саме, виберемо структуру 2:25:2 (Рис 22).
Рис.22. Навчання мережі з архітектурою 2:25:2
Трьохшарова мережа з цим завданням також не справляється. Помилка коливається від 40 до 45% і не зменшується. При заміні 25 нейронів прихованого шару на 50 і 100 результат не змінюється, процес лише сповільнюється.
Який висновок можна зробити? Мінімальна мережа, що вирішує дану задачу складається з 4 шарів, на прихованих шарах якої не менше 15 нейронів. (Тобто архітектури 2:10:5:2, 2:10:10:2 справляються).
б. Визначення мінімальної кількості епох для виконання завдання.
Відкинемо всі мережі нижче чотиришарових і визначчемо мінімальне число епох, за яке впораються мережі 2:10:10:2 і 2:10:5:2.
Можна змінити значення ni, а саме від 0,90 зробити 0,02. Розглянемо архітектуру 2:10:10:2. Кількість епох, за які завдання було виконано, зменшилася з 2810 до 2522 (рис.23).
Рис. 23. Робота мережі 2:10:10 2 зі зміненим ni
Якщо змінити Down Rate з 0,99977 до 0,999, то, по закінченні 2810 епох, результат не досягається (рис.24).
Рис. 24. Робота мережі зі зміною Down Rate
І навіть при збільшенні цієї характеристики до 0,99999, завдання виконується за більше число епох – 4788 (рис.25).
Рис. 25. Робота мережі зі збільшеним Down Rate
При коригуванні ni (Minimal) у більший та менший бік найкращим результатом все одно залишається вихідний (рис. 26).
Рис. 26. Робота мережі зі зміненим ni (Minimal)
Якщо зменшити Alpha з 0,70 до 0,13, то результат буде отримано, але теж за більше число епох – 4156 (рис.27). Змінивши Alpha в більшу сторону, вирішити дану задачу не буде можливим. Аналогічно, помінявши Order мережі, результат досягнутий не буде.
Рис.27. Робота мережі зі зменшеним Alpha
Таким чином, мінімальна кількість епох, за які мережа 2:10:10:2 вирішує поставлене завдання, так само є 2522. Це відбувається при зміні параметра ni, а саме, зменшення його з 0,90 до 0,02. При цьому зміна інших параметрів призводить лише до збільшення кількості необхідних епох або зовсім не вирішує задачу.
Аналогічна ситуація відбувається зі структурою мережі 2:10:5:2. Тільки при зменшенні ni кількість епох скорочується з 3330 епох до 3125 епох.
Можна подумати, що зменшене ni покращує роботу мережі, тому, можливо і тришарова мережа впорається з цим завданням? Але, провівши експеримент, бачимо, що це не так. Значить, оптимально з цим завданням справляється чотиришарова мережу виду 2:10:10:2 зі зменшеним ni до 0,02 за 2 522 епох (рис.28).
Рис.28. Робота мережі виду 2: 50: 2 зі зменшеним ni
3. Висновки щодо роботи мережі при зміні різних параметрів.
Перенавчання.
- Змінюючи архітектуру мережі, із заданим завданням справляються лише дві: 2:10:10:2 і 2:10:5:2. Тришарові і нижче мережі не вирішують поставленого питання.
- Щоб оптимізувати час виконання завдання, необхідно зменшити ni до 0,02, це призводить до раннього виконання завдання в обох мережах.
- Встановлення даного параметра не допомагає мереж з меншим числом шарів впоратися із завданням.
- При зменшенні Down Rate завдання не виконується, а при його збільшенні з вихідного 0,99977 процес вирішення завдання подовжується. (З обома мережами)
- При будь-якій зміні ni (Minimal) спостерігається перенавчання мережі. Це не демонструється на наведених рисунках, оскільки графіки внизу занадто швидко змінюються, але при спостереженні за процесом роботи це видно.
При зменшенні Alpha (характеристика Momentum) завдання досягається, але за більше число епох, а при його збільшенні також видно перенавчання. Це видно з графіка, що представляє собою безперервні стрибки (рис.29).
Рис.29. Помилка перевірки, яка має значні стрибки та зміни
Аналогічну картину можна спостерігати при зміні характеристики Order з Swapping Permutation на будь-яку іншу. Тобто знов відбувається перенавчання.