{"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/gradient-equilibrium-in-online-learning","title":"Gradient Equilibrium in Online Learning: Theory and Applications","arxiv_id":"2501.08330","date":"2025-01-14","proceeding":null,"authors":["Anastasios N. Angelopoulos","Michael I. Jordan","Ryan J. Tibshirani"],"abstract":"We present a new perspective on online learning that we refer to as gradient equilibrium: a sequence of iterates achieves gradient equilibrium if the average of gradients of losses along the sequence converges to zero. In general, this condition is not implied by, nor implies, sublinear regret. It turns out that gradient equilibrium is achievable by standard online learning methods such as gradient descent and mirror descent with constant step sizes (rather than decaying step sizes, as is usually required for no regret). Further, as we show through examples, gradient equilibrium translates into an interpretable and meaningful property in online prediction problems spanning regression, classification, quantile estimation, and others. Notably, we show that the gradient equilibrium framework can be used to develop a debiasing scheme for black-box predictions under arbitrary distribution shift, based on simple post hoc online descent updates. We also show that post hoc gradient updates can be used to calibrate predicted quantiles under distribution shift, and that the framework leads to unbiased Elo scores for pairwise preference prediction.","url_abs":"https://arxiv.org/abs/2501.08330v3","url_pdf":"https://arxiv.org/pdf/2501.08330v3.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":"gradient-equilibrium-in-online-learning","repo_url":"https://github.com/aangelopoulos/gradient-equilibrium","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"learning-theory","task_name":"Learning Theory"}],"methods":[{"method_slug":"hoc","method_name":"HOC"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2501.08330","atlas_url":"https://app.syntology.ai/?focus=2501.08330","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2501.08330"}},"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/aangelopoulos/gradient-equilibrium","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":7,"unverified":1},"by_repo_kind":{"official":{"samples":8,"ran":7,"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":"7e0484dc9295e4e9","entry":"assign_readmission_label","repo":"aangelopoulos/gradient-equilibrium","repo_kind":"official","path":"mimic_stay/mimic_utils.py","file_url":"https://github.com/aangelopoulos/gradient-equilibrium/blob/HEAD/mimic_stay/mimic_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7e0484dc9295e4e9"}},{"code_sha256_prefix":"3bc1a8bfab185688","entry":"diag_icd9_to_3digit","repo":"aangelopoulos/gradient-equilibrium","repo_kind":"official","path":"mimic_stay/mimic_utils.py","file_url":"https://github.com/aangelopoulos/gradient-equilibrium/blob/HEAD/mimic_stay/mimic_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3bc1a8bfab185688"}},{"code_sha256_prefix":"1e41761889fc4d29","entry":"evaluate","repo":"aangelopoulos/gradient-equilibrium","repo_kind":"official","path":"helpsteer/train_and_generate_rewards.py","file_url":"https://github.com/aangelopoulos/gradient-equilibrium/blob/HEAD/helpsteer/train_and_generate_rewards.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1e41761889fc4d29"}},{"code_sha256_prefix":"e7af70d6225c3f3b","entry":"get_anchor_year","repo":"aangelopoulos/gradient-equilibrium","repo_kind":"official","path":"mimic_stay/mimic_utils.py","file_url":"https://github.com/aangelopoulos/gradient-equilibrium/blob/HEAD/mimic_stay/mimic_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e7af70d6225c3f3b"}},{"code_sha256_prefix":"2e05ca68682f0f01","entry":"get_field_at_point","repo":"aangelopoulos/gradient-equilibrium","repo_kind":"official","path":"synthetic/expanding-trajectory.py","file_url":"https://github.com/aangelopoulos/gradient-equilibrium/blob/HEAD/synthetic/expanding-trajectory.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"2e05ca68682f0f01"}},{"code_sha256_prefix":"5f0edb65195ad055","entry":"get_field_at_point","repo":"aangelopoulos/gradient-equilibrium","repo_kind":"official","path":"synthetic/positive-curvature.py","file_url":"https://github.com/aangelopoulos/gradient-equilibrium/blob/HEAD/synthetic/positive-curvature.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5f0edb65195ad055"}},{"code_sha256_prefix":"58e8f37cc4e7e6c8","entry":"prepare_input","repo":"aangelopoulos/gradient-equilibrium","repo_kind":"official","path":"helpsteer/train_and_generate_rewards.py","file_url":"https://github.com/aangelopoulos/gradient-equilibrium/blob/HEAD/helpsteer/train_and_generate_rewards.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"58e8f37cc4e7e6c8"}},{"code_sha256_prefix":"ac0c5764c5f589e0","entry":"train_epoch","repo":"aangelopoulos/gradient-equilibrium","repo_kind":"official","path":"helpsteer/train_and_generate_rewards.py","file_url":"https://github.com/aangelopoulos/gradient-equilibrium/blob/HEAD/helpsteer/train_and_generate_rewards.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ac0c5764c5f589e0"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}