Dlaczego LLM-as-judge wymaga kalibracji
Kiedy potrzebujesz sędziego zamiast wzorca
Klasyczne scorery zakładają, że istnieje jedna poprawna odpowiedź. Exact match świetnie radzi sobie z literą na MMLU-Pro, a pass@k z testami jednostkowymi — ale co zrobić z pytaniem, na które dobrych odpowiedzi jest wiele? Otwarte dialogi, streszczenia, kod o wielu poprawnych wariantach wymagają oceny jakościowej. Tu wkracza LLM-as-judge: model językowy w roli sędziego, który czyta odpowiedź i wystawia werdykt według kryteriów z promptu.
Dwa tryby pracy sędziego
- LLM-as-judge: direct scoring — sędzia ocenia jedną odpowiedź w skali (np. 1–10) albo wypełnia rubrykę kryteriów. Tani i szybki, ale oceny bywają ściśnięte wokół kilku wartości i mocno zależą od promptu.
- LLM-as-judge: pairwise — sędzia porównuje dwie odpowiedzi i wskazuje lepszą (lub remis). Z wielu porównań buduje się ranking, najczęściej modelem Elo / Bradley-Terry, tak jak w Chatbot Arena.
Wspólna cecha obu trybów: sędzia jest modelem, więc dziedziczy jego uprzedzenia. Zanim potraktujesz werdykty jako pomiar, musisz je skalibrować.
Trzy uprzedzenia, które trzeba zmierzyć
Pierwszą systematyczną diagnozę znajdziesz w pracy Zhenga i in., „Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena" (NeurIPS 2023). Autorzy zbadali LLM-as-judge na tle ludzkich preferencji i udokumentowali m.in.:
- Bias pozycyjny (position bias) — werdykt zależy od kolejności, w jakiej sędzia czyta odpowiedzi. Ten sam tekst pokazany raz jako pierwszy, a raz jako drugi potrafi dostać inny werdykt; najczęściej wygrywa pierwsza pozycja.
- Self-preference — sędzia zawyża oceny odpowiedzi podobnych do własnego stylu, a zwłaszcza odpowiedzi własnego modelu. Model oceniający samego siebie to konflikt interesów wbudowany w architekturę.
- Wrażliwość na prompt — zmiana sformułowania kryteriów, skali albo formatu wyjścia przesuwa oceny, choć oceniane teksty się nie zmieniły. Drobna parafraza promptu to w praktyce inny scorer.
Do tego dochodzi skłonność do nagradzania rozwlekłości (verbosity bias): dłuższe odpowiedzi dostają wyższe noty niezależnie od treści. ### Test na bias pozycyjny
Bias pozycyjny łatwo sprawdzić automatycznie:
def position_swap_agreement(judge, prompt, answer_a, answer_b) -> float:
"""Zgodność werdyktów po zamianie kolejności; 1.0 = brak biasu pozycyjnego."""
verdict_ab = judge(prompt, first=answer_a, second=answer_b)
verdict_ba = judge(prompt, first=answer_b, second=answer_a)
return 1.0 if verdict_ab == verdict_ba else 0.0Kalibracja: korelacja z ludzkimi etykietami
Kalibracja to sprawdzenie, czy werdykty sędziego zgadzają się z ludzkimi ocenami — zanim uruchomisz go na tysiącach odpowiedzi, których nikt nie zweryfikuje. Procedura wygląda tak:
- Zbierz zbiór kalibracyjny: odpowiedzi z ludzkimi etykietami — od ekspertów albo z głosów crowdsourcingowych, jak w Chatbot Arena.
- Policz zgodność sędziego z ludźmi: agreement dla wyborów, korelację rang (np. Spearmana) dla ocen liczbowych.
- Zmierz biasy osobno: zamiana kolejności, odpowiedzi własnego modelu, parafrazy promptu.
- Opublikuj liczby — korelacja i biasy są częścią metodyki, nie dodatkiem.
Kluczowy wynik pracy Zhenga: silny sędzia w postaci GPT-4 osiągał ponad 80% zgodności z preferencjami ludzkimi, czyli poziom porównywalny ze zgodnością między samymi ludźmi. LLM-as-judge potrafi więc aproksymować ludzkie preferencje — ale tylko sędzia, który został w ten sposób zweryfikowany. Ten sam mechanizm bez kalibracji takiej gwarancji nie daje.
G-Eval: struktura zamiast improwizacji
G-Eval (Liu i in., „G-Eval: NLG Evaluation using GPT-4 with Better Human Alignment") to próba zdyscyplinowania direct scoringu. Zamiast luźnego „oceń w skali 1–5" autorzy proponują jawną definicję kryterium, chain-of-thought — sędzia najpierw pisze uzasadnienie, a dopiero potem wypełnia formularz oceny — oraz punktację wyliczaną z prawdopodobieństw tokenów oceny. W eksperymentach na streszczaniu G-Eval osiągał wyższą korelację Spearmana z ludzkimi ocenami niż wcześniejsze podejścia.
Strukturyzacja nie zastępuje kalibracji — zmniejsza wariancję promptu i wymusza jawne kryteria, ale sędzia nadal jest modelem ze swoimi biasami.
Kiedy LLM-as-judge, a kiedy nie
- Używaj LLM-as-judge tam, gdzie nie ma jednoznacznego wzorca: otwarte dialogi, streszczenia, ocena stylu.
- Tam, gdzie wzorzec istnieje, zostań przy deterministycznych scorerach — exact match i pass@k są tańsze i powtarzalne.
- Kalibruj na własnych danych: korelacja z ludźmi przenosi się między domenami tylko częściowo.
- W pairwise losuj kolejność i raportuj zgodność po swapie obok wyników.
Proces kalibracji krok po kroku opisujemy w przewodniku Dlaczego LLM-as-judge wymaga kalibracji, a granicę między benchmarkiem a scorerem przypomnisz sobie w Scorer a benchmark. Aktualne, stale rosnące zbiory ludzkich głosów — gotowy materiał do kalibracji — znajdziesz na żywo w Chatbot Arena.