{"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/hetal-efficient-privacy-preserving-transfer","title":"HETAL: Efficient Privacy-preserving Transfer Learning with Homomorphic Encryption","arxiv_id":"2403.14111","date":"2024-03-21","proceeding":null,"authors":["Seewoo Lee","Garam Lee","Jung Woo Kim","Junbum Shin","Mun-Kyu Lee"],"abstract":"Transfer learning is a de facto standard method for efficiently training machine learning models for data-scarce problems by adding and fine-tuning new classification layers to a model pre-trained on large datasets. Although numerous previous studies proposed to use homomorphic encryption to resolve the data privacy issue in transfer learning in the machine learning as a service setting, most of them only focused on encrypted inference. In this study, we present HETAL, an efficient Homomorphic Encryption based Transfer Learning algorithm, that protects the client's privacy in training tasks by encrypting the client data using the CKKS homomorphic encryption scheme. HETAL is the first practical scheme that strictly provides encrypted training, adopting validation-based early stopping and achieving the accuracy of nonencrypted training. We propose an efficient encrypted matrix multiplication algorithm, which is 1.8 to 323 times faster than prior methods, and a highly precise softmax approximation algorithm with increased coverage. The experimental results for five well-known benchmark datasets show total training times of 567-3442 seconds, which is less than an hour.","url_abs":"https://arxiv.org/abs/2403.14111v1","url_pdf":"https://arxiv.org/pdf/2403.14111v1.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":"hetal-efficient-privacy-preserving-transfer","repo_url":"https://github.com/cryptolabinc/hetal","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"NOASSERTION"}}],"tasks":[{"task_slug":"privacy-preserving","task_name":"Privacy Preserving"},{"task_slug":"transfer-learning","task_name":"Transfer Learning"}],"methods":[{"method_slug":"early-stopping","method_name":"Early Stopping"},{"method_slug":null,"method_name":null},{"method_slug":"softmax","method_name":"Softmax"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2403.14111","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2403.14111"}},"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/cryptolabinc/hetal","reach":{"status":"ok","spdx":"NOASSERTION"}}],"summary":{"ran_honours":2,"ran_fixture":1,"ran":4,"unverified":3},"by_repo_kind":{"official":{"samples":10,"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":10,"samples":[{"code_sha256_prefix":"7c0d7e9e7a7f89cc","entry":"softmax","repo":"CryptoLabInc/HETAL","repo_kind":"official","path":"src/benchmark/softmax.py","file_url":"https://github.com/CryptoLabInc/HETAL/blob/HEAD/src/benchmark/softmax.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":2,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"7c0d7e9e7a7f89cc"}},{"code_sha256_prefix":"f8a08260b9985ef7","entry":"approx_exp","repo":"CryptoLabInc/HETAL","repo_kind":"official","path":"src/benchmark/softmax.py","file_url":"https://github.com/CryptoLabInc/HETAL/blob/HEAD/src/benchmark/softmax.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"f8a08260b9985ef7"}},{"code_sha256_prefix":"c4ba8fbafe39aee4","entry":"approx_exp","repo":"cryptolabinc/hetal","repo_kind":"official","path":"src/benchmark/softmax.py","file_url":"https://github.com/cryptolabinc/hetal/blob/HEAD/src/benchmark/softmax.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"c4ba8fbafe39aee4"}},{"code_sha256_prefix":"9d0418525f4199f7","entry":"get_batch_size","repo":"cryptolabinc/hetal","repo_kind":"official","path":"src/hetal/hyperparams.py","file_url":"https://github.com/cryptolabinc/hetal/blob/HEAD/src/hetal/hyperparams.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"9d0418525f4199f7"}},{"code_sha256_prefix":"830490ffac3178c4","entry":"get_num_epoch","repo":"cryptolabinc/hetal","repo_kind":"official","path":"src/hetal/hyperparams.py","file_url":"https://github.com/cryptolabinc/hetal/blob/HEAD/src/hetal/hyperparams.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"830490ffac3178c4"}},{"code_sha256_prefix":"7cea7446187c61d1","entry":"sample_input","repo":"CryptoLabInc/HETAL","repo_kind":"official","path":"src/benchmark/softmax.py","file_url":"https://github.com/CryptoLabInc/HETAL/blob/HEAD/src/benchmark/softmax.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"7cea7446187c61d1"}},{"code_sha256_prefix":"f3e5e0bea4f2e6ea","entry":"sample_input","repo":"cryptolabinc/hetal","repo_kind":"official","path":"src/benchmark/softmax.py","file_url":"https://github.com/cryptolabinc/hetal/blob/HEAD/src/benchmark/softmax.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"f3e5e0bea4f2e6ea"}},{"code_sha256_prefix":"537e0e24280ac134","entry":"get_lr","repo":"cryptolabinc/hetal","repo_kind":"official","path":"src/hetal/hyperparams.py","file_url":"https://github.com/cryptolabinc/hetal/blob/HEAD/src/hetal/hyperparams.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"537e0e24280ac134"}},{"code_sha256_prefix":"873eb7e5dd0c5c09","entry":"load_data","repo":"cryptolabinc/hetal","repo_kind":"official","path":"src/hetal/load_data.py","file_url":"https://github.com/cryptolabinc/hetal/blob/HEAD/src/hetal/load_data.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"873eb7e5dd0c5c09"}},{"code_sha256_prefix":"0bb0e5c7816d7fc0","entry":"softmax","repo":"cryptolabinc/hetal","repo_kind":"official","path":"src/benchmark/softmax.py","file_url":"https://github.com/cryptolabinc/hetal/blob/HEAD/src/benchmark/softmax.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"0bb0e5c7816d7fc0"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}