Що таке попередня обробка ШІ?

Що таке попередня обробка ШІ?

Попередня обробка ШІ — це все, що ви робите з необробленими даними перед (а іноді й під час) навчання або логічного висновку, щоб модель могла насправді навчатися на них. Це не просто «очищення». Це очищення, формування, масштабування, кодування, доповнення та пакування даних у узгоджене представлення, яке пізніше не призведе до непомітних помилок у роботі вашої моделі. [1]

Статті, які вам, можливо, буде цікаво прочитати після цієї:

🔗 Як протестувати моделі штучного інтелекту на реальну продуктивність
Практичні методи для швидкої оцінки точності, надійності та зміщення.

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

🔗 Чи може ШІ сьогодні точно читати скорописний текст?
Охоплює проблеми розпізнавання, найкращі інструменти та поради щодо точності.

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


Попередня обробка ШІ простою мовою (і чим вона не є) 🤝

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

Це не сама модель. Це те, що робить модель можливою:

  • перетворення категорій на числа (однозначні, порядкові тощо) [1]

  • масштабування великих числових діапазонів до розумних діапазонів (стандартизація, мінімакс тощо) [1]

  • токенізація тексту у вхідні ідентифікатори (і зазвичай маску уваги) [3]

  • зміна розміру/обрізка зображень та відповідне застосування детермінованих та випадкових перетворень [4]

  • побудова повторюваних конвеєрів, щоб навчальні та «реальні» вхідні дані не розходилися ледь помітно [2]

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

 

Попередня обробка ШІ

Чому попередня обробка за допомогою штучного інтелекту важливіша, ніж люди визнають 😬

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

Попередня обробка допомагає вам:

  • Покращуйте стабільність навчання , додаючи ознаки до представлень, які оцінювачі можуть надійно використовувати (особливо, коли йдеться про масштабування/кодування). [1]

  • Зменште шум , зробивши безладну реальність схожою на щось, з чого модель може узагальнювати (замість запам'ятовування дивних артефактів).

  • Запобігання таким режимам мовчазних збоїв , як витік та невідповідності навчання/обслуговування (які виглядають «дивовижно» під час перевірки, а потім і на виробництві). [2]

  • Пришвидшення ітерації, оскільки повторювані перетворення перевершують спагеті з блокнотів щодня.

Також, саме звідси походить значна частина «модельної продуктивності». Як не дивно, дуже багато. Іноді це здається несправедливим, але така реальність 🙃


Що робить конвеєр попередньої обробки ШІ хорошим ✅

«Хороша версія» попередньої обробки зазвичай має такі якості:

  • Відтворюваність : той самий вхід → той самий вихід (немає таємничої випадковості, хіба що це навмисне доповнення).

  • Узгодженість обслуговування навчання : все, що ви робите під час навчання, застосовується так само під час виведення (ті самі підібрані параметри, ті самі карти категорій, та сама конфігурація токенаізатора тощо). [2]

  • Безпека від витоків : ніщо в оцінці/випробуванні не впливає на жодний підгонки . (Більше про цю пастку трохи пізніше.) [2]

  • Спостережуваний : ви можете перевірити, що змінилося (статистика функцій, відсутність, кількість категорій), тому налагодження не є інженерією на основі вібрацій.

Якщо ваша попередня обробка — це купа комірок зошита під назвою final_v7_really_final_ok … ви знаєте, як це працює. Вона працює, поки не перестане 😬


Основні структурні блоки попередньої обробки ШІ 🧱

Уявіть собі попередню обробку як набір будівельних блоків, які ви об'єднуєте в конвеєр.

1) Очищення та перевірка 🧼

Типові завдання:

  • видалити дублікати

  • обробляти відсутні значення (відкидати, імпутувати або явно представляти відсутність)

  • застосовувати типи, одиниці вимірювання та діапазони

  • виявляти неправильно сформовані вхідні дані

  • стандартизувати текстові формати (пробіли, правила регістру, особливості Unicode)

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

2) Кодування категоріальних даних 🔤

Більшість моделей не можуть безпосередньо використовувати необроблені рядки, такі як "red" або "premium_user" .

Поширені підходи:

  • Одноразове кодування (категорія → двійкові стовпці) [1]

  • Порядкове кодування (категорія → цілочисельний ідентифікатор) [1]

Головне не те, який кодер ви оберете, а те, щоб відображення залишалося узгодженим і не «змінювало форму» між навчанням та висновком. Саме так ви отримаєте модель, яка добре виглядає офлайн і поводиться як переслідувач онлайн. [2]

