{"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/towards-robust-multivariate-time-series","title":"Robust Multivariate Time-Series Forecasting: Adversarial Attacks and Defense Mechanisms","arxiv_id":"2207.09572","date":"2022-07-19","proceeding":null,"authors":["Linbo Liu","Youngsuk Park","Trong Nghia Hoang","Hilaf Hasson","Jun Huan"],"abstract":"This work studies the threats of adversarial attack on multivariate probabilistic forecasting models and viable defense mechanisms. Our studies discover a new attack pattern that negatively impact the forecasting of a target time series via making strategic, sparse (imperceptible) modifications to the past observations of a small number of other time series. To mitigate the impact of such attack, we have developed two defense strategies. First, we extend a previously developed randomized smoothing technique in classification to multivariate forecasting scenarios. Second, we develop an adversarial training algorithm that learns to create adversarial examples and at the same time optimizes the forecasting model to improve its robustness against such adversarial simulation. Extensive experiments on real-world datasets confirm that our attack schemes are powerful and our defense algorithms are more effective compared with baseline defense mechanisms.","url_abs":"https://arxiv.org/abs/2207.09572v3","url_pdf":"https://arxiv.org/pdf/2207.09572v3.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"towards-robust-multivariate-time-series","repo_url":"https://github.com/awslabs/gluonts","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"adversarial-attack","task_name":"Adversarial Attack"},{"task_slug":"multivariate-time-series-forecasting","task_name":"Multivariate Time Series Forecasting"},{"task_slug":"time-series-1","task_name":"Time Series"},{"task_slug":"time-series","task_name":"Time Series Analysis"},{"task_slug":"time-series-forecasting","task_name":"Time Series Forecasting"},{"task_slug":"univariate-time-series-forecasting","task_name":"Univariate Time Series Forecasting"}],"methods":[{"method_slug":"randomized-smoothing","method_name":"Randomized Smoothing"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2207.09572","atlas_url":"https://app.syntology.ai/?focus=2207.09572","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2207.09572"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/awslabs/gluonts","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"unverified":11},"by_repo_kind":{"official":{"samples":11,"ran":0,"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":"9441ca1a63b924c3","entry":"batcher","repo":"awslabs/gluonts","repo_kind":"official","path":"src/gluonts/itertools.py","file_url":"https://github.com/awslabs/gluonts/blob/HEAD/src/gluonts/itertools.py","link_basis":"harvester_set","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":"9441ca1a63b924c3"}},{"code_sha256_prefix":"b6d31d8f080218a4","entry":"copy_with","repo":"awslabs/gluonts","repo_kind":"official","path":"src/gluonts/util.py","file_url":"https://github.com/awslabs/gluonts/blob/HEAD/src/gluonts/util.py","link_basis":"harvester_set","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":"b6d31d8f080218a4"}},{"code_sha256_prefix":"2f227eb18785b23e","entry":"equals","repo":"awslabs/gluonts","repo_kind":"official","path":"src/gluonts/core/component.py","file_url":"https://github.com/awslabs/gluonts/blob/HEAD/src/gluonts/core/component.py","link_basis":"harvester_set","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":"2f227eb18785b23e"}},{"code_sha256_prefix":"900b826876f774fb","entry":"equals_default_impl","repo":"awslabs/gluonts","repo_kind":"official","path":"src/gluonts/core/component.py","file_url":"https://github.com/awslabs/gluonts/blob/HEAD/src/gluonts/core/component.py","link_basis":"harvester_set","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":"900b826876f774fb"}},{"code_sha256_prefix":"4cd8c833a319daa5","entry":"flatten","repo":"awslabs/gluonts","repo_kind":"official","path":"src/gluonts/maybe.py","file_url":"https://github.com/awslabs/gluonts/blob/HEAD/src/gluonts/maybe.py","link_basis":"harvester_set","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":"4cd8c833a319daa5"}},{"code_sha256_prefix":"f5f4848418aecf04","entry":"fqname_for","repo":"awslabs/gluonts","repo_kind":"official","path":"src/gluonts/core/_base.py","file_url":"https://github.com/awslabs/gluonts/blob/HEAD/src/gluonts/core/_base.py","link_basis":"harvester_set","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":"f5f4848418aecf04"}},{"code_sha256_prefix":"2ce2e172f2056955","entry":"inject","repo":"awslabs/gluonts","repo_kind":"official","path":"src/gluonts/core/settings.py","file_url":"https://github.com/awslabs/gluonts/blob/HEAD/src/gluonts/core/settings.py","link_basis":"harvester_set","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":"2ce2e172f2056955"}},{"code_sha256_prefix":"d627f142e468c86e","entry":"let","repo":"awslabs/gluonts","repo_kind":"official","path":"src/gluonts/core/settings.py","file_url":"https://github.com/awslabs/gluonts/blob/HEAD/src/gluonts/core/settings.py","link_basis":"harvester_set","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":"d627f142e468c86e"}},{"code_sha256_prefix":"2a1a76b9217ce9a7","entry":"maybe_len","repo":"awslabs/gluonts","repo_kind":"official","path":"src/gluonts/itertools.py","file_url":"https://github.com/awslabs/gluonts/blob/HEAD/src/gluonts/itertools.py","link_basis":"harvester_set","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":"2a1a76b9217ce9a7"}},{"code_sha256_prefix":"67059eb6565db923","entry":"prod","repo":"awslabs/gluonts","repo_kind":"official","path":"src/gluonts/itertools.py","file_url":"https://github.com/awslabs/gluonts/blob/HEAD/src/gluonts/itertools.py","link_basis":"harvester_set","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":"67059eb6565db923"}},{"code_sha256_prefix":"03c6c7d9c6ace85c","entry":"tqdm","repo":"awslabs/gluonts","repo_kind":"official","path":"src/gluonts/gluonts_tqdm.py","file_url":"https://github.com/awslabs/gluonts/blob/HEAD/src/gluonts/gluonts_tqdm.py","link_basis":"harvester_set","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":"03c6c7d9c6ace85c"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}