
Marca d'água semântica com detecção robusta a ordem sobre unidades de sub-frase
O SwordStamp adiciona detecção robusta à ordem e unidades de extensão semântica a marcas d'água semânticas baseadas em embeddings. Este artefato contém a configuração exata do artigo, código de geração e detecção, o conjunto de ataques inalterado, avaliação de qualidade e extração e plotagem determinísticas de resultados.
Com taxa de falso positivo de 5% e requisito de preservação de conteúdo de 90%, o ataque de deslocamento de embedding específico do esquema (EDA-S) alcança:
| Marca d'água | Taxa de sucesso do ataque EDA-S |
|---|---|
| SemStamp | 47,9% |
| k-SemStamp | 33,3% |
| PMark | 46,1% |
| SAMark | 32,6% |
| SwordStamp | 18,7% |
| k-SwordStamp | 10,8% |
Em relação às suas linhas de base publicadas, SwordStamp e k-SwordStamp reduzem o sucesso do EDA-S em 29,2 e 22,5 pontos percentuais, com custos de fidelidade limpa de 1,8 e 4,4 pontos. Suas taxas de detecção limpa são de 94,9% e 97,0%. Sob o teste de estresse EDA-D com acesso ao detector mais forte, o sucesso máximo com restrição de qualidade é 39,7% no k-SwordStamp versus 65,5% no k-SemStamp.


Esses resultados cobrem continuações de notícias em inglês, um modelo de provedor, dois codificadores de provedor e um par de paráfrase/substituto EDA.
visualization consome apenas o pacote CSV/Parquet compilado. Ele falha em
células ausentes do artigo em vez de desenhar uma figura parcial.
uv sync --frozen --only-group plot --no-install-project
uv run --no-sync python -m visualization extract \
--bundle results/paper --output results/paper
uv run --no-sync python -m visualization render \
--bundle results/paper --output results/paper
Isso grava tabelas auditáveis em results/paper/tables/ e sete figuras em
PNG e PDF em results/paper/figures/. O ramo de revisão anônima inclui
o pacote compilado; uma execução completa no ramo de lançamento cria os mesmos arquivos
com python -m visualization compile.
O ataque de deslocamento de embedding (EDA) é um ataque adaptativo de paráfrase de texto completo.
Em cada unidade de saída, ele
amostra K continuações e mantém o candidato com o maior deslocamento de cosseno
de sua âncora de origem sob um codificador substituto. Como cada
candidato continua o prefixo completo de reescrita, um único objetivo pode reformular o conteúdo,
reordená-lo e dividir ou mesclar unidades do detector.
O EDA sem caixa vê o texto marcado e o design público da marca d'água. Ele não consulta o detector ou gerador e não recebe chave secreta, codificador de provedor ou oráculo de qualidade.
Para ancoragem por bag, o artigo usa attack.bag_agg=min: maximizar a distância da
âncora de origem mais próxima. Execuções sem caixa relatadas usam
Qwen/Qwen2.5-3B-Instruct, BAAI/bge-base-en-v1.5,
K={1,2,4,8,16,32,64}, temperatura 1.0, top-p 0.95, no máximo 96 tokens por
candidato e no máximo 512 tokens de reescrita.
Outros designers de marcas d'água podem chamar o EDA diretamente:
from attacks.paraphrasing.adaptive import adaptive_attack_paraphrase
attacked = adaptive_attack_paraphrase(
texts,
base_model="Qwen/Qwen2.5-3B-Instruct",
surrogate_model="BAAI/bge-base-en-v1.5",
num_candidates=32,
anchor="positional", # EDA-P; use "bag" para um design robusto à ordem
bag_agg="min",
segmentation_type="sentence",
segmentation_backend="nltk",
)
Para o EDA-S ciente do SwordStamp do artigo, defina anchor="bag",
segmentation_type="semspan", semcut_max_words=15 e
semcut_window=5. Dentro deste repositório, a CLI equivalente é:
uv run python -m attacks DATA_PATH --config PRESET \
--set attack.paraphraser=adaptive \
--set attack.custom_model=Qwen/Qwen2.5-3B-Instruct \
--set attack.surrogate_model=BAAI/bge-base-en-v1.5 \
--set attack.num_candidates=32 \
--set attack.anchor=bag --set attack.bag_agg=min \
--set segmentation.attacker_type=semspan \
--set segmentation.attacker_backend=nltk
DATA_PATH é sempre o corpus base e PRESET identifica a célula
marcada. Consulte attacks/README.md para todos os ataques e campos de configuração mantidos.

