ML Atlas

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 (transformers z 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).

Zobacz też