Preprocessing AI to wszystko, co robisz z surowymi danymi przed (a czasem w trakcie) trenowaniem lub wnioskowaniem, aby model mógł się z nich faktycznie uczyć. Nie tylko „czyszczenie”. To czyszczenie, kształtowanie, skalowanie, kodowanie, rozszerzanie i pakowanie danych w spójną reprezentację, która nie spowoduje późniejszych, cichych błędów w modelu. [1]
Artykuły, które mogą Ci się spodobać po przeczytaniu tego:
🔗 Jak testować modele sztucznej inteligencji pod kątem wydajności w warunkach rzeczywistych
Praktyczne metody szybkiej oceny dokładności, solidności i stronniczości.
🔗 Czy tekst na mowę to sztuczna inteligencja i jak ona działa?
W książce wyjaśniono podstawy TTS, główne zastosowania i typowe ograniczenia.
🔗 Czy sztuczna inteligencja potrafi dziś dokładnie czytać pismo odręczne?
Obejmuje wyzwania związane z rozpoznawaniem, najlepsze narzędzia i wskazówki dotyczące dokładności.
🔗 Jak dokładna jest sztuczna inteligencja w przypadku typowych zadań
Analizuje czynniki dokładności, punkty odniesienia i niezawodność w warunkach rzeczywistych.
Wstępne przetwarzanie AI w prostym języku (i czym ono nie jest) 🤝
Preprocessing AI to transformacja surowych danych wejściowych (tabel, tekstu, obrazów, logów) w funkcje gotowe do użycia w modelu. Jeśli surowe dane to bałagan w garażu, preprocessing oznacza etykietowanie pudeł, wyrzucanie zepsutych śmieci i układanie rzeczy w stosy, aby móc swobodnie przejść bez obrażeń.
Nie chodzi o sam model. Chodzi o to, co go umożliwia:
-
zamiana kategorii na liczby (jednolitymi, porządkowymi itp.) [1]
-
skalowanie dużych zakresów liczbowych do rozsądnych zakresów (standaryzacja, min.-maks. itp.) [1]
-
tokenizacja tekstu w identyfikatory wejściowe (i zwykle maskę uwagi) [3]
-
zmiana rozmiaru/przycinanie obrazów i odpowiednie stosowanie transformacji deterministycznych i losowych [4]
-
budowanie powtarzalnych kanałów, tak aby dane szkoleniowe i dane wejściowe z „życia rzeczywistego” nie rozchodziły się w subtelny sposób [2]
Jedna mała uwaga praktyczna: „wstępne przetwarzanie” obejmuje wszystko, co dzieje się konsekwentnie, zanim model otrzyma dane wejściowe . Niektóre zespoły dzielą to na „inżynierię cech” i „czyszczenie danych”, ale w rzeczywistości te granice się zacierają.

