7 порад для роботи з невеликими даними

У сучасному світі вважається, що Big Data – ключ до створення успішних проектів машинного навчання. Але проблема в тому, що даних часто буває недостатньо. І побудувати на них хорошу нейромережу складно. У цій статті представлено поради щодо поліпшення моделей машинного навчання при роботі з невеликими наборами даних.

1. Усвідомте, що ваша модель узагальнюється не дуже добре

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

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

Переконайтеся, що це розуміє ваш замовник. Так ви разом зможете орієнтуватися на реалістичні очікування, які повинна надати модель, і запропонувати корисні KPI для кількісної оцінки її ефективності.

2. Створіть гарну інфраструктуру даних.

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

Розмітка нових даних – нескладна операція. Для неї можна використовувати Prodigy, який є доступним і розширюваним інструментом. Залежно від розміру проєкту ви також можете налаштувати автоматичне завантаження та маркування даних.

3. Доповніть дані.

Датасет часто можна доповнити, трохи змінивши вже наявні дані. Це робиться за допомогою різних операцій з обрізки, повороту, відображенню і так далі. При цьому висновок моделі істотно не зміниться: наприклад, якщо повернути фотографію кота на 40 градусів, на ній як і раніше буде кіт.

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

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

Інший корисний метод доповнення даних – Mixup. Він бере два вихідних зображення, «змішує» їх і об’єднує мітки.

При збільшенні датасету з іншими типами даних (наприклад, з аудіо або текстом) необхідно враховувати, які перетворення можуть вплинути на мітку, а які ні.

4. Згенеруйте синтетичні дані

Якщо ви вичерпали всі можливості зі збору і збільшення реальних даних – саме час задуматися про створення «фейкових» зразків. Генерація синтетичних даних також може охопити ситуації, які не зустрічаються в вихідному датасеті.

Багато робототехнічних систем (наприклад, Dactyl від OpenAI) навчаються в змодельованих 3D-середовищах, перш ніж їх розгорнуть в реальних роботів. Таким же чином можна створювати сцени для систем розпізнавання зображень.

Існує багато підходів до моделювання синтетичних даних. Якщо вам потрібні зразки високої якості, то для їх генерації можна використовувати GAN. Але майте на увазі – GAN досить складно навчаються, тому переконайтеся, що це дійсно необхідно.

Іноді підходи можна комбінувати: наприклад, Apple придумала спосіб обробки змодельованих за допомогою GAN 3D-осіб, щоб вони виглядали більш реалістичними. Це хороша техніка для розширення набору даних, але вона вимагає багато часу.

5. Остерігайтеся вдалого поділу даних

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

Краща підстраховка в цьому випадку – застосування крос-валідації за k-блоками. Вона використовує k різних варіантів поділу датасету і контролює, що вдала розбивка даних не впливає на ефективність моделі.

6. Використовуйте трансферне навчання

Якщо ви працюєте зі стандартними форматами даних (текст, зображення, відео або звук), ви можете скористатися вже існуючими рішеннями і навчити їх на своїх прикладах.

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

7. Спробуйте ансамбль слабких учнів

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

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

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

Джерело: towardsdatascience.com

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*