3) Масштабування та нормалізація ознак 📏

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

Дві класики:

  • Стандартизація : видалення середнього значення та масштабування до одиничної дисперсії [1]

  • Мін-макс масштабування : масштабування кожної функції в межах заданого діапазону [1]

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

4) Розробка функцій (або корисний чіт) 🧪

Саме тут ви спрощуєте роботу моделі, створюючи кращі сигнали:

  • співвідношення (кліки / покази)

  • вікна, що переміщуються (останні N днів)

  • кількість (подій на користувача)

  • логарифмічні перетворення для розподілів з важкими хвостами

У цьому є мистецтво. Іноді ви створюєте особливість, пишаєтеся нею… а вона нічого не дає. Або, що ще гірше, завдає болю. Це нормально. Не прив'язуйтесь емоційно до особливостей — вони не люблять вас у відповідь 😅

5) Правильне розподілення даних ✂️

Це звучить очевидно, поки це не перестає бути так:

  • випадкові розбиття для даних IID

  • розподіли часових рядів на основі часу

  • згруповані розбиття, коли об'єкти повторюються (користувачі, пристрої, пацієнти)

І найголовніше: розділіть перед підбором попередньої обробки, яка навчається на даних . Якщо ваш крок попередньої обробки «вивчає» параметри (такі як середні значення, словники, карти категорій), він повинен вивчити їх лише в результаті навчання. [2]


Попередня обробка ШІ за типом даних: табличні, текстові, зображення 🎛️

Попередня обробка змінює форму залежно від того, що ви передаєте моделі.

Табличні дані (електронні таблиці, журнали, бази даних) 📊

Звичайні кроки:

  • стратегія відсутньої цінності

  • категоричне кодування [1]

  • масштабування числових стовпців [1]

  • обробка викидів (правила домену перевершують «випадкове відсікання» здебільшого)

  • похідні ознаки (агрегації, затримки, ковзна статистика)

Практична порада: чітко визначте групи стовпців (числові, категоріальні, ідентифікаторні). Ваше майбутнє «я» буде вам вдячне.

Текстові дані (НЛП) 📝

Попередня обробка тексту часто включає:

  • токенізація на токени/підслова

  • перетворення на вхідні ідентифікатори

  • доповнення/усічення

  • створення масок уваги для пакетної обробки [3]

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