Dlaczego wstępne przetwarzanie przez sztuczną inteligencję ma większe znaczenie, niż ludzie przyznają 😬
Model dopasowuje wzorce, a nie czyta w myślach. Jeśli dane wejściowe są niespójne, model uczy się niespójnych reguł. To nie filozofia, to boleśnie dosłowne.
Wstępne przetwarzanie pomaga:
-
Popraw stabilność uczenia się , wprowadzając cechy do reprezentacji, z których estymatorzy mogą korzystać niezawodnie (szczególnie w przypadku skalowania/kodowania). [1]
-
Zredukuj szum, sprawiając, że chaotyczna rzeczywistość będzie wyglądać jak coś, na podstawie czego model może tworzyć uogólnienia (zamiast zapamiętywać dziwne artefakty).
-
Zapobiegaj ukrytym trybom awarii, takim jak wycieki i niezgodności w procesie szkolenia/serwisowania (takie, które wyglądają „niesamowicie” podczas walidacji, a następnie okazują się klapą w produkcji). [2]
-
Przyspiesz iterację, ponieważ powtarzalne transformacje pokonują nudny notatnik każdego dnia tygodnia.
Poza tym, to właśnie stąd bierze się tak naprawdę duża część „wydajności modelu”. Naprawdę… zaskakująco dużo. Czasami wydaje się to niesprawiedliwe, ale taka jest rzeczywistość 🙃
Co sprawia, że proces wstępnego przetwarzania AI jest dobry?
„Dobra wersja” wstępnego przetwarzania zazwyczaj charakteryzuje się następującymi cechami:
-
Powtarzalność : te same dane wejściowe → te same dane wyjściowe (brak tajemniczej losowości, chyba że jest to celowe zwiększenie).
-
Spójność w zakresie obsługi i szkolenia : wszystko, co robisz w czasie szkolenia, jest stosowane w ten sam sposób w czasie wnioskowania (te same dopasowane parametry, te same mapy kategorii, ta sama konfiguracja tokenizatora itd.). [2]
-
Bezpieczeństwo przed wyciekiem : nic w ocenie/testach nie wpływa na żaden
dopasowania. (Więcej o tej pułapce za chwilę.) [2] -
Możliwość obserwowania : można sprawdzić, co uległo zmianie (statystyki funkcji, braki, liczba kategorii), więc debugowanie nie jest inżynierią opartą na wibracjach.
Jeśli Twoje preprocesowanie to stos komórek notatnika o nazwie final_v7_really_final_ok … wiesz, jak to jest. Działa, dopóki nie przestanie 😬
Podstawowe elementy wstępnego przetwarzania AI 🧱
Można myśleć o wstępnym przetwarzaniu jako o zestawie bloków konstrukcyjnych, które łączy się w proces.
1) Czyszczenie i walidacja 🧼
Typowe zadania:
-
usuń duplikaty
-
obsługa brakujących wartości (usuwanie, przypisywanie lub jawne przedstawianie braków)
-
wymuszanie typów, jednostek i zakresów
-
wykrywaj nieprawidłowe dane wejściowe
-
standaryzować formaty tekstu (odstępy, zasady wielkości liter, osobliwości Unicode)
Ta część nie jest efektowna, ale zapobiega wyjątkowo głupim błędom. Mówię to z miłością.
2) Kodowanie danych kategorycznych 🔤
Większość modeli nie może bezpośrednio używać surowych ciągów znaków, takich jak „red” lub „premium_user” .
Typowe podejścia:
-
Kodowanie one-hot (kategoria → kolumny binarne) [1]
-
Kodowanie porządkowe (kategoria → identyfikator całkowity) [1]
Kluczowe nie jest to, jaki enkoder wybierzesz – chodzi o to, aby mapowanie pozostało spójne i nie „zmieniło kształtu” między treningiem a wnioskowaniem. W ten sposób otrzymasz model, który wygląda dobrze w trybie offline, ale zachowuje się jak nawiedzony w trybie online. [2]
3) Skalowanie i normalizacja cech 📏
Skalowanie ma znaczenie, gdy obiekty znajdują się w bardzo różnych zakresach.
Dwa klasyki:
-
Standaryzacja : usuń średnią i skaluj do wariancji jednostkowej [1]
-
Skalowanie min-max : skalowanie każdej funkcji do określonego zakresu [1]
Nawet jeśli używasz modeli, które „raczej sobie radzą”, skalowanie często ułatwia rozumowanie o potokach — i utrudnia przypadkowe ich zepsucie.
4) Inżynieria funkcji (znana również jako użyteczne oszukiwanie) 🧪
W tym miejscu ułatwiasz pracę modelowi, tworząc lepsze sygnały:
-
współczynniki (kliknięcia / wyświetlenia)
-
okna ruchome (ostatnie N dni)
-
liczba (wydarzeń na użytkownika)
-
transformacje logarytmiczne dla rozkładów gruboogonowych
To sztuka. Czasami tworzysz funkcję, jesteś dumny… a ona nic nie daje. Albo, co gorsza, boli. To normalne. Nie przywiązuj się emocjonalnie do funkcji – one nie odwzajemniają twojego uczucia 😅
5) Prawidłowy podział danych ✂️
Brzmi to oczywiste, dopóki takie nie jest:
-
losowe podziały dla danych iid
-
podziały oparte na czasie dla szeregów czasowych
-
podziały grupowe, gdy jednostki się powtarzają (użytkownicy, urządzenia, pacjenci)
I co najważniejsze: podział przed dopasowaniem wstępnego przetwarzania, które uczy się na podstawie danych . Jeśli etap wstępnego przetwarzania „uczy się” parametrów (takich jak średnie, słowniki, mapy kategorii), musi uczyć się ich wyłącznie na podstawie treningu. [2]
Wstępne przetwarzanie AI według typu danych: tabelaryczne, tekstowe, graficzne 🎛️
Wstępne przetwarzanie zmienia kształt w zależności od danych podanych w modelu.
Dane tabelaryczne (arkusze kalkulacyjne, logi, bazy danych) 📊
Typowe kroki:
-
strategia brakującej wartości
-
kodowanie kategoryczne [1]
-
skalowanie kolumn numerycznych [1]
-
obsługa wartości odstających (reguły domeny w większości przypadków są lepsze od „losowego przycinania”)
-
cechy pochodne (agregacje, opóźnienia, statystyki toczące się)
Praktyczna rada: zdefiniuj grupy kolumn w sposób jawny (liczbowe, kategoryczne, identyfikatory). Twoje przyszłe „ja” będzie Ci wdzięczne.
Dane tekstowe (NLP) 📝
Wstępne przetwarzanie tekstu często obejmuje:
-
tokenizacja na tokeny/podsłowa
-
konwersja na identyfikatory wejściowe
-
wypełnienie/obcięcie
-
tworzenie masek uwagi do przetwarzania wsadowego [3]
Drobna zasada, która oszczędza ból: w przypadku konfiguracji opartych na transformatorach, postępuj zgodnie z oczekiwanymi ustawieniami tokenizera modelu i nie rób freestyle'u, chyba że masz ku temu powód. Freestyle'owanie to sposób na osiągnięcie efektu „treninguje, ale jest dziwne”
Obrazy (wizja komputerowa) 🖼️
Typowe przetwarzanie wstępne:
-
zmień rozmiar / przytnij do spójnych kształtów
-
transformacje deterministyczne do oceny
-
losowe transformacje w celu zwiększenia efektywności treningu (np. losowe przycinanie) [4]
Ludzie pomijają jeden szczegół: „losowe transformacje” to nie tylko wibracje – dosłownie próbkują parametry przy każdym wywołaniu. Świetne do trenowania różnorodności, ale fatalne do ewaluacji, jeśli zapomni się wyłączyć losowość. [4]
Pułapka, w którą wpada każdy: wyciek danych 🕳️🐍
Wyciek ma miejsce, gdy informacje z danych ewaluacyjnych przedostają się do danych treningowych – często poprzez wstępne przetwarzanie. Może sprawić, że Twój model będzie wyglądał magicznie podczas walidacji, a potem rozczarować w rzeczywistości.
Typowe wzorce wycieków:
-
skalowanie przy użyciu statystyk całego zbioru danych (zamiast tylko szkolenia) [2]
-
tworzenie map kategorii przy użyciu metody train+test [2]
-
dowolny
fit()lubfit_transform(), który „widzi” zestaw testowy [2]
Zasada praktyczna (prosta, brutalna, skuteczna):
-
Wszystko, co ma sprawny krok, powinno być sprawne tylko podczas treningu.
-
Następnie przeprowadzasz transformację walidacji/testu, używając dopasowanego transformatora. [2]
A jeśli chcesz sprawdzić „jak źle to może być?”: dokumentacja scikit-learn pokazuje przykład wycieku, gdzie niepoprawna kolejność wstępnego przetwarzania daje dokładność około 0,76 dla losowych celów, a następnie spada do ~ 0,5 po usunięciu wycieku. Tak przekonująco może wyglądać błędny wyciek. [2]
Wprowadzanie wstępnego przetwarzania do produkcji bez chaosu 🏗️
Wiele modeli nie sprawdza się w produkcji nie dlatego, że są „złe”, ale dlatego, że dane wejściowe – lub zmienia się proces produkcyjny.
Wstępne przetwarzanie nastawione na produkcję zwykle obejmuje:
-
Zapisano artefakty (mapowania enkoderów, parametry skalatora, konfigurację tokenizatora), dzięki czemu wnioskowanie wykorzystuje dokładnie te same wyuczone transformacje [2]
-
Ścisłe kontrakty wejściowe (oczekiwane kolumny/typy/zakresy)
-
Monitorowanie odchyleń i dryftów , ponieważ dane produkcyjne będą się wahać [5]
Jeśli chcesz poznać konkretne definicje: model monitorowania Vertex AI firmy Google rozróżnia odchylenie między szkoleniem a obsługą (rozkład produkcji odbiega od rozkładu szkolenia) oraz dryft wnioskowania (rozkład produkcji zmienia się w czasie) i obsługuje monitorowanie zarówno cech kategorycznych, jak i numerycznych. [5]
Bo niespodzianki kosztują. I to nie te przyjemne.
Tabela porównawcza: popularne narzędzia do wstępnego przetwarzania i monitorowania (i dla kogo są przeznaczone) 🧰
| Narzędzie / biblioteka | Najlepszy dla | Cena | Dlaczego to działa (i odrobina uczciwości) |
|---|---|---|---|
| wstępne przetwarzanie scikit-learn | Tabularne potoki ML | Bezpłatny | Solidne enkodery + skalatory (OneHotEncoder, StandardScaler itp.) i przewidywalne zachowanie [1] |
| Tokenizatory Hugging Face | Przygotowanie danych wejściowych NLP | Bezpłatny | Tworzy spójne identyfikatory wejściowe i maski uwagi dla wszystkich przebiegów/modeli [3] |
| torchvision transformuje | Wizja transformuje się + powiększa | Bezpłatny | Czysty sposób na mieszanie transformacji deterministycznych i losowych w jednym potoku [4] |
| Monitorowanie modelu Vertex AI | Wykrywanie dryftu/przekosów w prod | Płatne (chmura) | Monitory mają funkcję pomiaru przekoszenia/dryfowania i wysyłają alerty w przypadku przekroczenia progów [5] |
(Tak, w tabeli nadal można znaleźć opinie. Ale przynajmniej są to opinie szczere 😅)
Praktyczna lista kontrolna wstępnego przetwarzania, z której możesz faktycznie skorzystać 📌
Przed treningiem
-
Zdefiniuj schemat wejściowy (typy, jednostki, dozwolone zakresy)
-
Audyt brakujących wartości i duplikatów
-
Prawidłowy podział danych (losowy/oparty na czasie/grupowany)
-
tylko podczas (
fit/fit_transformpozostaje w trakcie treningu) [2] -
Zapisywanie artefaktów wstępnego przetwarzania, aby można było je ponownie wykorzystać w procesie wnioskowania [2]
Podczas treningu
-
Stosuj losowe zwiększenie tylko wtedy, gdy jest to właściwe (zwykle dotyczy to tylko podziału treningowego) [4]
-
Utrzymuj deterministyczny charakter wstępnego przetwarzania oceny [4]
-
Śledź zmiany wstępnego przetwarzania, takie jak zmiany modelu (ponieważ tak jest)
Przed wdrożeniem
-
Upewnij się, że wnioskowanie korzysta z tej samej ścieżki wstępnego przetwarzania i artefaktów [2]
-
Skonfiguruj monitorowanie dryfu/skosu (nawet podstawowe kontrole rozkładu cech są bardzo przydatne) [5]
Głębokie zanurzenie: typowe błędy w procesie wstępnego przetwarzania (i jak ich uniknąć) 🧯
Błąd 1: „Szybko wszystko unormuję” 😵
Jeśli obliczasz parametry skalowania dla całego zestawu danych, tracisz informacje ewaluacyjne. Dopasuj w trakcie treningu, przekształć resztę. [2]
Błąd 2: kategorie dryfujące w chaosie 🧩
Jeśli mapowanie kategorii zmienia się między trenowaniem a wnioskowaniem, model może po cichu błędnie odczytywać świat. Utrzymuj stałe mapowania za pomocą zapisanych artefaktów. [2]
Błąd 3: losowe zwiększenie wartości wkradające się do oceny 🎲
Losowe transformacje są świetne podczas treningu, ale nie powinny być „włączane potajemnie”, gdy próbujesz zmierzyć wydajność. (Losowe oznacza losowe.) [4]
Uwagi końcowe 🧠✨
Preprocesowanie AI to zdyscyplinowana sztuka przekształcania chaotycznej rzeczywistości w spójne dane wejściowe modelu. Obejmuje ona czyszczenie, kodowanie, skalowanie, tokenizację, transformacje obrazów i – co najważniejsze – powtarzalne potoki i artefakty.
-
Przetwarzanie wstępne wykonuj świadomie, a nie pobieżnie. [2]
-
Najpierw podziel, dopasuj transformacje tylko podczas treningu, unikaj wycieków. [2]
-
Użyj odpowiedniego dla danego modalności wstępnego przetwarzania (tokenizatory dla tekstu, transformacje dla obrazów). [3][4]
-
Monitoruj odchylenia/dryfowanie produkcji, aby Twój model nie popadł powoli w nonsens. [5]
A jeśli kiedykolwiek utkniesz, zadaj sobie pytanie:
„Czy ten etap wstępnego przetwarzania nadal miałby sens, gdybym uruchomił go jutro na zupełnie nowych danych?”.
Jeśli odpowiedź brzmi „eee… może?”, to jest twoja wskazówka 😬
Odniesienia
[1] API scikit-learn:
sklearn.preprocessing (kodery, skalery, normalizacja) [2] scikit-learn: Typowe pułapki — wyciek danych i jak go uniknąć
[3] Dokumentacja Hugging Face Transformers: Tokenizery (identyfikatory wejściowe, maski uwagi)
[4] Dokumentacja PyTorch Torchvision: Transformacje (zmiana rozmiaru/normalizacja + losowe transformacje)
[5] Dokumentacja Google Cloud Vertex AI: Omówienie monitorowania modelu (skośność i dryft cech)