Generatywna sztuczna inteligencja (GenAI) może generować szerszy zakres bardzo zróżnicowanych treści na niespotykaną dotąd 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 ograniczania 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 opracowana przez 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, tekście lub filmach wygenerowanych przez AI. SynthID Text jest udostępniony na licencji open source, aby umożliwić deweloperom dodawanie znaków wodnych do wygenerowanego 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. Implentacja referencyjna jest też dostępna na GitHubie i może być przydatna dla deweloperów i współtwórców oprogramowania open source, którzy chcą wykorzystać tę technikę w innych ramach.
Znak wodny
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ą funkcji pseudolosowej g, aby zakodować informacje o znakowaniu wodnym w sposób, który ułatwia określenie, czy tekst został wygenerowany przez Twój model, bez znacznego wpływu na jakość tekstu. Pełny opis techniczny algorytmu oraz analizy wpływu różnych wartości konfiguracji na skuteczność znajdziesz w artykule.
Znaki wodne są konfigurowane w celu parametryzacji funkcji gi sposobu jej stosowania podczas generowania. Każda używana przez Ciebie konfiguracja znaku wodnego 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ść tej listy określa, ile warstw znaku wodnego jest stosowanych. Aby dowiedzieć się więcej, zapoznaj się z załącznikiem C.1 w publikacji. - Parametr
ngram_len
służy do zrównoważenia odporności i możliwości wykrycia. Im większa wartość, tym łatwiej wykryć znak wodny, ale jednocześnie staje się on bardziej podatny na zmiany. Długość 5 jest dobrą wartością domyślną.
Możesz dostosować znak wodny zgodnie ze swoimi potrzebami:
- Tabela próbkowania jest konfigurowana za pomocą 2 właściwości:
sampling_table_size
isampling_table_seed
. Aby zapewnić bezstronne i stabilne działanie funkcji g podczas próbkowania, należy użyćsampling_table_size
o wartości co najmniej216 . Należy jednak pamiętać, że rozmiar tabeli próbkowania wpływa na ilość pamięci wymaganą w momencie wnioskowania. Jakosampling_table_seed
możesz użyć dowolnej liczby całkowitej. - Powtarzające się n-gramy w poprzedzających tokenach
context_history_size
nie są opatrzone znakiem wodnym w celu ułatwienia ich wykrywania.
Aby generować tekst z zaszyfrowanym znakiem wodnym 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 logitów SynthID Text. Przykłady kodu pokazujące, jak zastosować znak wodny w bibliotece Transformers, znajdziesz w tym poście na blogu i tym artykule.
Wykrywanie znaków wodnych i weryfikowanie
Wykrywanie znaku wodnego jest oparte na prawdopodobieństwie. Detektor bayesowski jest dostępny w Hugging Face Transformers i na GitHub. Ten detektor może zwracać 3 możliwe stany wykrywania – z wododnym lub niewododnym znakiem wodnym albo niepewność – a jego działanie można dostosować, ustawiając 2 wartości progowe, aby uzyskać określony współczynnik wyników fałszywie dodatnich i fałszywie ujemnych. Aby dowiedzieć się więcej, zapoznaj się z załącznikiem C.8 w publikacji.
Modele, które korzystają z tego samego tokenizatora, mogą też mieć wspólną konfigurację znaku wodnego i detektora, a tym samym wspólny znak wodny, o ile zestaw treningowy detektora zawiera przykłady ze wszystkich modeli, które mają ten sam znak wodny.
Gdy masz już przeszkolony wykrywacz, możesz zdecydować, czy i w jaki sposób udostępnić go użytkownikom oraz ogólnie szerszej publiczności.
- Opcja pełna prywatność nie powoduje ujawnienia ani upublicznienia detektora.
- Opcja półprywatna nie zwalnia detektorów, ale udostępnia je przez interfejs API.
- Opcja publiczny umożliwia innym użytkownikom pobranie i używanie wykrywacza.
Ty i Twoja organizacja musicie zdecydować, które podejście do weryfikacji wykrywania najlepiej odpowiada Waszym potrzebom, biorąc pod uwagę Wasze 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 swoje ograniczenia.
- W przypadku odpowiedzi na pytania dotyczące faktów stosowanie znaku wodnego jest mniej skuteczne, ponieważ nie ma możliwości zwiększenia generacji bez obniżenia dokładności.
- Wyniki wskaźnika ufności mogą być znacznie niższe, 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 utrudnić wykorzystanie treści wygenerowanych przez AI do złych celów. Można je też połączyć z innymi podejściami, aby uzyskać lepsze pokrycie w przypadku różnych typów treści i platform.