{"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/stochastic-gradient-descent-ascent-and","title":"Stochastic Gradient Descent-Ascent and Consensus Optimization for Smooth Games: Convergence Analysis under Expected Co-coercivity","arxiv_id":"2107.00052","date":"2021-06-30","proceeding":"NeurIPS 2021 12","authors":["Nicolas Loizou","Hugo Berard","Gauthier Gidel","Ioannis Mitliagkas","Simon Lacoste-Julien"],"abstract":"Two of the most prominent algorithms for solving unconstrained smooth games are the classical stochastic gradient descent-ascent (SGDA) and the recently introduced stochastic consensus optimization (SCO) [Mescheder et al., 2017]. SGDA is known to converge to a stationary point for specific classes of games, but current convergence analyses require a bounded variance assumption. SCO is used successfully for solving large-scale adversarial problems, but its convergence guarantees are limited to its deterministic variant. In this work, we introduce the expected co-coercivity condition, explain its benefits, and provide the first last-iterate convergence guarantees of SGDA and SCO under this condition for solving a class of stochastic variational inequality problems that are potentially non-monotone. We prove linear convergence of both methods to a neighborhood of the solution when they use constant step-size, and we propose insightful stepsize-switching rules to guarantee convergence to the exact solution. In addition, our convergence guarantees hold under the arbitrary sampling paradigm, and as such, we give insights into the complexity of minibatching.","url_abs":"https://arxiv.org/abs/2107.00052v2","url_pdf":"https://arxiv.org/pdf/2107.00052v2.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":"stochastic-gradient-descent-ascent-and","repo_url":"https://github.com/hugobb/StochasticGamesOpt","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2107.00052","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2107.00052"}},"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":[{"provenance":"deterministic:regex_extraction","url":"https://github.com/hugobb/StochasticGamesOpt","reach":null}],"summary":{"ran":6},"by_repo_kind":{"official":{"samples":6,"ran":6,"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":"5e68062294d17a16","entry":"Algorithm","repo":"hugobb/StochasticGamesOpt","repo_kind":"official","path":"hamiltonian/algorithms/co.py","file_url":"https://github.com/hugobb/StochasticGamesOpt/blob/HEAD/hamiltonian/algorithms/co.py","link_basis":"first_harvest_node","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":"5e68062294d17a16"}},{"code_sha256_prefix":"916c38c4030e9bc7","entry":"BaseLR","repo":"hugobb/StochasticGamesOpt","repo_kind":"official","path":"hamiltonian/algorithms/co.py","file_url":"https://github.com/hugobb/StochasticGamesOpt/blob/HEAD/hamiltonian/algorithms/co.py","link_basis":"first_harvest_node","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":"916c38c4030e9bc7"}},{"code_sha256_prefix":"6fb6983639d96f9a","entry":"ConsensusOptimization","repo":"hugobb/StochasticGamesOpt","repo_kind":"official","path":"hamiltonian/algorithms/co.py","file_url":"https://github.com/hugobb/StochasticGamesOpt/blob/HEAD/hamiltonian/algorithms/co.py","link_basis":"first_harvest_node","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":"6fb6983639d96f9a"}},{"code_sha256_prefix":"ecf36144342f9fbf","entry":"DoubleLoopSampler","repo":"hugobb/StochasticGamesOpt","repo_kind":"official","path":"hamiltonian/algorithms/co.py","file_url":"https://github.com/hugobb/StochasticGamesOpt/blob/HEAD/hamiltonian/algorithms/co.py","link_basis":"first_harvest_node","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":"ecf36144342f9fbf"}},{"code_sha256_prefix":"02461b74cf5b3d8b","entry":"LRScheduler","repo":"hugobb/StochasticGamesOpt","repo_kind":"official","path":"hamiltonian/algorithms/co.py","file_url":"https://github.com/hugobb/StochasticGamesOpt/blob/HEAD/hamiltonian/algorithms/co.py","link_basis":"first_harvest_node","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":"02461b74cf5b3d8b"}},{"code_sha256_prefix":"2404a86f26725bdd","entry":"Sampler","repo":"hugobb/StochasticGamesOpt","repo_kind":"official","path":"hamiltonian/algorithms/co.py","file_url":"https://github.com/hugobb/StochasticGamesOpt/blob/HEAD/hamiltonian/algorithms/co.py","link_basis":"first_harvest_node","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":"2404a86f26725bdd"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}