{"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/small-steps-and-giant-leaps-minimal-newton","title":"Small steps and giant leaps: Minimal Newton solvers for Deep Learning","arxiv_id":"1805.08095","date":"2018-05-21","proceeding":"ICLR 2019 5","authors":["João F. Henriques","Sebastien Ehrhardt","Samuel Albanie","Andrea Vedaldi"],"abstract":"We propose a fast second-order method that can be used as a drop-in\nreplacement for current deep learning solvers. Compared to stochastic gradient\ndescent (SGD), it only requires two additional forward-mode automatic\ndifferentiation operations per iteration, which has a computational cost\ncomparable to two standard forward passes and is easy to implement. Our method\naddresses long-standing issues with current second-order solvers, which invert\nan approximate Hessian matrix every iteration exactly or by conjugate-gradient\nmethods, a procedure that is both costly and sensitive to noise. Instead, we\npropose to keep a single estimate of the gradient projected by the inverse\nHessian matrix, and update it once per iteration. This estimate has the same\nsize and is similar to the momentum variable that is commonly used in SGD. No\nestimate of the Hessian is maintained. We first validate our method, called\nCurveBall, on small problems with known closed-form solutions (noisy Rosenbrock\nfunction and degenerate 2-layer linear networks), where current deep learning\nsolvers seem to struggle. We then train several large models on CIFAR and\nImageNet, including ResNet and VGG-f networks, where we demonstrate faster\nconvergence with no hyperparameter tuning. Code is available.","url_abs":"http://arxiv.org/abs/1805.08095v1","url_pdf":"http://arxiv.org/pdf/1805.08095v1.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":"small-steps-and-giant-leaps-minimal-newton","repo_url":"https://github.com/jotaf98/curveball","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok"}},{"paper_slug":"small-steps-and-giant-leaps-minimal-newton","repo_url":"https://github.com/Healbadbad/curveball-pytorch","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"small-steps-and-giant-leaps-minimal-newton","repo_url":"https://github.com/jotaf98/pytorch-curveball","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"small-steps-and-giant-leaps-minimal-newton","repo_url":"https://github.com/saugatkandel/second-order-phase-retrieval","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok"}},{"paper_slug":"small-steps-and-giant-leaps-minimal-newton","repo_url":"https://github.com/saugatkandel/second_order_phase_retrieval","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok"}},{"paper_slug":"small-steps-and-giant-leaps-minimal-newton","repo_url":"https://github.com/saugatkandel/sopt","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok"}}],"tasks":[],"methods":[{"method_slug":"1x1-convolution","method_name":"1x1 Convolution"},{"method_slug":"average-pooling","method_name":"Average Pooling"},{"method_slug":"batch-normalization","method_name":"Batch Normalization"},{"method_slug":"bottleneck-residual-block","method_name":"Bottleneck Residual Block"},{"method_slug":"convolution","method_name":"Convolution"},{"method_slug":"global-average-pooling","method_name":"Global Average Pooling"},{"method_slug":"kaiming-initialization","method_name":"Kaiming Initialization"},{"method_slug":"max-pooling","method_name":"Max Pooling"},{"method_slug":"relu","method_name":"ReLU"},{"method_slug":"residual-block","method_name":"Residual Block"},{"method_slug":"residual-connection","method_name":"Residual Connection"},{"method_slug":"sgd","method_name":"SGD"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=1805.08095","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1805.08095"}},"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":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/saugatkandel/sopt","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/Healbadbad/curveball-pytorch","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/jotaf98/pytorch-curveball","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/jotaf98/curveball","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/saugatkandel/second_order_phase_retrieval","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/saugatkandel/second-order-phase-retrieval","reach":{"status":"ok"}}],"summary":{"unverified":3},"by_repo_kind":{"listed":{"samples":3,"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":"368ecce34fcc476c","entry":"rosenbrock","repo":"Healbadbad/curveball-pytorch","repo_kind":"listed","path":"optimizer-tests-FA.py","file_url":"https://github.com/Healbadbad/curveball-pytorch/blob/HEAD/optimizer-tests-FA.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":"368ecce34fcc476c"}},{"code_sha256_prefix":"f7c6f185f06063aa","entry":"rosenbrock","repo":"Healbadbad/curveball-pytorch","repo_kind":"listed","path":"optimizer-tests.py","file_url":"https://github.com/Healbadbad/curveball-pytorch/blob/HEAD/optimizer-tests.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":"f7c6f185f06063aa"}},{"code_sha256_prefix":"b34e085d3f7d28af","entry":"save_grad","repo":"Healbadbad/curveball-pytorch","repo_kind":"listed","path":"optimizer-tests-FA.py","file_url":"https://github.com/Healbadbad/curveball-pytorch/blob/HEAD/optimizer-tests-FA.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":"b34e085d3f7d28af"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}