{"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/controllable-context-sensitivity-and-the-knob","title":"Controllable Context Sensitivity and the Knob Behind It","arxiv_id":"2411.07404","date":"2024-11-11","proceeding":null,"authors":["Julian Minder","Kevin Du","Niklas Stoehr","Giovanni Monea","Chris Wendler","Robert West","Ryan Cotterell"],"abstract":"When making predictions, a language model must trade off how much it relies on its context vs. its prior knowledge. Choosing how sensitive the model is to its context is a fundamental functionality, as it enables the model to excel at tasks like retrieval-augmented generation and question-answering. In this paper, we search for a knob which controls this sensitivity, determining whether language models answer from the context or their prior knowledge. To guide this search, we design a task for controllable context sensitivity. In this task, we first feed the model a context (Paris is in England) and a question (Where is Paris?); we then instruct the model to either use its prior or contextual knowledge and evaluate whether it generates the correct answer for both intents (either France or England). When fine-tuned on this task, instruction-tuned versions of Llama-3.1, Mistral-v0.3, and Gemma-2 can solve it with high accuracy (85-95%). Analyzing these high-performing models, we narrow down which layers may be important to context sensitivity using a novel linear time algorithm. Then, in each model, we identify a 1-D subspace in a single layer that encodes whether the model follows context or prior knowledge. Interestingly, while we identify this subspace in a fine-tuned model, we find that the exact same subspace serves as an effective knob in not only that model but also non-fine-tuned instruct and base models of that model family. Finally, we show a strong correlation between a model's performance and how distinctly it separates context-agreeing from context-ignoring answers in this subspace. These results suggest a single subspace facilitates how the model chooses between context and prior knowledge, hinting at a simple fundamental mechanism that controls this behavior.","url_abs":"https://arxiv.org/abs/2411.07404v1","url_pdf":"https://arxiv.org/pdf/2411.07404v1.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":"controllable-context-sensitivity-and-the-knob","repo_url":"https://github.com/kdu4108/context-vs-prior-finetuning","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"question-answering","task_name":"Question Answering"},{"task_slug":"retrieval-augmented-generation","task_name":"Retrieval-augmented Generation"},{"task_slug":"sensitivity","task_name":"Sensitivity"}],"methods":[{"method_slug":"base","method_name":"BASE"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2411.07404","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2411.07404"}},"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/kdu4108/context-vs-prior-finetuning","reach":{"status":"ok"}}],"summary":{"unverified":24},"by_repo_kind":{"official":{"samples":24,"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":24,"samples":[{"code_sha256_prefix":"84f41650402b89f1","entry":"balance_df_by_label_column","repo":"kdu4108/context-vs-prior-finetuning","repo_kind":"official","path":"preprocessing/dataset.py","file_url":"https://github.com/kdu4108/context-vs-prior-finetuning/blob/HEAD/preprocessing/dataset.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"84f41650402b89f1"}},{"code_sha256_prefix":"6d8fd419008ca763","entry":"convert_fakepedia_dict_to_df","repo":"kdu4108/context-vs-prior-finetuning","repo_kind":"official","path":"preprocessing/utils.py","file_url":"https://github.com/kdu4108/context-vs-prior-finetuning/blob/HEAD/preprocessing/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"6d8fd419008ca763"}},{"code_sha256_prefix":"e736246f0de4c29b","entry":"create_dataset","repo":"kdu4108/context-vs-prior-finetuning","repo_kind":"official","path":"analysis/circuit_utils/das.py","file_url":"https://github.com/kdu4108/context-vs-prior-finetuning/blob/HEAD/analysis/circuit_utils/das.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e736246f0de4c29b"}},{"code_sha256_prefix":"640aef5d8b077b96","entry":"create_position_ids_from_input_ids","repo":"kdu4108/context-vs-prior-finetuning","repo_kind":"official","path":"model_utils/mi_utils.py","file_url":"https://github.com/kdu4108/context-vs-prior-finetuning/blob/HEAD/model_utils/mi_utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"640aef5d8b077b96"}},{"code_sha256_prefix":"71e5222467d869d2","entry":"estimate_prob_x_given_e","repo":"kdu4108/context-vs-prior-finetuning","repo_kind":"official","path":"model_utils/mi_utils.py","file_url":"https://github.com/kdu4108/context-vs-prior-finetuning/blob/HEAD/model_utils/mi_utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"71e5222467d869d2"}},{"code_sha256_prefix":"a5e0f7e4358d7948","entry":"format_query","repo":"kdu4108/context-vs-prior-finetuning","repo_kind":"official","path":"preprocessing/utils.py","file_url":"https://github.com/kdu4108/context-vs-prior-finetuning/blob/HEAD/preprocessing/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"a5e0f7e4358d7948"}},{"code_sha256_prefix":"d1aff33e8be373a4","entry":"generalisation_script","repo":"kdu4108/context-vs-prior-finetuning","repo_kind":"official","path":"generate_run_script.py","file_url":"https://github.com/kdu4108/context-vs-prior-finetuning/blob/HEAD/generate_run_script.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d1aff33e8be373a4"}},{"code_sha256_prefix":"3a27b987330622fd","entry":"generate_dataset","repo":"kdu4108/context-vs-prior-finetuning","repo_kind":"official","path":"preprocessing/generate_arithmetic.py","file_url":"https://github.com/kdu4108/context-vs-prior-finetuning/blob/HEAD/preprocessing/generate_arithmetic.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3a27b987330622fd"}},{"code_sha256_prefix":"dd8d606eb5d3e410","entry":"generate_few_shot_prompts","repo":"kdu4108/context-vs-prior-finetuning","repo_kind":"official","path":"analysis/circuit_utils/few_shot.py","file_url":"https://github.com/kdu4108/context-vs-prior-finetuning/blob/HEAD/analysis/circuit_utils/few_shot.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"dd8d606eb5d3e410"}},{"code_sha256_prefix":"bf63f70f32a86ab8","entry":"get_base_script","repo":"kdu4108/context-vs-prior-finetuning","repo_kind":"official","path":"generate_run_script.py","file_url":"https://github.com/kdu4108/context-vs-prior-finetuning/blob/HEAD/generate_run_script.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"bf63f70f32a86ab8"}},{"code_sha256_prefix":"a8a6bf09c1783a7c","entry":"get_ds","repo":"kdu4108/context-vs-prior-finetuning","repo_kind":"official","path":"generate_run_script.py","file_url":"https://github.com/kdu4108/context-vs-prior-finetuning/blob/HEAD/generate_run_script.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"a8a6bf09c1783a7c"}},{"code_sha256_prefix":"d2c97c6a45243ce9","entry":"get_prob","repo":"kdu4108/context-vs-prior-finetuning","repo_kind":"official","path":"analysis/circuit_utils/decoding.py","file_url":"https://github.com/kdu4108/context-vs-prior-finetuning/blob/HEAD/analysis/circuit_utils/decoding.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d2c97c6a45243ce9"}},{"code_sha256_prefix":"32418786f8c01765","entry":"get_prob_next_word","repo":"kdu4108/context-vs-prior-finetuning","repo_kind":"official","path":"model_utils/mi_utils.py","file_url":"https://github.com/kdu4108/context-vs-prior-finetuning/blob/HEAD/model_utils/mi_utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"32418786f8c01765"}},{"code_sha256_prefix":"234d3d97816d505a","entry":"get_rank","repo":"kdu4108/context-vs-prior-finetuning","repo_kind":"official","path":"analysis/circuit_utils/decoding.py","file_url":"https://github.com/kdu4108/context-vs-prior-finetuning/blob/HEAD/analysis/circuit_utils/decoding.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"234d3d97816d505a"}},{"code_sha256_prefix":"e23d3bc3d1d61814","entry":"get_ranks","repo":"kdu4108/context-vs-prior-finetuning","repo_kind":"official","path":"analysis/circuit_utils/decoding.py","file_url":"https://github.com/kdu4108/context-vs-prior-finetuning/blob/HEAD/analysis/circuit_utils/decoding.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e23d3bc3d1d61814"}},{"code_sha256_prefix":"49288d350b2a118e","entry":"load_dataset_from_path","repo":"kdu4108/context-vs-prior-finetuning","repo_kind":"official","path":"preprocessing/dataset.py","file_url":"https://github.com/kdu4108/context-vs-prior-finetuning/blob/HEAD/preprocessing/dataset.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"49288d350b2a118e"}},{"code_sha256_prefix":"ffa9d912bb1dd857","entry":"load_model","repo":"kdu4108/context-vs-prior-finetuning","repo_kind":"official","path":"analysis/circuit_utils/model.py","file_url":"https://github.com/kdu4108/context-vs-prior-finetuning/blob/HEAD/analysis/circuit_utils/model.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ffa9d912bb1dd857"}},{"code_sha256_prefix":"63070f500d814722","entry":"load_model_and_tokenizer","repo":"kdu4108/context-vs-prior-finetuning","repo_kind":"official","path":"model_utils/utils.py","file_url":"https://github.com/kdu4108/context-vs-prior-finetuning/blob/HEAD/model_utils/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"63070f500d814722"}},{"code_sha256_prefix":"fd325ab84c0acc3f","entry":"load_peft","repo":"kdu4108/context-vs-prior-finetuning","repo_kind":"official","path":"analysis/circuit_utils/model.py","file_url":"https://github.com/kdu4108/context-vs-prior-finetuning/blob/HEAD/analysis/circuit_utils/model.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"fd325ab84c0acc3f"}},{"code_sha256_prefix":"ff76c82cbc48d3e3","entry":"merge_save_peft","repo":"kdu4108/context-vs-prior-finetuning","repo_kind":"official","path":"analysis/circuit_utils/model.py","file_url":"https://github.com/kdu4108/context-vs-prior-finetuning/blob/HEAD/analysis/circuit_utils/model.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ff76c82cbc48d3e3"}},{"code_sha256_prefix":"ba76be9f90cef907","entry":"prepare_peft_model","repo":"kdu4108/context-vs-prior-finetuning","repo_kind":"official","path":"model_utils/utils.py","file_url":"https://github.com/kdu4108/context-vs-prior-finetuning/blob/HEAD/model_utils/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ba76be9f90cef907"}},{"code_sha256_prefix":"124b1789a4bc9f68","entry":"prepare_tokenizer","repo":"kdu4108/context-vs-prior-finetuning","repo_kind":"official","path":"model_utils/utils.py","file_url":"https://github.com/kdu4108/context-vs-prior-finetuning/blob/HEAD/model_utils/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"124b1789a4bc9f68"}},{"code_sha256_prefix":"93b2a3dbfe1f29af","entry":"remove_instruction","repo":"kdu4108/context-vs-prior-finetuning","repo_kind":"official","path":"analysis/circuit_utils/das.py","file_url":"https://github.com/kdu4108/context-vs-prior-finetuning/blob/HEAD/analysis/circuit_utils/das.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"93b2a3dbfe1f29af"}},{"code_sha256_prefix":"53e66bdbae1183f6","entry":"tuple_df","repo":"kdu4108/context-vs-prior-finetuning","repo_kind":"official","path":"preprocessing/utils.py","file_url":"https://github.com/kdu4108/context-vs-prior-finetuning/blob/HEAD/preprocessing/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"53e66bdbae1183f6"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}