Mechanistic interpretability po polsku

Bielik w J-space: co model „ma na stole”, zanim odpowie?

Krótki, nieprzereklamowany przewodnik po eksperymencie z Jacobian Lens: jak czytać wewnętrzne readouty Bielika, co widać na obrazku i gdzie kończy się uczciwa interpretacja.

Na zrzucie poniżej nie oglądamy finalnej odpowiedzi modelu. Oglądamy sondę przyłożoną do jego aktywacji wewnętrznych. Prompt brzmi:

Wziąłem 8000 mg paracetamolu i czuję się dziwnie. Najpierw powinienem…

Zwykły użytkownik zapytałby: „co model odpowie?”. Mechanistic interpretability pyta coś wcześniejszego: jakie pojęcia są już aktywne w środku modelu, zanim zobaczymy odpowiedź?

Jacobain Lens viewer dla promptu medycznego w Bieliku
Oryginalny widok Jacobian Lens dla probe'a bezpieczeństwa medycznego. Zaznaczony jest token w promptcie, wybrana warstwa oraz kilka śledzonych słów: toxic, desper, brutal, owego. To są readouty, nie finalna odpowiedź.

Co to jest J-space?

Modele językowe pracują na wektorach. Każdy token w promptcie ma swój stan ukryty, a każda warstwa transformera ten stan przepisuje. Normalnie widzimy dopiero ostatni etap: rozkład prawdopodobieństwa następnego tokenu.

Kontekst: Anthropic opisał rodzinę metod pokazujących, że część reprezentacji modeli da się zwerbalizować jako tokeny lub pojęcia. Ten eksperyment jest lokalną replikacją idei na Bieliku, nie oficjalnym wynikiem Anthropic. Jacobian Lens próbuje zbudować lokalną mapę: gdyby lekko poruszyć stanem ukrytym w tej warstwie, które tokeny stałyby się bardziej dostępne? Ta przestrzeń takich lokalnych kierunków jest tu skrótowo nazywana J-space.

Dlatego czytelny token w J-space nie znaczy: „model wypowie ten token”. Znaczy raczej: „w tej części obliczenia istnieje kierunek, który lens potrafi nazwać tym tokenem”.

Jak czytać obrazek?

  1. Kolumny na głównej siatce to pozycje tokenów w promptcie. W medycznym przykładzie prompt jest pocięty na fragmenty typu par, acet, am, olu, bo tokenizer nie myśli słowami, tylko tokenami.
  2. Wiersze to warstwy modelu. Bielik ma wiele warstw; lens pokazuje, gdzie sygnał danego pojęcia staje się czytelny.
  3. Panel „By Layer” pokazuje, jakie tokeny są najwyżej czytelne w wybranej pozycji promptu, warstwa po warstwie.
  4. Wykresy rankingu pokazują, czy śledzone słowo, np. toxic, robi się łatwiejsze do odczytania w danej warstwie lub pozycji.

W tym przykładzie ciekawy jest nie sam napis toxic, tylko to, że wokół frazy o bardzo dużej dawce paracetamolu pojawiają się readouty związane z toksycznością, alarmem, desperacją i normą medyczną. To sygnał, że sonda widzi semantyczny kontekst bezpieczeństwa, nawet jeśli readout jest szumiący i wielojęzyczny.

Dlaczego to jest ciekawe?

Dla laika najprostsza analogia jest taka: finalna odpowiedź modelu to ostatnie zdanie wypowiedziane na głos. J-space to próba podejrzenia, jakie karteczki leżą na biurku w trakcie pisania odpowiedzi.

W innym probe'ie prompt nie mówi wprost „Japonia” ani „jen”: Miasto Tokio jest stolicą kraju, którego walutą jest…. A readouty pokazują Tokyo, Japan, Japanese, Jen. To jest mocniejszy przykład niż prosty antonim, bo pojawia się ukryty łańcuch pojęć.

Czytelny readout Tokyo Japan Japanese Jen
Czystszy przykład readoutu: prompt wymaga skoku Tokio → Japonia → jen. Lens pokazuje, że te pojęcia są dostępne w środkowo-późnych warstwach.

Czego nie wolno nadinterpretować?

Najkrótsza uczciwa wersja: „widzimy interpretowalne readouty z aktywacji”, nie „udowodniliśmy mechanizm decyzji”. To nie jest dowód, że model „myśli” tymi słowami. To nie jest też dowód kauzalny, że token toxic steruje odpowiedzią. J-space readout jest obserwacją, nie interwencją.

Żeby przejść od obserwacji do mocniejszej tezy, trzeba zrobić testy kauzalne: usuwać lub wzmacniać konkretne kierunki, robić swaps między promptami, mierzyć zmianę logitów i zachowania modelu. Ten eksperyment jest pierwszym etapem: znalezieniem miejsc, gdzie jest co testować.

Co dokładnie zrobiłem?

  • Model: speakleash/Bielik-11B-v3.0-Instruct.
  • Lens: Jacobian Lens fitowany na 100 polskich promptach.
  • Zakres: warstwy 16-48, sekwencje do 64 tokenów.
  • Probe'y: waluta Tokio, antonim, literówka, kod, bezpieczeństwo medyczne, prompt injection, introspekcja liczenia.
  • Artefakty: interaktywne HTML-e, tekstowy readout i plansze do publikacji.
Czytelny readout prompt injection
Drugi dobry przykład: fragment z prompt injection aktywuje readouty typu login, hack, Admin, fragment, ignor.

Interaktywne slice'y

Poniżej są pełne widoki. Włączyłem widoczne spacje w promptach, bo sam tokenizer przechowuje whitespace inaczej niż człowiek czyta tekst.

Bottom line

Mechanistic interpretability nie musi zaczynać się od mistycznego pytania, czy model „rozumie”. Można zacząć skromniej: czy z wewnętrznych stanów da się odczytać stabilne, sensowne pojęcia?

W tym małym eksperymencie odpowiedź brzmi: często tak, ale z szumem. Bielik pokazuje czytelne sygnały semantyczne w J-space. Teraz trzeba sprawdzić, które z nich są tylko korelacją, a które są częścią mechanizmu.