{"id":19448475,"url":"https://github.com/neurodata/prolearn","last_synced_at":"2025-04-25T02:31:20.699Z","repository":{"id":259606966,"uuid":"806215983","full_name":"neurodata/prolearn","owner":"neurodata","description":"Prospective Learning: Learning for a Dynamic Future (NeurIPS 2024)","archived":false,"fork":false,"pushed_at":"2024-11-06T15:37:48.000Z","size":76363,"stargazers_count":4,"open_issues_count":1,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-11-06T16:38:52.230Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/neurodata.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-05-26T17:38:07.000Z","updated_at":"2024-11-06T15:37:52.000Z","dependencies_parsed_at":"2024-10-26T21:41:07.160Z","dependency_job_id":"049007d3-5345-421c-b14a-e9e5cbb67ca3","html_url":"https://github.com/neurodata/prolearn","commit_stats":null,"previous_names":["neurodata/prolearn"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neurodata%2Fprolearn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neurodata%2Fprolearn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neurodata%2Fprolearn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neurodata%2Fprolearn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/neurodata","download_url":"https://codeload.github.com/neurodata/prolearn/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223978481,"owners_count":17235182,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-10T16:27:08.258Z","updated_at":"2024-11-10T16:27:08.863Z","avatar_url":"https://github.com/neurodata.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Prospective Learning: Principled Extrapolation to the Future\n\n## Overview\n\nIn real-world applications, the distribution of the data, and our goals, evolve\nover time. The prevailing theoretical framework for studying machine learning,\nnamely probably approximately correct (PAC) learning, largely ignores time. As a\nconsequence, existing strategies to address the dynamic nature of data and goals\nexhibit poor real-world performance. This paper develops a theoretical framework\ncalled \"Prospective Learning\" that is tailored for situations when the optimal\nhypothesis changes over time. In PAC learning, empirical risk minimization (ERM)\nis known to be consistent. We develop a learner called Prospective ERM, which\nreturns a sequence of predictors that make predictions on future data. We prove that\nthe risk of prospective ERM converges to the Bayes risk under certain assumptions\non the stochastic process generating the data. Prospective ERM, roughly speaking,\nincorporates time as an input in addition to the data. We show that standard ERM\nas done in PAC learning, without incorporating time, can result in failure to learn\nwhen distributions are dynamic. Numerical experiments illustrate that prospective\nERM can learn synthetic and visual recognition problems constructed from MNIST\nand CIFAR-10.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"assets/cartoon.jpg\" alt=\"Alt text\" width=\"50%\"/\u003e\n\u003c/p\u003e\n\n## Dependencies\n\nTo setup a mamba (conda) environment, run\n\n```sh\nmicromamba env create -f environment.yml\n```\n\n\n## Figures\n\nRun the following to generate the results and figures for the binary examples.\n\n```sh\nbash binary/binary_examples.sh\n```\n\nTo run the neural net experiments, run\n```sh\ncd deep_nets\nbash scripts/generate_data.sh\nbash scripts/train_scenario2.sh\nbash scripts/train_scenario3.sh\nbash scripts/create_plots.sh\n```\n\n## Cite us\n\nIf you find this code useful consider citing\n\n    @article{desilva2024prospective,\n      title={Prospective Learning: Principled Extrapolation to the Future\n      author={De Silva*, Ashwin and Ramesh*, Rahul and Yang*, Rubing and Yu, Siyu and Vogelstein*, Joshua T and Chaudhari*, Pratik},\n      journal={Advances in neural information processing systems},\n      year={2024}\n    }\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneurodata%2Fprolearn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneurodata%2Fprolearn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneurodata%2Fprolearn/lists"}