Створити свою першу нейромережу, натренувати її, оцінити, що вийшло й випробувати на практиці, – цього навчаться слухачі курсу «Основи нейронних мереж»», який у жовтні стартує в Київському академічному університеті в рамках проєкту Knowledge Rise.
Курс створюють завідувач лабораторії дослідження даних та машинного навчання КАУ Віталій Тимчишин і старший науковий співробітник лабораторії Володимир Безгуба.
Для кого буде цікаве це навчання? Які знання отримають слухачі і, найважливіше, де зможуть застосувати ці знання? На ці запитання відповідає Віталій Тимчишин.
«Наша ідея – створити базовий курс про нейромережі, розповісти, що таке мережа на світоглядному рівні, – каже науковець. – Пояснимо, що таке нейромережі з точки зору математики, що таке архітектура мережі, як сформувати критерії вибору найкращої архітектури моделі.
Учений планує продемонструвати, як написати код, які цікаві ідеї можна використати під час роботи. А також – які проблеми можуть виникнути під час тренування нейромереж.
«Під час навчання створимо одну чи дві простенькі нейромережі з використанням мови програмування Python. Слухачі зрозуміють, як там, образно кажучи, «гайки крутяться», – з усмішкою зазначає співрозмовник.
А навіщо взагалі створювати нейромережі?
«Є багато задач, які не мають чітких критеріїв розв’язання, – пояснює вчений. – Наприклад, я не можу написати універсальну формулу, за допомогою якої з яскравості пікселів вирахую, чи є на зображенні котик. Натомість можна зібрати приклади таких вхідних і вихідних даних з котиками та без і натренувати нейронну мережу, яка буде розрізняти ці два випадки».
Навіщо протискувати інформацію «через вушко голки»
За словами вченого, курс стане в пригоді програмістам-початківцям, а також усім, хто хоче дізнатися про нейромережі більше.
Машинне навчання сьогодні застосовують практично у всіх галузях життя, і курс з основ нейронних мереж може стати першим кроком на шляху до Machine Learning. Після закінчення курсів слухач зможе написати у резюме, що працював з відкритою бібліотекою для машинного навчання PyTorch, розробляв власні нейромережі, і знає, як вони працюють.
Курс складатиметься з чотирьох лекцій.
У першій науковці розкажуть про базові речі й покажуть, як створити і навчити нейромережу. Ця мережа зможе, наприклад, розпізнати рукописні цифри.
У другій – слухачі дізнаються про архітектури нейромереж; про те, як нейрони з'єднуються між собою; про «шари», з яких будують мережі, тощо.
«Від способу чи порядку з’єднання «шарів» між собою залежить архітектура мережі, – пояснює науковець. – Я розповім про різні цікаві ідеї, коли, наприклад, нейромережа спочатку зменшує розмірність вхідних даних, з якими вона працює, а потім «розгортає» її назад до початкової. Це дуже цікаво, тому що ми фактично «протискуємо» інформацію через низькорозмірні шари, ніби через вушко голки. Якщо на виході інформація відновлюється, значить, її низькорозмірного представлення достатньо для повноцінного опису даних».
За допомогою такого «протискування», за словами вченого, можна зменшити розмір даних, що важливо для багатьох технічних задач, наприклад, відфільтрувати випадковий «шум», бо через «вушко голки» проходить лише найважливіша інформація.
Слухачі навчаться розв’язувати проблеми затухання градієнту, застосовувати skip connections (пропуски з’єднань), які дозволяють інформації «перестрибувати» через один або кілька шарів. Ці навички стануть в пригоді для роботи з глибокими нейромережами, які мають багато шарів та тими, які складніше навчати.
Тестувати мрії за допомогою бізнес-метрики
Третя лекція буде присвячена стратегіям тренування нейромереж, зокрема, проблемам «перетренування» й «недотренування» (underfit і overfit). «Ми обговоримо як від кількості даних та параметрів навчання залежить якість результатів, а також, як правильно цю якість виміряти, – каже співрозмовник.
Слухачі дізнаються, як виміряти якість роботи нейромережі, як зрозуміти, коли вона працює добре, а коли – погано. «Щоб зрозуміти якість роботи мережі, треба тримати в голові таке поняття, як бізнес-метрика, – зазначив науковець. – Бо люди часто роблять мережу заради мережі, й не думають, що повинно бути на виході. Оцінювати роботу мережі потрібно з точки зору того, для чого ця мережа потрібна».
Для прикладу – якщо нейромережа сканує медичні зображення щодо ознак онкології, то простий підрахунок відсотку правильних відповідей (точність) – такий собі підхід. «В цьому випадку ми повинні бути більш толерантними до хибно позитивних діагнозів: краще перестрахуватися й перевірити неіснуючу проблему, ніж пропустити хворобу – наголошує співрозмовник. – У цьому випадку людина просто ще раз піде до лікаря, який скаже: «Все добре, це машина здуріла».
Так само з перевіркою деталей на конвеєрі. Краще помилитися й забракувати хорошу деталь, ніж пропустити неякісну. Бо браковану деталь встановлять у автомобіль і наслідки можуть бути непередбачуваними.
Тому важливо не просто підраховувати відсоток хороших і поганих результатів, а враховувати бізнес-метрику.
Під час четвертої лекції вчені планують випробувати роботу нейромережі на окремому пристрої (embedded device). «Спробуємо протестувати її, наприклад, на одній з плат Arduino, які використовують у робототехніці та виробництві дронів, – розповідає пан Віталій. – Це буде цікаво тим, хто планує спеціалізуватися в галузі оборонних технологій».
Цікавлюся: чому цей проєкт цікавий для самого вченого?
«Мені справді цікаво створювати ці лекції, бо це можливість зібрати в одному місці основні знання про нейромережі, – відповідає він. – До речі, таких курсів я ще не бачив. Є довгі навчальні курси, які вимагають багато часу. Ми ж хочемо розповісти про нейромережі коротко і цікаво. Це неабиякий виклик – за чотири лекції створити, навчити і випробувати мережу. Це точно буде корисно, і я впевнений, що слухачі захочуть спробувати. Дуже раджу!».
Світлана ГАЛАТА