{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/arxiv-2603-12916","title":"Surprised by Attention: Predictable Query Dynamics for Time Series Anomaly Detection","arxiv_id":"2603.12916","date":"2026-03-13","proceeding":null,"authors":["Kadir-Kaan Özer","René Ebeling","Markus Enzweiler"],"abstract":"Multivariate time series anomalies often manifest as shifts in cross-channel dependencies rather than simple amplitude excursions. In autonomous driving, for instance, a steering command might be internally consistent but decouple from the resulting lateral acceleration. Residual-based detectors can miss such anomalies when flexible sequence models still reconstruct signals plausibly despite altered coordination. We introduce AxonAD, an unsupervised detector that treats multi-head attention query evolution as a short horizon predictable process. A gradient-updated reconstruction pathway is coupled with a history-only predictor that forecasts future query vectors from past context. This is trained via a masked predictor-target objective against an exponential moving average (EMA) target encoder. At inference, reconstruction error is combined with a tail-aggregated query mismatch score, which measures cosine deviation between predicted and target queries on recent timesteps. This dual approach provides sensitivity to structural dependency shifts while retaining amplitude-level detection. On proprietary in-vehicle telemetry with interval annotations and on the TSB-AD multi-variate suite (17 datasets, 180 series) with threshold-free and range-aware metrics, AxonAD improves ranking quality and temporal localization over strong baselines. Ablations confirm that query prediction and combined scoring are the primary drivers of the observed gains. Code is available at the URL https://github.com/iis-esslingen/AxonAD.","url_abs":"https://arxiv.org/abs/2603.12916","url_pdf":"https://arxiv.org/pdf/2603.12916","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2603.12916","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2603.12916"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/iis-esslingen/AxonAD","reach":null}],"summary":{"ran":6,"ran_draft_wrong":2,"ran_fixture":2,"unverified":3},"by_repo_kind":{"found_in_text":{"samples":13,"ran":10,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"206e0d113e593356","entry":"CausalConv1d","repo":"iis-esslingen/AxonAD","repo_kind":"found_in_text","path":"TSB_AD/models/AxonAD.py","file_url":"https://github.com/iis-esslingen/AxonAD/blob/HEAD/TSB_AD/models/AxonAD.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"206e0d113e593356"}},{"code_sha256_prefix":"9e3b15c51fde54ce","entry":"EarlyStoppingTorch","repo":"iis-esslingen/AxonAD","repo_kind":"found_in_text","path":"TSB_AD/models/AxonAD.py","file_url":"https://github.com/iis-esslingen/AxonAD/blob/HEAD/TSB_AD/models/AxonAD.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"9e3b15c51fde54ce"}},{"code_sha256_prefix":"f9a81b2c6223d532","entry":"PredictiveAttention","repo":"iis-esslingen/AxonAD","repo_kind":"found_in_text","path":"TSB_AD/models/AxonAD.py","file_url":"https://github.com/iis-esslingen/AxonAD/blob/HEAD/TSB_AD/models/AxonAD.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"f9a81b2c6223d532"}},{"code_sha256_prefix":"99ed6974c684dca1","entry":"ReconstructDataset","repo":"iis-esslingen/AxonAD","repo_kind":"found_in_text","path":"TSB_AD/models/AxonAD.py","file_url":"https://github.com/iis-esslingen/AxonAD/blob/HEAD/TSB_AD/models/AxonAD.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"99ed6974c684dca1"}},{"code_sha256_prefix":"7aa30aa728785327","entry":"TCNQueryPredictor","repo":"iis-esslingen/AxonAD","repo_kind":"found_in_text","path":"TSB_AD/models/AxonAD.py","file_url":"https://github.com/iis-esslingen/AxonAD/blob/HEAD/TSB_AD/models/AxonAD.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"7aa30aa728785327"}},{"code_sha256_prefix":"ab2e60649257cae1","entry":"TCNTransformerModel","repo":"iis-esslingen/AxonAD","repo_kind":"found_in_text","path":"TSB_AD/models/AxonAD.py","file_url":"https://github.com/iis-esslingen/AxonAD/blob/HEAD/TSB_AD/models/AxonAD.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ab2e60649257cae1"}},{"code_sha256_prefix":"0647abc1cca56498","entry":"_pprint","repo":"iis-esslingen/AxonAD","repo_kind":"found_in_text","path":"TSB_AD/models/AxonAD.py","file_url":"https://github.com/iis-esslingen/AxonAD/blob/HEAD/TSB_AD/models/AxonAD.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"0647abc1cca56498"}},{"code_sha256_prefix":"01e6a0a62c1579c4","entry":"get_gpu","repo":"iis-esslingen/AxonAD","repo_kind":"found_in_text","path":"TSB_AD/models/AxonAD.py","file_url":"https://github.com/iis-esslingen/AxonAD/blob/HEAD/TSB_AD/models/AxonAD.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"01e6a0a62c1579c4"}},{"code_sha256_prefix":"62e2847dc6b59704","entry":"get_label_n","repo":"iis-esslingen/AxonAD","repo_kind":"found_in_text","path":"TSB_AD/models/AxonAD.py","file_url":"https://github.com/iis-esslingen/AxonAD/blob/HEAD/TSB_AD/models/AxonAD.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"62e2847dc6b59704"}},{"code_sha256_prefix":"7d0b13d77094c2ef","entry":"precision_n_scores","repo":"iis-esslingen/AxonAD","repo_kind":"found_in_text","path":"TSB_AD/models/AxonAD.py","file_url":"https://github.com/iis-esslingen/AxonAD/blob/HEAD/TSB_AD/models/AxonAD.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"7d0b13d77094c2ef"}},{"code_sha256_prefix":"ff98834dc74659ef","entry":"BaseDetector","repo":"iis-esslingen/AxonAD","repo_kind":"found_in_text","path":"TSB_AD/models/AxonAD.py","file_url":"https://github.com/iis-esslingen/AxonAD/blob/HEAD/TSB_AD/models/AxonAD.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ff98834dc74659ef"}},{"code_sha256_prefix":"9dea0e697accb8e5","entry":"TCNTransformer","repo":"iis-esslingen/AxonAD","repo_kind":"found_in_text","path":"TSB_AD/models/AxonAD.py","file_url":"https://github.com/iis-esslingen/AxonAD/blob/HEAD/TSB_AD/models/AxonAD.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"9dea0e697accb8e5"}},{"code_sha256_prefix":"5b2704b756512448","entry":"min_memory_id","repo":"iis-esslingen/AxonAD","repo_kind":"found_in_text","path":"TSB_AD/models/AxonAD.py","file_url":"https://github.com/iis-esslingen/AxonAD/blob/HEAD/TSB_AD/models/AxonAD.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"5b2704b756512448"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.LG","source":"arxiv_2026.jsonl"},"syntology_extracted_results":null}