Głosowanie kłamie. Niezgoda zwykle nie
Na AIME 2026 pseudo-label z głosowania Qwen3-1.7B jest błędny dla około 85% zadań. Da się z tego mimo to uczyć, bo wśród odpowiedzi, które się z klastrem nie zgadzają, około 79% też jest błędnych.
Chcesz, żeby model poprawił się na trudnym zadaniu teraz, w czasie odpowiedzi. Etykiety nie ma. To jest test-time training: uczenie na tym samym zbiorze, na którym model ma odpowiadać.
On-policy self-distillation (OPSD) uczy token po tokenie. Drugi przebieg tego samego modelu dostaje poprawną odpowiedź w zapytaniu i na jej podstawie poprawia każdy krok. Bez etykiety tej odpowiedzi nie ma. GRPO dostaje jedną nagrodę na całe rozwiązanie, więc zły wynik głosowania psuje aktualizację raz. Jeśli tę samą złą odpowiedź wsadzisz do destylacji, błąd wchodzi w każdy token.
Dotychczas i TTPO
Naturalny trik: wylosuj K rozwiązań i weź najliczniejszy klaster jako pseudo-label. Paper TTPO (Wang et al., arXiv 2608.27448) nazywa to majority voting. Algorytm 1 robi plurality. 3/8 albo 4/8 to nie większość.
TTRL używa tego klastra jako jednej nagrody na całe rozwiązanie. Jeśli wstawisz ten sam klaster w miejsce etykiety OPSD i destylujesz wszystkie rozwiązania, błąd wchodzi w każdy token.
TTPO tnie grupę na zgodę z klastrem (P) i niezgodę (N). Destyluje tylko P. Karze tylko N. Waga tokenów jest częścią metody, nie poprawką na końcu.
Przykład
W eksperymencie model losuje K = 64 rozwiązań. Do aktualizacji bierze osiem trajektorii (K_train = 8, po połowie z P i z N). Osiem kartek poniżej to analogia tego drugiego kroku, nie całego głosowania.
7, 7, 7, 12, 19, 42, 4, 31
Najliczniejszy klaster to 7 (3/8). Prawda to 42. 3/8 nie jest większością. Klaster jest błędny.
Zgoda: trzy siódemki. Niezgoda: 12, 19, 42, 4, 31. Cztery z pięciu niezgod są złe. Jedna jest poprawna. Kara za „nie 7” jest więc zwykle trafna (w paperze około 79% niezgod jest złych, gdy klaster też jest zły), ale tu obniżyłaby wagę jedynego poprawnego rozwiązania.
Przełożenie na algorytm
| Kartki | Element TTPO |
|---|---|
| 8 kartek | K_train = 8, po wylosowaniu K = 64 |
| 7 z liczebnością 3 | najliczniejszy klaster |
| trzy siódemki | zbiór P, strata OPSD |
| 12, 19, 42, 4, 31 | zbiór N, strata GRPO |
| 42 wśród N | błędna kara: poprawne rozwiązanie w zbiorze negatywnym |
Nauczyciel OPSD dostaje w zapytaniu tę samą 7, którą trzy zgodne rozwiązania już dały. Gradient nie ciągnie ich do obcej odpowiedzi. Sprowadza się do destylacji trybu z myśleniem w tryb bez myślenia.
Wagi tokenów: OPSD zmniejsza wagę pozycji, na których student już jest zgodny z nauczycielem (entropia i rozjazd KL, Soft-OR). GRPO zostawia górne 50% tokenów według −log p razy pewność i karze pewne, mało prawdopodobne błędy. Dolna połowa, w tym lokalnie poprawne kroki, nie dostaje kary. W tej gałęzi nie ma dodatniej przewagi, która by taką karę odbiła.
Poniżej ta sama ósemka. Zielone: P. Czerwone: N.
Na łatwym zadaniu najliczniejszy klaster zwykle jest poprawny i oba ruchy pomagają. Na trudnym, tam gdzie TTT jest potrzebny, liczy się podział: destyluj tylko zgodę, karz niezgodę, licz się z tym, że w N może być 42.
Wyniki
Trzy osobne ustawienia.
OpenThoughts. TTPO nie używa etykiet, OPSD używa. Średnio na pięciu benchmarkach Qwen3-1.7B: TTPO 40.1, OPSD 39.7.
Czyste TTT, trening na teście, bez adnotacji. Qwen3-1.7B na AIME 2026, HMMT 2026 i BRUMO 2025: 38.0% → 45.2%.
Ewaluacja bez thinking mode po treningu na OpenThoughts, nie po czystym TTT. Przyrost względem bazy: +25.2 (1.7B), +30.6 (4B), +36.4 (8B).
Autorzy raportują najlepszy checkpoint. TTPO: 100 kroków, pomiar co 25.
Ablacja na trudnym AIME: gdy prawie żadne wylosowane rozwiązanie nie trafia w prawdę, podział według ground truth zostawia puste P i zerową przewagę GRPO. Podział według klastra zawsze ma niepuste P. To nie znaczy, że błędna etykieta uczy lepiej niż prawdziwa. Znaczy, że na tym benchmarku rzadka prawda psuje routing, a klaster go nie psuje.
Czego to nie pokazuje
To świeży preprint. Zadania to matematyka z odpowiedzią, którą można automatycznie wyodrębnić i porównać. Kod bez testów albo otwarty tekst nie dają takiego klastra.
Gdy K jest małe albo żadne wylosowane rozwiązanie nie jest poprawne, plurality jest szumem. Kara za niezgodę czasem trafia w jedyne poprawne rozwiązanie.
Wniosek praktyczny: nie wlewaj treści klastra do wszystkich rozwiązań. Użyj klastra tylko do podziału na P i N. Destyluj zgodę. Karz niezgodę. Licz się z tym, że plurality to nie większość, a wśród N może być poprawna odpowiedź.
Pojęcia
src: https://arxiv.org/abs/2608.27448 TTPO: Test-Time Policy Optimization (Wang, Lu, Wang, Lv et al.)
42 AI
42au3⁝ Test-time scaling
Wykorzystuję treści generowane przez AI jako część mojego codziennego procesu nauki.