Навчання згорткових нейронних мереж

29.06.2023 |

Використання штучного інтелекту починає швидко поширюватися у різних галузях людської діяльності. Провідні компанії, такі як Intel, AMD, IBM, NXP, Samsung, ADI, TI, Huawei, Fujitsu та інші вже  освоїли у виробництві процесори з штучним інтелектом.

Вони використовуються у робототехніці, системах штучного зору, розпізнавання образів, у безпілотних літальних апаратах і навіть у домашніх персональних комп’ютерах. Інструментом для підтримки роботи цих процесорів є нейронні мережі різного класу. В статті «Введение в сверточные нейронные сети: что такое машинное обучение?», яка опублікована в журналі ЕКіС,  № 1, 2023 р., показано, чим відрізняється виконання класичної лінійної програми у звичайному мікропроцесорі від роботи згортокової нейронної мережі і які переваги має ця мережа. В цій публікації показано, як згорткову нейронну мережу можна навчити вирішувати конкретні задачі.

Для навчання нейронних мереж використовують спеціальні набори даних. Набір CIFAR-10 – один із таких наборів даних (зображень), який зазвичай використовується для навчання нейронних мереж типу CIFAR для розпізнавання образів і складається з різних шарів нейронів, як показано на рис. 1.

Рис. 1. Архітектура мережі CIFAR

Дані зображення розміром 32Ч32 пікселя подаються в мережу та передаються через мережеві рівні. Першим кроком мережі є виявлення та дослідження унікальних особливостей і структур об’єктів, які потрібно визначити. Для цього використовуються фільтрувальні матриці. Після того, як нейронна мережа CIFAR змодельована, матриці фільтрів ще не визначені, і мережа на цьому етапі не в змозі ви- являти шаблони та об’єкти. Тому, спочатку необхідно визначити всі параметри та елементи матриць, щоб максимізувати точність, з якою об’єкти визначаються, або мінімізувати функцію втрат. Цей процес називають навчанням нейронної мережі.

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

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

Навчальні дані потрібні не тільки для навчання мережі, крім того, цей набір даних використовується для перевірки точності мережі. Наприклад, у наведеному мережевому наборі даних CIFAR-10 дані являють собою набір зображень у межах 10 класів об’єктів: літак, автомобіль, птах, кіт, олень, собака, жаба, кінь, корабель і вантажівка, рис. 2.  Однак – і це найскладніша частина загальної розробки додатку штучного інтелекту – ці зображення повинні бути визначені перед навчанням мережі. Навчальний процес працює за принципом зворотного поширення; нейронній мережі послідовно показують численні зображення та кожного разу одночасно пере- дається цільове значення, яке підлягає визначенню.

Рис. 2. Навчальний цикл, що складається з прямого та зворотного поширення

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

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

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

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

Різниця між цільовими та фактичними значення- ми, що виникають на виході, називається втратою, а пов’язана з цим функція – функцією втрат. Всі елементи та параметри мережі включаються у функцію втрат. Метою процесу навчання нейронної мережі є визначення цих параметрів таким чином, щоб функція втрат була мінімізована. Ця мінімізація досягається за допомогою процесу, в якому відхилення, що виникає на виході (втрата = цільове значення мінус фактичне значення), подається назад через усі компоненти мережі, доки це відхилення не досягне входу мережі. Цей процес має назву зворотного по- ширення. Таким чином, у процесі навчання мережа визначає параметри матриць фільтрів поетапно.

Цей процес прямого та зворотного розповсюдження повторюється, доки рівень втрат не впаде нижче попередньо визначеного порогового значення.

Щоб проаналізувати наведений процес навчання, на рис. 3 показана функція втрат, яка складається лише з двох параметрів x і y. Вісь z відповідає втратам. Сама функція тут не грає ролі і використовується лише для ілюстрації. Якщо уважно подивитися на тривимірний графік функції, то можна побачити, що ця функція має як глобальний, так і локальний мінімуми. Велика кількість чисельних алгоритмів оптимізації може бути використана для визначення ваг і зміщень. Найпростішим з них є метод градієнтного спуску. Цей метод базується на ідеї пошуку шляху від випадково вибраної початкової точки функції втрат, який веде до глобального мінімуму у поетапному процесі з використанням градієнта.

Рис. 3. Різні шляхи до цілі за допомогою методу градієнтного спуску

Градієнт, як математичний оператор, описує рух фізичної величини. Він забезпечує в кожній точці функції втрат відповідний вектор, також відомий як градієнтний вектор, який вказує на напрямок най- більшої зміни значення функції. Величина вектора відповідає величині зміни. У функції на рис. 3 вектор градієнта буде вказувати на мінімум у точці десь унизу праворуч (червона стрілка). Ця величина буде найнижчою через пологість поверхні. Ситуація буде іншою поблизу піку. Тут вектор (зелена стрілка) спрямований круто вниз і має велике значення, ос- кільки рельєф поверхні крутий.

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

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

Деякі альтернативи включають метод стохастичного градієнтного спуску. AdaGrad, RMSProp і Adam – це лише деякі з них. Алгоритм, який використовується на практиці, визначається розробником нейронної мережі, оскільки кожен з існуючих алгоритмів має певні переваги та недоліки.

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

ВИСНОВКИ

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

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