Архітектура та інженерія систем ШІ: від MLOps до безпеки
Data-centric AI стратегії
Від моделі до даних
У розробці систем штучного інтелекту довго панувала одна ідея: щоб отримати кращий результат, потрібна краща модель. Інженери витрачали тижні на тонке налаштування архітектури нейронної мережі, сподіваючись витиснути ще частку відсотка точності. Але що, якби ключ до значного стрибка продуктивності лежав не в коді, а в самих даних?
Це і є суть підходу, орієнтованого на дані (Data-centric AI). Замість того, щоб нескінченно змінювати модель, ми зосереджуємося на систематичному поліпшенні якості навчальних даних. Уявіть, що ви готуєте страву. Можна довго вдосконалювати рецепт або міняти духовку, але якщо продукти неякісні, результат все одно буде посереднім. Натомість, використовуючи свіжі, якісні інгредієнти, навіть за простим рецептом можна створити шедевр. Так само і в AI: високоякісні, послідовні та релевантні дані дозволяють навіть стандартним моделям досягати виняткових результатів.
Основний принцип Data-centric AI: фіксуйте архітектуру моделі та ітеративно покращуйте якість даних.
Цей підхід зміщує фокус з вузькоспеціалізованих знань про архітектури нейронних мереж на розуміння предметної області та інженерію даних. Він робить процес розробки AI більш систематичним і передбачуваним, адже працювати з даними часто простіше, ніж із "чорною скринькою" складної моделі.
Програмована розмітка даних
Ручне маркування даних – це повільний, дорогий і часто непослідовний процес. Коли потрібні мільйони прикладів, залучати тисячі людей для розмітки стає неефективно. Тут на допомогу приходить програмоване маркування, також відоме як Слабкий нагляд (Weak Supervision). Замість ручного присвоєння міток кожному окремому прикладу, ми створюємо набір правил або евристик, які автоматично генерують мітки для великих обсягів даних.
Ці правила, які називаються функціями маркування (labeling functions), можуть бути простими, як-от пошук ключових слів у тексті, або складними, що використовують сторонні бази знань чи навіть інші, менші моделі. Наприклад, для класифікації спам-листів функціями маркування можуть бути:
- Якщо в темі листа є слова "знижка" або "безкоштовно", ймовірно, це спам.
- Якщо лист надіслано з домену, якого немає у списку контактів, ймовірно, це спам.
- Якщо в тексті є багато знаків оклику, ймовірно, це спам.
Кожна функція може бути неідеальною і помилятися. Однак, об'єднавши десятки таких "слабких" сигналів, спеціальна модель може згенерувати напрочуд точні ймовірнісні мітки для всього набору даних. Це дозволяє розмічати дані в тисячі разів швидше, ніж вручну.
Розширення та генерація даних
Іноді даних просто недостатньо, або вони не відображають усього розмаїття реального світу. У таких випадках застосовують аугментацію та синтез даних. Аугментація – це процес створення нових тренувальних прикладів шляхом незначних модифікацій існуючих.
Для зображень це може бути:
- Поворот, віддзеркалення, обрізання.
- Зміна яскравості, контрасту, насиченості.
- Додавання невеликого шуму.
Ці прості трансформації допомагають моделі стати стійкішою до невеликих змін у вхідних даних, що покращує її здатність до узагальнення.
Коли аугментації недостатньо, вдаються до синтезу даних – створення абсолютно нових, реалістичних даних з нуля. Сучасні генеративні моделі (наприклад, GAN або дифузійні моделі) можуть генерувати високоякісні зображення, тексти чи навіть табличні дані, яких ніколи не існувало. Це особливо корисно для збалансування класів у наборі даних або для створення прикладів рідкісних подій, як-от виявлення шахрайства або рідкісних захворювань.
Версіонування та валідація
Коли дані стають таким же важливим артефактом, як і код, до них потрібно ставитися відповідно. (Data Version Control) – це практика відстеження змін у наборах даних, подібно до того, як Git відстежує зміни в коді. Інструменти, як-от DVC, дозволяють зберігати різні версії датасетів, пов'язувати їх із конкретними версіями коду та експериментами, а також відтворювати результати.
Це вирішує поширену проблему, коли модель, навчена минулого місяця, раптом показує інші результати, бо хтось непомітно змінив навчальний файл.
Проте версіонування не гарантує якості. Нам потрібен спосіб автоматично перевіряти, що дані відповідають очікуванням. Для цього існують інструменти валідації, найвідомішим з яких є (Великі сподівання).
Ця бібліотека дозволяє створювати декларативні правила, або "сподівання", щодо ваших даних. Наприклад:
expect_column_values_to_not_be_null('user_id'): значення в колонціuser_idне повинні бути порожніми.expect_column_values_to_be_between('age', 18, 99): значення в колонціageмають бути в діапазоні від 18 до 99.expect_column_values_to_match_regex('email', r'^[^@]+@[^@]+\.[^@]+$'): значення в колонціemailмають відповідати формату електронної пошти.
Такі перевірки можна вбудувати в конвеєр обробки даних (data pipeline), щоб автоматично виявляти аномалії, помилки або зсуви в даних ще до того, як вони потраплять до моделі. Це забезпечує консистентність даних між середовищами розробки, тестування та експлуатації.
Перехід до data-centric стратегії вимагає зміни мислення, але винагорода є значною: надійніші, точніші та легші в підтримці системи штучного інтелекту.
Яке твердження найкраще описує підхід "Data-centric AI" (орієнтований на дані)?
Що таке "слабкий нагляд" (Weak Supervision) у контексті маркування даних?
