Introduction to TensorFlow for Artificial Intelligence, Machine Learning, and Deep Learning

Машинне навчання для інженерів із систем керування

Introduction to TensorFlow for Artificial Intelligence, Machine Learning, and Deep Learning

Тиждень 1

01.04.2023

19 лютого минулго року я пройшов 8-й тиждень курсу по машинному навчанню від Andrew ng. Ось лінк на останній пост https://www.facebook.com/…/pfbid02Ch6stq4vmTNTA4zV7qxG9… Потім почалося повномасштабне вторгнення московитів і я закинув цей курс (десь на відмітці 80% від всього матеріалу). Зараз він є в оновленій редакції, але я вирішив не починати заново а пошукати щось практичніше. Сьогодні пройшов перший тиждень ось цього курсу https://www.coursera.org/learn/introduction-tensorflow… . Довго думав, чи потягну його, бо він розрахований на середнячків, тобто не на початківців. Як виявилося перший тиждень на порядки легший ніж перший тиждень загального курсу, який я проходив до цього. Він орієнтований на практичне використання з бібліотекою tensorflow, яка в прикладах використовується на python але є і для JS. Не знаю що там попереду, але варто спробувати усім, хто хотів би, але боїться що не потягне. Як і з попереднім курсом, буду писати відгуки.

Отже 1-го тижня дуже простими словами розповіли що таке ML, і як зробити просту прогу по навчанню самої простої нейронки з одним шаром і одним нейроном.

Тиждень 2

02.04.2023

У продовження вчорашнього посту. Сьогодні я пройшов 2-й тиждень. Десь 4 години неспішного і уважного читання та консультації з ChatGpt з приводу незрозумілих для мене аргументів в функціях tensorflow. На лекціях розглядали приклад навчання моделі розпізнавати одяг в 10-ти категоріях. На лабах пробували гратися з різними варіантами моделі: кількість рівнів, кількість епох навчання, відсутність нормалізації. Потім робили функцію зворотного виклику яка зупиняла навчання, якщо результат задовольняв. І як завжди тести і завдання на оцінювання в колабі. Забув вчора сказати що нічого інсталити не потрібно, все робиться в кабінеті а лаби в https://colab.research.google.com. Поки нічого важкого не було, все дуже лайтово, подивимся що буде далі.

Тиждень 3

04.04.2023

Вчора завершив завдання 3-го тижня курсу https://www.coursera.org/learn/introduction-tensorflow . Трохи складніше ніж було перші три тижні (дня), але все ще доступно. Розглядали згорткові нейронні мережі знову ж на тому ж прикладі розпізнавання одягу, хоча обробка зображення показувалася на якихось сходах в під’їзді.

На першій лабі пробували використовувати ці згорткові моделі, гралися кількістю епох щоб подивитися ефект перенавчання. Тут знову пригодився Chatgpt, який допоміг зрозуміти мені не очевидну для мене річ, що фільтри в згортковій моделі також налаштовуються при пошуку найкращих параметрів нейронки. Але на наступному відео про роботу фільтрів вже детальніше пояснили, ще й на лабі зафіксували. Також було неочевидним, чому в лабораторній роботі, коли я прибрав два згорткові шари, навчання моделі дала кращі результати. Знову ж спитав у Chatgpt, той розказав кілька причин цьому: зменшення ефекту перенавчання за рахунок зменшення кількості параметрів, недостатня кількість прикладів, невдала архітектура. І тут я згадав, що про це також давалося в минулому фундаментальному курсі, який я так і не завершив. Мабуть таки колись повернуся до нього, хоч прийдеться проходити заново і оновлену версію. Добавлення лишніх шарів в модель ще більше погіршило ситуацію.

Друга лаба була про те, як працюють фільтри. Я захотів бачити кілька рисунків поряд, щоб зручніше було порівнювати. Враховуючи що я не дуже поки що дружу з Python, знову сильно допоміг Chatgpt. Зміг відобразити кілька рисунків з різними фільтрами, але чомусь вони мені дуже схожі. Може десь не розібрався.

