{"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/offline-model-based-optimization-by-learning","title":"Offline Model-Based Optimization by Learning to Rank","arxiv_id":"2410.11502","date":"2024-10-15","proceeding":null,"authors":["Rong-Xi Tan","Ke Xue","Shen-Huan Lyu","Haopu Shang","Yao Wang","Yaoyuan Wang","Sheng Fu","Chao Qian"],"abstract":"Offline model-based optimization (MBO) aims to identify a design that maximizes a black-box function using only a fixed, pre-collected dataset of designs and their corresponding scores. A common approach in offline MBO is to train a regression-based surrogate model by minimizing mean squared error (MSE) and then find the best design within this surrogate model by different optimizers (e.g., gradient ascent). However, a critical challenge is the risk of out-of-distribution errors, i.e., the surrogate model may typically overestimate the scores and mislead the optimizers into suboptimal regions. Prior works have attempted to address this issue in various ways, such as using regularization techniques and ensemble learning to enhance the robustness of the model, but it still remains. In this paper, we argue that regression models trained with MSE are not well-aligned with the primary goal of offline MBO, which is to select promising designs rather than to predict their scores precisely. Notably, if a surrogate model can maintain the order of candidate designs based on their relative score relationships, it can produce the best designs even without precise predictions. To validate it, we conduct experiments to compare the relationship between the quality of the final designs and MSE, finding that the correlation is really very weak. In contrast, a metric that measures order-maintaining quality shows a significantly stronger correlation. Based on this observation, we propose learning a ranking-based model that leverages learning to rank techniques to prioritize promising designs based on their relative scores. We show that the generalization error on ranking loss can be well bounded. Empirical results across diverse tasks demonstrate the superior performance of our proposed ranking-based models than twenty existing methods.","url_abs":"https://arxiv.org/abs/2410.11502v3","url_pdf":"https://arxiv.org/pdf/2410.11502v3.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":"offline-model-based-optimization-by-learning","repo_url":"https://github.com/ggchen1997/bdi","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"jax","reach":null},{"paper_slug":"offline-model-based-optimization-by-learning","repo_url":"https://github.com/lamda-bbo/offline-ram","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"ensemble-learning","task_name":"Ensemble Learning"},{"task_slug":"learning-to-rank","task_name":"Learning-To-Rank"},{"task_slug":"model","task_name":"model"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2410.11502","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2410.11502"}},"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/lamda-bbo/Offline-RaM","reach":{"status":"ok"}},{"provenance":"deterministic:regex_extraction","url":"https://github.com/brandontrabucco/design-bench","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/lamda-bbo/offline-ram","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/ggchen1997/bdi","reach":null}],"summary":{"ran":13,"ran_draft_wrong":2,"unverified":2},"by_repo_kind":{"official":{"samples":8,"ran":8,"repositories":2},"found_in_text":{"samples":8,"ran":6,"repositories":1},"community":{"samples":1,"ran":1,"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":9,"samples":[{"code_sha256_prefix":"878f7feaba547fb6","entry":"LambdaRankLossFunction","repo":"lamda-bbo/offline-ram","repo_kind":"official","path":"losses/lambdaRank.py","file_url":"https://github.com/lamda-bbo/offline-ram/blob/HEAD/losses/lambdaRank.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"878f7feaba547fb6"}},{"code_sha256_prefix":"f39d3df3ce16b87c","entry":"LossFunction","repo":"lamda-bbo/offline-ram","repo_kind":"official","path":"losses/lambdaRank.py","file_url":"https://github.com/lamda-bbo/offline-ram/blob/HEAD/losses/lambdaRank.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f39d3df3ce16b87c"}},{"code_sha256_prefix":"f40a7926c73e49c1","entry":"dcg","repo":"lamda-bbo/Offline-RaM","repo_kind":"official","path":"losses/neuralNDCG.py","file_url":"https://github.com/lamda-bbo/Offline-RaM/blob/HEAD/losses/neuralNDCG.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f40a7926c73e49c1"}},{"code_sha256_prefix":"97d1dadc0092cddc","entry":"default_linear_distribution","repo":"brandontrabucco/design-bench","repo_kind":"found_in_text","path":"design_bench/datasets/dataset_builder.py","file_url":"https://github.com/brandontrabucco/design-bench/blob/HEAD/design_bench/datasets/dataset_builder.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":"97d1dadc0092cddc"}},{"code_sha256_prefix":"cd881bdf30de1f0a","entry":"default_quadratic_distribution","repo":"brandontrabucco/design-bench","repo_kind":"found_in_text","path":"design_bench/datasets/dataset_builder.py","file_url":"https://github.com/brandontrabucco/design-bench/blob/HEAD/design_bench/datasets/dataset_builder.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":"cd881bdf30de1f0a"}},{"code_sha256_prefix":"7dbee57a564eced6","entry":"default_uniform_distribution","repo":"brandontrabucco/design-bench","repo_kind":"found_in_text","path":"design_bench/datasets/dataset_builder.py","file_url":"https://github.com/brandontrabucco/design-bench/blob/HEAD/design_bench/datasets/dataset_builder.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":"7dbee57a564eced6"}},{"code_sha256_prefix":"fd1924a6479e1fa4","entry":"deterministic_neural_sort","repo":"lamda-bbo/Offline-RaM","repo_kind":"official","path":"losses/loss_utils.py","file_url":"https://github.com/lamda-bbo/Offline-RaM/blob/HEAD/losses/loss_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"fd1924a6479e1fa4"}},{"code_sha256_prefix":"fb3792dae3b52c70","entry":"get_confirm_token","repo":"brandontrabucco/design-bench","repo_kind":"found_in_text","path":"design_bench/disk_resource.py","file_url":"https://github.com/brandontrabucco/design-bench/blob/HEAD/design_bench/disk_resource.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":"fb3792dae3b52c70"}},{"code_sha256_prefix":"9bdda179859c7e1c","entry":"import_name","repo":"brandontrabucco/design-bench","repo_kind":"found_in_text","path":"design_bench/task.py","file_url":"https://github.com/brandontrabucco/design-bench/blob/HEAD/design_bench/task.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":"9bdda179859c7e1c"}},{"code_sha256_prefix":"9c71991dafef6c40","entry":"lambdaRank_scheme","repo":"lamda-bbo/Offline-RaM","repo_kind":"official","path":"losses/lambdaRank.py","file_url":"https://github.com/lamda-bbo/Offline-RaM/blob/HEAD/losses/lambdaRank.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"9c71991dafef6c40"}},{"code_sha256_prefix":"3006c520eff7c841","entry":"load_data","repo":"jiangnanboy/learning_to_rank","repo_kind":"community","path":"src/trees/lgb_ltr.py","file_url":"https://github.com/jiangnanboy/learning_to_rank/blob/HEAD/src/trees/lgb_ltr.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3006c520eff7c841"}},{"code_sha256_prefix":"3f6fcd223948503e","entry":"make_loss_fn","repo":"ggchen1997/bdi","repo_kind":"official","path":"utils.py","file_url":"https://github.com/ggchen1997/bdi/blob/HEAD/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3f6fcd223948503e"}},{"code_sha256_prefix":"9254b9a1999e5ab9","entry":"one_hot","repo":"brandontrabucco/design-bench","repo_kind":"found_in_text","path":"design_bench/datasets/discrete_dataset.py","file_url":"https://github.com/brandontrabucco/design-bench/blob/HEAD/design_bench/datasets/discrete_dataset.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":"9254b9a1999e5ab9"}},{"code_sha256_prefix":"c754deebeb9906bf","entry":"sample_gumbel","repo":"lamda-bbo/Offline-RaM","repo_kind":"official","path":"losses/loss_utils.py","file_url":"https://github.com/lamda-bbo/Offline-RaM/blob/HEAD/losses/loss_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"c754deebeb9906bf"}},{"code_sha256_prefix":"089fa157d43247ba","entry":"sinkhorn_scaling","repo":"lamda-bbo/Offline-RaM","repo_kind":"official","path":"losses/loss_utils.py","file_url":"https://github.com/lamda-bbo/Offline-RaM/blob/HEAD/losses/loss_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"089fa157d43247ba"}},{"code_sha256_prefix":"bee40bc7b8e40002","entry":"direct_download","repo":"brandontrabucco/design-bench","repo_kind":"found_in_text","path":"design_bench/disk_resource.py","file_url":"https://github.com/brandontrabucco/design-bench/blob/HEAD/design_bench/disk_resource.py","link_basis":"first_harvest_node","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":"bee40bc7b8e40002"}},{"code_sha256_prefix":"0508c25f44e088dc","entry":"google_drive_download","repo":"brandontrabucco/design-bench","repo_kind":"found_in_text","path":"design_bench/disk_resource.py","file_url":"https://github.com/brandontrabucco/design-bench/blob/HEAD/design_bench/disk_resource.py","link_basis":"first_harvest_node","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":"0508c25f44e088dc"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}