fix: clarify dual-path fitness evaluation in method overview

The fitness function has two scoring paths: tool-call responses use
keyword/substring matching, while text-content responses additionally
use NLL loss from logprobs. The previous description conflated these
into a single scoring mechanism.
This commit is contained in:
kigland
2026-03-09 12:58:55 +08:00
parent ef9d2bcf81
commit 00ad0819da
+1 -1
View File
@@ -78,7 +78,7 @@ The core optimization pipeline operates as follows:
2. **PCA Dimensionality Reduction** — Reduce the embedding dimensionality (2560d → 128d per token) via PCA to make CMA-ES tractable at scale
3. **sep-CMA-ES Optimization** — Search over the PCA-reduced space using separable CMA-ES (`CMA_diagonal=True`) with diagonal covariance for O(n) per-generation complexity
4. **Soft-to-Hard Token Mapping** — Map continuous vectors back to discrete tokens via FAISS `IndexFlatL2` nearest-neighbor search in the full embedding space
5. **Black-Box Fitness Evaluation** — Query the target model API with candidate triggers and score responses using a multi-component fitness function (NLL loss + keyword overlap + longest common substring via `SequenceMatcher`)
5. **Black-Box Fitness Evaluation** — Query the target model API with a `bash` tool definition and candidate triggers. Responses are scored via two paths: tool-call responses are evaluated by matching the invoked command against the target payload (keyword overlap + longest common substring); text-content responses are additionally scored using NLL loss from logprobs. The optimizer preferentially converges toward tool-call execution.
### Attack Vectors