Klasyczne ZSL w wizji: (1) Każdej klasie (zarówno widzianej, jak i niewidzianej) przypisuje się wektor semantyczny a_c ∈ ℝ^d — atrybuty binarne, embeddingi nazwy klasy (Word2Vec, GloVe), albo zdania opisowe. (2) Trenuje się funkcję mapującą f: X → ℝ^d z obrazów na przestrzeń semantyczną, używając tylko klas widzianych S. Najczęściej minimalizuje się stratę kompatybilności (cosine, ranking) między f(x) a a_y dla ground-truth y, albo bezpośrednio uczy klasyfikator atrybutów (DAP/IAP Lamperta). (3) W czasie inferencji dla testowego obrazu x oblicza się f(x) i przypisuje do klasy ĉ = argmax_{c ∈ U} sim(f(x), a_c). Współczesny zero-shot przez CLIP: trener kontrastywny uczy wspólnej przestrzeni embeddingów obrazów i tekstu na ogromnym zbiorze par (Conceptual Captions, LAION, WIT). Klasyfikacja zero-shot to porównanie embeddingu obrazu z embeddingami tekstowych promptów klas — bez fine-tuningu. Zero-shot prompting w LLM: model dostaje instrukcję zadania w naturalnym języku ("Przetłumacz to zdanie na francuski:") i wykonuje je dzięki temu, że pretrening na ogromnym korpusie pokrył podobne wzorce. Brak demonstracji odróżnia zero-shot od few-shot / in-context learning.
Jak rozpoznawać klasy lub wykonywać zadania, dla których nie da się zebrać oznaczonych danych — bo jest ich za mało (rzadkie gatunki, rzadkie choroby), są dynamicznie powstające (nowe produkty, nowe intencje użytkowników) albo anotacja jest zbyt kosztowna. ZSL transferuje wiedzę z klas/zadań widzianych do niewidzianych przez wspólną reprezentację semantyczną.
Wspólna przestrzeń wektorów, w której każdą klasę można opisać niezależnie od oznaczonych obrazów — atrybuty, word embeddings, embeddingi opisów tekstowych albo wyjścia kodera tekstowego.
Wektor opisujący każdą klasę c — w klasycznym ZSL ręcznie definiowane atrybuty (Animals with Attributes, CUB), w nowoczesnym ZSL embedding promptu typu "a photo of a {class}".
Funkcja s(x, c) mierząca dopasowanie wejścia x do klasy c przez podobieństwo w przestrzeni semantycznej (cosine, dot product, ranking) — używana zarówno w treningu, jak i w inferencji.
Sieć kodująca wejście (obraz, audio, tekst) w wektor porównywalny z wektorami semantycznymi klas — ResNet/ViT w CLIP, encoder LLM dla zero-shot NLP.
Bardzo częsty błąd w pracach ZSL: klasy U pojawiają się w danych pretreningu (np. ImageNet pretrained backbone, a U ⊂ ImageNet). Wyniki są wtedy zawyżone.
Model trenowany na klasach widzianych ma silne preferencje softmax względem nich; w GZSL niemal wszystko klasyfikuje do S, prawie nic do U.
W wysokowymiarowych przestrzeniach kilka klas staje się "hubami" — najbliższym sąsiadem nieproporcjonalnie wielu zapytań — co degraduje klasyfikację nearest-neighbor.
W CLIP-style ZSL drobne zmiany szablonu promptu ("a photo of a {class}" vs "{class}") zmieniają accuracy o kilka punktów procentowych.
Embedingi nazw klas rzadkich (np. mało popularnych gatunków) są słabo wytrenowane w korpusie tekstowym — ZSL nie potrafi ich dobrze reprezentować.
Pierwsza eksplicytna formulacja ZSL — uczenie nowych zadań klasyfikacji bez żadnych przykładów docelowej klasy poprzez deskryptory zadania.
Dwie równoległe prace osadzające ZSL w klasyfikacji obrazów z atrybutami semantycznymi; AwA staje się standardowym benchmarkiem.
Frome et al. (Google) zastępują ręczne atrybuty embeddingami słów Word2Vec, otwierając ZSL na ImageNet skali.
Standaryzacja ewaluacji ZSL i wprowadzenie protokołu generalized zero-shot, ujawnia silny bias w stronę klas widzianych.
Brown et al. pokazują, że duże LLM wykonują zadania bez fine-tuningu wyłącznie z instrukcji w prompt — ZSL wychodzi z wizji do mainstreamowego NLP.
Radford et al. (OpenAI) ustanawiają kontrastywny pretrening na 400M par obraz-tekst jako standard zero-shot klasyfikacji; CLIP osiąga konkurencyjne wyniki na ImageNet bez ani jednego oznaczonego przykładu z ImageNet.
ZSL rozszerza się z klasyfikacji na detekcję, segmentację, generowanie i sterowanie robotami — open-vocabulary staje się synonimem zero-shot w praktyce.
Złożoność czasowa: O(|U| · d) na predykcję (po obliczeniu embeddingu). Złożoność przestrzenna: O(|C| · d).
ZSL nie wprowadza własnego paradygmatu wykonania — dziedziczy go po architekturze hostującej (Transformer dense, MoE conditional itd.). Klasyfikacja przez podobieństwo to gęsta operacja matmul.
Sama klasyfikacja zero-shot to operacja macierzowa (matmul embeddingu obrazu z bankiem embeddingów klas), idealnie zrównoleglona na GPU. Trening encoderów (np. CLIP) jest masowo równoległy po batchu obraz-tekst.
Atrybuty ręczne, embeddingi słów (Word2Vec/GloVe), embeddingi tekstowe LLM, opisy z Wikipedii — fundamentalnie wpływa na jakość transferu.
W CLIP-stylu np. "a photo of a {class}" vs "a satellite image of a {class}". Ensemble szablonów (prompt engineering) podnosi accuracy zero-shot o kilka punktów procentowych.
Bilinear (DeViSE, ALE), ranking, cosine + temperatura (CLIP). Wpływa na skalowanie z liczbą klas.
W generalized ZSL kluczowe jest złagodzenie biasu w stronę klas widzianych (calibrated stacking, kalibracja softmax).
Klasyfikacja zero-shot to encoder forward + matmul embeddingu z bankiem klas — operacje idealnie pasujące do tensor cores. Pretrening CLIP/SigLIP wymaga klastrów GPU.
Google trenuje swoje multimodalne foundation models (ALIGN, PaLI, Gemini) na TPU — kontrastywny pretrening dobrze mapuje się na systolic arrays.
Inferencja zero-shot z kwantyzowanym CLIP-em (np. ONNX Runtime, GGML) jest możliwa na CPU AVX2/AVX-512 dla mniejszych modeli (ViT-B).
Sam algorytm ZSL (porównanie embeddingu z bankiem) jest nieczuły na hardware — koszt determinuje wybór encodera.