SynthID: narzędzia do dodawania znaków wodnych i wykrywania tekstu wygenerowanego przez LLM

Generatywna sztuczna inteligencja (generatywna AI) może generować szersze spektrum zróżnicowanych treści na niespotykaną wcześniej skalę. Chociaż większość tych działań jest uzasadniona, istnieje obawa, że może to przyczyniać się do rozpowszechniania nieprawdziwych informacji i przypisywania treści nieodpowiednim osobom. Znak wodny to jedna z technik na minimalizowanie tych potencjalnych skutków. Znaki wodne niezauważalne dla człowieka można stosować w przypadku treści wygenerowanych przez AI, a modele wykrywania mogą oceniać dowolne treści, aby określić prawdopodobieństwo, że zawierają one znak wodny.

SynthID to technologia firmy Google DeepMind, która umożliwia dodawanie znaków wodnych i identyfikowanie treści wygenerowanych przez AI poprzez umieszczanie cyfrowych znaków wodnych bezpośrednio w obrazach, plikach audio, tekstach lub filmach wygenerowanych przez AI. Tekst SynthID jest dostępny na licencji open source , by udostępnić programistom znaki wodne na potrzeby generowania tekstu. Aby uzyskać bardziej szczegółowy opis techniczny metody, przeczytaj artykuł w Nature.

Wersja produkcyjna SynthID Text jest dostępna w Hugging Face Transformers w wersji 4.46.0 lub nowszej, którą możesz wypróbować w oficjalnym kontenerze SynthID Text Space. Implementacja referencyjna są również dostępne na GitHubie i mogą być przydatne dla open source opiekunom i współtwórcom, którzy chcą wdrożyć tę technikę w innych zasad.

Zastosowanie znaku wodnego

W praktyce SynthID Text to procesor logitów, który jest stosowany w ramach procesu generowania modelu po Top-K i Top-P. Uzupełnia on logit modelu za pomocą pseudolosowej funkcji g, aby zakodować informacje o znaku wodnym w sposób, który równoważy jakość generowania z możliwością wykrycia znaku wodnego. Pełny opis techniczny algorytmu oraz analizy wpływu różnych wartości konfiguracji na skuteczność znajdziesz w artykule.

Znaki wodne są konfigurowane tak, aby określały parametry funkcji g i sposobu jej stosowania podczas generowania. Każdy model, którego używasz, powinien mieć własną konfigurację znaku wodnego, która powinna być przechowywana w bezpieczny i prywatny sposób. W przeciwnym razie znak wodny może być łatwo powielany przez inne osoby.

W każdej konfiguracji znaku wodnego musisz zdefiniować 2 parametry:

  • Parametr keys to lista unikalnych, losowych liczb całkowitych, które służą do obliczania wyników funkcji g w przypadku słownictwa modelu. Długość określa liczbę warstw ze znakiem wodnym. Aby dowiedzieć się więcej, zapoznaj się z załącznikiem C.1 w publikacji.
  • Parametr ngram_len służy do równoważenia niezawodności i wykrywalności. im większa wartość, tym bardziej widoczny będzie znak wodny, jest bardziej odporne na zmiany. Dobra wartość domyślna to 5.

Znak wodny możesz skonfigurować dodatkowo w zależności od swoich potrzeb w zakresie wydajności:

  • Tabela próbkowania jest konfigurowana za pomocą 2 właściwości: sampling_table_sizesampling_table_seed. Chcesz użyć co najmniej sampling_table_size \( 2^{16} \) aby zapewnić obiektywne i stabilne działanie g podczas próbkowania, ale pamiętaj, że wielkość tabeli próbkowania wpływa na ilość pamięci wymaganej w czasie wnioskowania. Jako parametru sampling_table_seed
  • Powtarzające się n-gramy w poprzedzających tokenach context_history_size nie są opatrzone znakiem wodnym w celu ułatwienia ich wykrywania.

Aby wygenerować tekst z zastosowaniem znaku wodnego SynthID Text za pomocą swoich modeli, nie musisz przeprowadzać dodatkowego treningu. Wystarczy konfiguracja znaku wodnego, która zostanie przekazana do metody .generate() modelu, aby aktywować procesor logitowy SynthID Text. Zobacz post na blogu i Space – przykłady kodu pokazujący, jak zastosować znak wodny w bibliotece Transformers.

Wykrywanie i weryfikowanie znaków wodnych

Wykrywanie znaków wodnych jest prawdopodobne. Detektor bayesowski jest dostępny w Hugging Face Transformers i na GitHub. Ten wzorzec może wyświetlić 3 możliwe wykrywanie stany (oznaczone znakami wodnymi, bez znaku wodnego lub niepewne), a także działanie można dostosować, ustawiając dwie wartości progowe. Aby dowiedzieć się więcej, zapoznaj się z załącznikiem C.8 w publikacji.

Możesz dostosować progi, aby uzyskać określone wyniki fałszywie pozytywnych i fałszywych. ujemną stawkę dla zestawu promptów lub długości. Patrz Załącznik C.8 w dokumentu.

Gdy masz już przeszkolony wykrywacz, możesz zdecydować, czy i w jaki sposób udostępnić go użytkownikom oraz szerszej publiczności.

  • Opcja pełna prywatność nie powoduje ujawnienia ani upublicznienia detektora.
  • Opcja semi-private nie zwalnia wzorca do wykrywania, ale ujawnia; za pomocą interfejsu API.
  • Opcja publiczna udostępni detektor do pobrania i użycia przez innych.

Ty i Twoja organizacja musicie zdecydować, które podejście do weryfikacji wykrywania jest najlepsze dla Twoich potrzeb, biorąc pod uwagę możliwości obsługi powiązanej infrastruktury i procesów.

Ograniczenia

Znaki wodnego w formie tekstu SynthID są odporne na niektóre przekształcenia, takie jak przycinanie fragmentów tekstu, modyfikowanie kilku słów czy lekkie parafrazowanie, ale ta metoda ma też swoje ograniczenia.

  • W przypadku odpowiedzi dotyczących faktów stosowanie znaku wodnego jest mniej skuteczne, ponieważ nie ma możliwości zwiększenia generacji bez obniżania dokładności.
  • Wyniki wskaźnika ufności mogą się znacznie obniżyć, gdy tekst wygenerowany przez AI zostanie dokładnie przeredagowany lub przetłumaczony na inny język.

SynthID Text nie jest przeznaczony do bezpośredniego powstrzymywania zamierzonych przeciwników przed wyrządzaniem szkód. Może to jednak utrudniać wykorzystywanie treści generowanych przez AI do szkodliwych i można ją łączyć z innymi sposobami, aby zapewnić lepszy zasięg w ramach różnych rodzajów treści i platform.