Завдання на оцінку трохи ускладнили, довелося трохи копнути numpy. Довго не міг зрозуміти чому модель вчиться тільки з точністю до 47%. Потім зробив припущення про неправильну нормалізацію і все пішло як по маслу. Схоже після моєї першої нормалізації залишилася лише чорно-біла гама, замість відтінків сірого. Тим не менше хоч навчання було ок, оцінка була знижена, бо щось все одно не так було з нормалізацією. Явно відчувається прогалина в розуміннях numpy. Тоді використав функцію divide , яку рекомендували замість простого ділення, і вибив всю сотню. Треба буде якось детальніше порозбирати numpy якщо буду цим займатися на практиці.

Якось вийшло, що написав більше про Chatgpt ніж про третій тиждень навчання (хоча по факту третій день). Ну вибачайте, не я такий, життя таке 🙂

Тиждень 4

09.04.2023

Пройшов 4-тий тиждень і відповідно завершив перший з 4-рьох курсів спеціалізації DeepLearning.AI TensorFlow Developer https://www.coursera.org/professional-certificates/tensorflow-in-practice , навіть отримав сертифікат. Спочатку напишу про 4-й тиждень а потім враження про весь курс. Цього тижня займалися навчанням більш наближеної до реальності моделі класифікації вже кольорових зображень на два класи: людей і коней. На першій лабі вчили модель без виділених даних для валідації. Рекомендую повністю розбиратися в коді, принаймні що робиться саме в цій програмі. Як і до цього Chatgpt став для цього хорошим асистентом. Деякі речі для мене були неочевидними, прийшлося трохи поексперементувати, для цього зрештою і є лаба. Коли з першої проби не вийшло навчити нормально модель (при тесті на реальних фото гарних на мій погляд жінок називала кіньми), я запустив повторно навчання і з перших же епох навчання почав отримувати високі точності. Як виявилося кожний виклик методу fit донавчає існуючу модель. Надалі кілька моїх спроб навчити модель краще так і не привів до бажаного результату, похибка була десь біля 30%-40%. Я не став зависати на прикладі і пішов далі. Але варто зазначити, що в описі лабораторної не було нічого сказано про очікуваний результат і правила вибору зображень. Це з точки зору навчального матеріалу не дуже добре як на мене. До речі проби у лектора перевірки результату також не всі були вдалі. На другій лабі використовувався додатковий параметр при виклику методу fit (навчання) - валідаційні дані, які допомогають проконтролювати дані, шляхом перевірки моделі на іншій частині вибірки. Базуючись на цьому параметрі довів модель (в 23 епохи) до стану щоб точність передбачення за валідаційними даними була 86%. Зробив перевірку на скачаних фотках (підібрав найбільш прості, якщо чесно) і отримав результат точності біля 75%. Потім не перенавчаючи модель вирішив привести всі фотки до одного розширення, результат не змінився. Запустив навчання ще на епоху, точність передбачення за валідаційними даними виросла на 87% - але на моїх тестових даних було те саме, далі очевидно пішло перенавчання і за валідаціними даними ставало ще гірше і на моїх тестових також. У третій лабі зменшили розмір матриці, що отримується з рисунків в два рази. І результати перевірки нової моделі у мене вийшли трохи гіршим. Тест пройшов з 2-го разу а от практичне завдання далося дуже легко.

Тепер про курс. Як на мене курс для новачків, а не для середнього рівня. Націлений на швидкий старт в практичному використанні, саме те що потрібно було мені. Але варто сказати, що я до цього вже вився на фундаментальному курсі, тому мені деякі речі були відомими до цього. Якщо ви не знаєте Python - хай це Вас не лякає, сміливо йдіть на курс, якраз буде привід трохи розібратися. Я ж теж його не знаю. Якщо не знаєте англійську, так і я її не дуже знаю. Там під відео є субтитри, так що гугл-перекладач нормально справляється. Тому, якщо Ви хочете швидко зайти в ML і відразу юзати - це те що треба. Для мене власне саме цікаве в 4-му курсі з циклу, заради цього і записувався. Так що попереду ще 3 курси. До речі, цей 4-тижневий курс почав трохи більше тижня тому, і приділяв йому увагу коли мав трохи часу і натхнення.