05 · Bez nadzoru · 4 min czytania · aktualizacja
Czym jest uczenie samonadzorowane (self-supervised learning)?
W skrócie
Uczenie samonadzorowane tworzy etykiety z samych danych: zakrywa fragment i każe go odgadnąć. Tak uczą się modele językowe i wizyjne bez ręcznego opisywania.
Co to jest
Uczenie samonadzorowane (self-supervised learning) to sposób trenowania modeli, w którym etykiety nie pochodzą od ludzi, tylko są wytwarzane automatycznie z samych danych. Ukrywa się część przykładu — następne słowo, zamaskowany fragment obrazu, kolejną klatkę filmu — i każe modelowi ją odtworzyć. Takie sztuczne zadanie nazywa się zadaniem pomocniczym (pretext task).
Celem nie jest samo zadanie pomocnicze. Nikogo nie obchodzi, czy model odgadnie zakryty piksel; chodzi o to, że żeby go odgadnąć, musi nauczyć się, jak zbudowane są dane. Wyuczona reprezentacja trafia potem do właściwego zadania — klasyfikacji, wyszukiwania, odpowiadania na pytania — gdzie wystarcza już niewiele etykiet. To fundament dzisiejszych dużych modeli: GPT uczy się przewidywać następny token, BERT — odgadywać zamaskowane słowa.
Mechanizm — dlaczego tak działa
Technicznie to uczenie nadzorowane: jest wejście, cel i funkcja straty. Różnica polega na tym, skąd bierze się cel. Ponieważ generuje go program, a nie człowiek, przykładów treningowych może być tyle, ile surowych danych — miliardy zdań, setki milionów obrazów. To właśnie skala sprawia, że metoda działa.
Dlaczego dobre zadanie pomocnicze uczy przydatnych cech? Żeby przewidzieć słowo w zdaniu „Stolicą Francji jest …”, model musi mieć w reprezentacji coś o geografii. Żeby uzupełnić zakrytą połowę twarzy, musi rozumieć symetrię i kształt twarzy. Dobre zadanie jest takie, że jego rozwiązanie wymaga wiedzy przydatnej gdzie indziej, a nie da się go oszukać prostym skrótem — np. kolorem sąsiedniego piksela.
Są dwie główne rodziny. Generatywne / maskujące: odtwórz zakrytą część wejścia (przewidywanie następnego tokenu, BERT, Masked Autoencoders dla obrazów). Kontrastowe: dwie różne przeróbki tego samego obrazu (kadrowanie, zmiana kolorów) mają dostać podobne reprezentacje, a przeróbki różnych obrazów — odmienne (SimCLR). Tu model uczy się, co jest nieistotne, bo augmentacje definiują, jakie zmiany nie zmieniają treści.
Ograniczenia: zadanie pomocnicze musi pasować do zadania docelowego, a wybór augmentacji czy sposobu maskowania wprowadza silne założenia. Koszt obliczeniowy pretreningu jest ogromny. A na małych zbiorach korzyść bywa znikoma — sieć nie ma z czego wyciągnąć wiedzy, której nie da się zobaczyć bezpośrednio w kilkudziesięciu etykietach.
Na przykładzie
Mały eksperyment na zbiorze Digits (1797 cyfr 8×8): 1257 obrazów treningowych, 540 testowych. Udajemy, że etykiety mamy tylko dla 50 obrazów (po 5 na cyfrę); wynik uśredniamy po 5 losowaniach. Regresja logistyczna na surowych pikselach: 81,6% trafności. Zadanie pomocnicze: sieć z jedną warstwą 256 neuronów uczy się odtwarzać cały obraz z wersji, w której losowo wyzerowano połowę pikseli — na wszystkich 1257 obrazach, bez etykiet. Regresja logistyczna na 256 cechach z tej warstwy: 83,9%.
Brzmi jak sukces, ale uczciwa kontrola to zmienia: losowa, w ogóle nietrenowana warstwa tej samej wielkości daje 83,6%. Prawie cały zysk bierze się z samego rzutu na 256 nieliniowych cech, a nie z wiedzy wyniesionej z zadania pomocniczego. Wersja z wąskim gardłem z 32 cechami: 82,2%, z 16 cechami: 79,4%. Dla porównania model uczony na wszystkich 1257 etykietach osiąga ok. 97%. Wniosek: na tysiącu małych obrazków uczenie samonadzorowane prawie nic nie daje; jego siła ujawnia się przy danych o skali, której nie da się opisać ręcznie.
Dane: Digits (ręcznie pisane cyfry 8×8)
W praktyce
- Najczęściej nie trenujesz sam, tylko bierzesz gotowy pretrenowany model (
transformersz Hugging Face,torchvision.models,timm) i douczasz go lub używasz jego cech. - Prosty test wartości reprezentacji: zamroź model, wyciągnij cechy i dopasuj na nich
LogisticRegression(tzw. linear probe). - Zawsze porównuj z kontrolą: surowe cechy, losowa sieć tej samej architektury, PCA. Bez tego łatwo przypisać zysk pretreningowi.
- W kontrastowych metodach kluczowe są augmentacje (
torchvision.transforms) i duże paczki danych; w maskujących — odsetek maskowania (w MAE dla obrazów aż 75%). - Własny pretrening ma sens, gdy masz dużo nieopisanych danych z dziedziny bardzo odmiennej od ogólnodostępnych (np. obrazy medyczne, sygnały przemysłowe).
Najczęstsze pytania
- Czym różni się uczenie samonadzorowane od nienadzorowanego?
- Granica jest płynna. Samonadzorowane to podzbiór nienadzorowanego, w którym wykorzystuje się maszynerię uczenia nadzorowanego: z danych tworzy się pary wejście–cel i minimalizuje zwykłą stratę. Klasyczne metody nienadzorowane, jak k-średnich czy PCA, optymalizują kryteria bez takich sztucznych etykiet.
- Dlaczego modele językowe są samonadzorowane?
- Bo uczą się przewidywać kolejny token w ogromnych zbiorach tekstu, a celem jest po prostu następne słowo z tego samego tekstu. Nikt nie musi niczego opisywać. Ręczne etykiety pojawiają się dopiero na późniejszym etapie dostrajania do instrukcji i preferencji.
- Czym jest linear probe?
- To test jakości reprezentacji: zamrażasz pretrenowaną sieć, bierzesz jej cechy i uczysz na nich tylko prosty klasyfikator liniowy. Jeśli liniowy model na tych cechach dobrze rozwiązuje zadanie, reprezentacja zawiera potrzebną informację w łatwo dostępnej postaci.
Źródła
- Devlin J., Chang M.-W., Lee K., Toutanova K., „BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding”, NAACL 2019.
- Chen T., Kornblith S., Norouzi M., Hinton G., „A Simple Framework for Contrastive Learning of Visual Representations”, ICML 2020.
- He K., Chen X., Xie S., Li Y., Dollár P., Girshick R., „Masked Autoencoders Are Scalable Vision Learners”, CVPR 2022.
- Doersch C., Gupta A., Efros A. A., „Unsupervised Visual Representation Learning by Context Prediction”, ICCV 2015.
- Goodfellow I., Bengio Y., Courville A., „Deep Learning”, MIT Press 2016, rozdz. 15 (Representation Learning).