config/paper.py é a fonte única de verdade. Para cada um de LSH e k-means,
scripts/experiments/swordstamp.sh executa esta escada aditiva de cinco degraus com 64
candidatos do provedor:
A grade contém apenas essas dez células e uma linha de base sem marca d'água. PMark é
somente online; SAMark usa um padrão de sinalização por execução. Os orçamentos do EDA-D são
K={4,8,16,32,64}.
Os submódulos de comparação adaptam as fontes de avaliação públicas PMark e SAMark apenas em seus limites de conjunto de dados/resultados e calibração compartilhada de falso positivo; os algoritmos de marca d'água permanecem inalterados.
Os pré-requisitos são Git, uv, Python 3.11, CUDA para execuções de modelos, acesso às revisões de modelos fixadas e armazenamento temporário.
git clone --recurse-submodules [email protected]:D-Diaa/SwordStamp.git
cd SwordStamp
bash scripts/setup.sh
uv run --frozen python scripts/check_artifact.py
Prepare as partições C4 determinísticas e disjuntas:
uv run --frozen python scripts/prepare_c4.py --output-dir data
Instale e configure o agendador fixado. O instalador imprime seus efeitos colaterais no nível do usuário antes de alterar qualquer coisa:
bash scripts/install_gpu_scheduler.sh --print-plan
bash scripts/install_gpu_scheduler.sh --yes
gpu-scheduler init --gpus 0,1
gpu-scheduler start
Visualize e depois envie cada shard físico:
for shard in c4-val-def-256 c4-val-def-256b c4-val-def-512; do
BASE="data/$shard" DRY_RUN=1 bash scripts/experiments/swordstamp.sh
BASE="data/$shard" DRY_RUN=1 bash scripts/experiments/pmark.sh
BASE="data/$shard" DRY_RUN=1 bash scripts/experiments/samark.sh
done
# Remova DRY_RUN=1 após inspecionar os DAGs exatos.
Compile, extraia e renderize:
uv run --frozen python -m visualization all \
--bundle results/paper --output results/paper
O agendador fornece CUDA_VISIBLE_DEVICES; não selecione GPUs sondando
nvidia-smi. A reprodução completa é uma carga de trabalho de GPU de vários dias. ARTIFACT.md
lista hardware, revisões de modelos, saídas esperadas e o mapa de reivindicação para comando.
scripts/experiments/README.md documenta o comportamento de retomada e força.
config/, segmentation/, sampling/, watermarking/: SwordStamp.attacks/: EDA e o conjunto de ataques mantido.quality/: avaliação de fidelidade e preservação de conteúdo.visualization/: compilação somente do artigo, tabelas e figuras Matplotlib.scripts/experiments/: fluxos de trabalho exatos do artigo com suporte do agendador.external/: submódulos de comparação PMark e SAMark fixados.O código de primeira parte é lançado sob a Licença MIT. Modelos, conjuntos de dados, texto
gerado e submódulos de comparação mantêm seus próprios termos; consulte THIRD_PARTY.md.
O software SwordStamp é de autoria de Abdulrahman Diaa. Os autores do artigo são
Abdulrahman Diaa, Jonathan Petit e Florian Kerschbaum. Metadados de citação legíveis por máquina
estão em CITATION.cff.
| Variante | Âncora e unidade | Configuração |
|---|
| EDA-P | sentença posicional | adaptive, anchor=positional, unidade do atacante sentence |
| EDA-S | design público do alvo | sentenças posicionais para SemStamp, k-SemStamp e PMark; bag/sentença para SAMark; bag/semspan para ambas as variantes SwordStamp |
| EDA-D | detector do provedor | oracle; herda o codificador, a partição e a segmentação do defensor |