Зображення (комп'ютерний зір) 🖼️

Типова попередня обробка:

  • змінити розмір / обрізати до узгоджених форм

  • детерміновані перетворення для оцінки

  • випадкові перетворення для доповнення навчання (наприклад, випадкове кадрування) [4]

Одна деталь, яку люди пропускають: «випадкові перетворення» — це не просто вібрація, вони буквально вибірково вибирають параметри кожного разу, коли їх викликають. Чудово підходить для різноманітного навчання, але жахливо для оцінювання, якщо ви забудете вимкнути випадковість. [4]


Пастка, в яку потрапляє кожен: витік даних 🕳️🐍

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

Поширені схеми витоків:

  • масштабування з використанням статистики повного набору даних (замість лише навчання) [2]

  • побудова карт категорій за допомогою спільного використання методів навчання та тестування [2]

  • будь-який fit() або fit_transform() , який «бачить» тестовий набір [2]

Емпіричне правило (просте, жорстоке, ефективне):

  • Все, що має зручний крок, має бути у формі лише на тренуваннях.

  • Потім ви трансформації , використовуючи цей підібраний трансформатор. [2]

А якщо ви хочете перевірити на собі, «наскільки це може бути погано?», то у власній документації scikit-learn показано приклад витоку, де неправильний порядок попередньої обробки дає точність близько 0,76 для випадкових цілей, а потім падає до ~ 0,5 після усунення витоку. Ось наскільки переконливо неправильним може виглядати витік. [2]


Впровадження попередньої обробки у виробництво без хаосу 🏗️

Багато моделей зазнають невдачі у виробництві не тому, що модель «погана», а тому, що вхідна реальність — або ваш конвеєр.

Попередня обробка, орієнтована на виробництво, зазвичай включає:

  • Збережені артефакти (відображення енкодерів, параметри скалера, конфігурація токенаізатора), тому виведення використовує ті самі вивчені перетворення [2]

  • Суворі вхідні контракти (очікувані стовпці/типи/діапазони)

  • Моніторинг перекосу та дрейфу , оскільки виробничі дані будуть блукати [5]

Якщо вам потрібні конкретні визначення: моніторинг моделей Vertex AI від Google розрізняє перекіс обслуговування навчання (розподіл продукції відхиляється від навчання) та дрейф висновків (розподіл продукції змінюється з часом), а також підтримує моніторинг як категоріальних, так і числових ознак. [5]

Бо сюрпризи дорогі. І не ті, що приємні.


Порівняльна таблиця: поширені інструменти попередньої обробки + моніторингу (і для кого вони призначені) 🧰

Інструмент / бібліотека Найкраще для Ціна Чому це працює (і трохи чесності)
попередня обробка scikit-learn Табличні конвеєри машинного навчання Безкоштовно Надійні енкодери + скалери (OneHotEncoder, StandardScaler тощо) та передбачувана поведінка [1]
Токенізатори Hugging Face Підготовка до вхідних даних НЛП Безкоштовно Створює ідентифікатори вводу + маски уваги послідовно для всіх прогонів/моделей [3]
перетворення факельного бачення Трансформація + збільшення зору Безкоштовно Чистий спосіб поєднання детермінованих та випадкових перетворень в одному конвеєрі [4]
Моніторинг моделі Vertex AI Виявлення дрейфу/перекосу в продукті Платний (хмарний) Монітори мають функцію перекісу/дрейфу та сповіщають про перевищення порогових значень [5]

(Так, у цього столу все ще є думки. Але принаймні це чесні думки 😅)


Практичний контрольний список попередньої обробки, який ви можете реально використовувати 📌

Перед тренуванням

  • Визначити схему вхідних даних (типи, одиниці вимірювання, дозволені діапазони)

  • Аудит відсутніх значень та дублікатів

  • Правильно розподіліть дані (випадково / за часом / згруповано)

  • Попередня обробка підгонки лише на тренуванні ( fit / fit_transform залишається на навчанні) [2]

  • Збереження артефактів попередньої обробки для можливості повторного використання під час логічного висновку [2]

Під час навчання

  • Застосовуйте випадкову аугментацію лише там, де це доречно (зазвичай лише навчальний поділ) [4]

  • Зберігайте детермінованість попередньої обробки оцінювання [4]

  • Відстежуйте зміни попередньої обробки, як-от зміни моделі (бо вони є такими)

Перед розгортанням

  • Переконайтеся, що виведення використовує ідентичний шлях попередньої обробки та артефакти [2]

  • Налаштуйте моніторинг дрейфу/перекосу (навіть базові перевірки розподілу ознак мають велике значення) [5]


Глибоке занурення: поширені помилки попередньої обробки (і як їх уникнути) 🧯

Помилка 1: «Я просто швидко все нормалізую» 😵

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

Помилка 2: категорії дрейфують у хаос 🧩

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

Помилка 3: випадкове доповнення прокрадається в оцінку 🎲

Випадкові перетворення чудово підходять для навчання, але їх не слід «таємно вмикати», коли ви намагаєтеся виміряти продуктивність. (Випадкові означає випадкові.) [4]


Заключні зауваження 🧠✨

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

  • Виконуйте попередню обробку свідомо, а не випадково. [2]

  • Спочатку розділіть, трансформація форми відбувається лише під час тренування, уникайте витоків. [2]

  • Використовуйте попередню обробку, відповідну модальності (токеналізатори для тексту, перетворення для зображень). [3][4]

  • Слідкуйте за перекісом/дрейфом виробництва, щоб ваша модель поступово не втрачала нісенітницю. [5]

І якщо ви коли-небудь застрягнете, запитайте себе:
«Чи мав би цей крок попередньої обробки сенс, якби я запустив його завтра на абсолютно нових даних?»
Якщо відповідь «е-е… можливо?», це ваша підказка 😬


Посилання

[1] API scikit-learn:
sklearn.preprocessing (енкодери, скалери, нормалізація) [2] scikit-learn: Поширені помилки - Витік даних та як його уникнути
[3] Документація Hugging Face Transformers: Токенізатори (вхідні ідентифікатори, маски уваги)
[4] Документація PyTorch Torchvision: Трансформації (Зміна розміру/нормалізація + випадкові трансформації)
[5] Документація Google Cloud Vertex AI: Огляд моніторингу моделей (перекіс та дрейф ознак)

Знайдіть найновіший штучний інтелект в офіційному магазині помічників зі штучним інтелектом

Про нас

Повернутися до блогу