{"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/arxiv-2606-11722","title":"ICA Lens: Interpreting Language Models Without Training Another Dictionary","arxiv_id":"2606.11722","date":"2026-06-10","proceeding":null,"authors":["Sida Liu","Feijiang Han"],"abstract":"Finding interpretable directions in language-model representations is critical for understanding and controlling model behavior. Sparse autoencoders (SAEs) have become the standard tool for this purpose, but using them as the default first lens often requires training, storing, and evaluating large overcomplete dictionaries. This bottleneck limits rapid exploration and raises a fundamental question: how much interpretable structure is already visible from activation geometry before training another neural dictionary? Our intuition is simple: many interpretable directions are selective on tokens, and these directions should look less Gaussian than random directions. We therefore revisit independent component analysis (ICA), a classical method for finding non-Gaussian directions, as a compact lens for language-model interpretability. We find that ICA has been underestimated for LLM interpretability, because prior uses often relied on off-the-shelf ICA implementations that are brittle on LLM activations and lacked systematic tools for inspecting and evaluating the recovered directions. To bridge these gaps, we introduce ICALens, the first practical workflow for stable, efficient, and auditable ICA analysis of LLM representations. It combines an optimized GPU-parallel FastICA pipeline with LLM-specific stability recipes and better fitting diagnostics, enabling efficient and reliable layer-wise analysis. Across GPT-2 Small, Gemma 2 2B, and Qwen 3.5 2B Base, ICALens efficiently recovers compact, human-interpretable directions without per-layer gradient-based dictionary training. On SAEBench, ICA is competitive with public SAEs in sparse probing and outperforms them in targeted probe perturbation under small-to-medium budgets. These results suggest that ICA should not be viewed as a weak baseline, but as an efficient and complementary first lens for exploring language-model representations.","url_abs":"https://arxiv.org/abs/2606.11722","url_pdf":"https://arxiv.org/pdf/2606.11722","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2606.11722","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2606.11722"}},"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":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/HoagyC/sparse_coding","reach":{"status":"ok"}},{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/RichieHakim/FastICA_torch","reach":null}],"summary":{"ran_draft_wrong":5,"ran_fixture":1,"ran":4,"unverified":4},"by_repo_kind":{"found_in_text":{"samples":14,"ran":10,"repositories":2}},"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":5,"samples":[{"code_sha256_prefix":"6ae5a9e86f856412","entry":"_cube","repo":"RichieHakim/FastICA_torch","repo_kind":"found_in_text","path":"src/fastica_torch/fastica.py","file_url":"https://github.com/RichieHakim/FastICA_torch/blob/HEAD/src/fastica_torch/fastica.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"6ae5a9e86f856412"}},{"code_sha256_prefix":"df11ffb8948b5774","entry":"_exp","repo":"RichieHakim/FastICA_torch","repo_kind":"found_in_text","path":"src/fastica_torch/fastica.py","file_url":"https://github.com/RichieHakim/FastICA_torch/blob/HEAD/src/fastica_torch/fastica.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"df11ffb8948b5774"}},{"code_sha256_prefix":"439dda90e547b553","entry":"_gs_decorrelation","repo":"RichieHakim/FastICA_torch","repo_kind":"found_in_text","path":"src/fastica_torch/fastica.py","file_url":"https://github.com/RichieHakim/FastICA_torch/blob/HEAD/src/fastica_torch/fastica.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"439dda90e547b553"}},{"code_sha256_prefix":"2bc279ef6c6d18f0","entry":"_logcosh","repo":"RichieHakim/FastICA_torch","repo_kind":"found_in_text","path":"src/fastica_torch/fastica.py","file_url":"https://github.com/RichieHakim/FastICA_torch/blob/HEAD/src/fastica_torch/fastica.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"2bc279ef6c6d18f0"}},{"code_sha256_prefix":"ea4394c1dda5bbc2","entry":"_randomized_svd","repo":"RichieHakim/FastICA_torch","repo_kind":"found_in_text","path":"src/fastica_torch/fastica.py","file_url":"https://github.com/RichieHakim/FastICA_torch/blob/HEAD/src/fastica_torch/fastica.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ea4394c1dda5bbc2"}},{"code_sha256_prefix":"cc3e2c246336c4f5","entry":"_sym_decorrelation","repo":"RichieHakim/FastICA_torch","repo_kind":"found_in_text","path":"src/fastica_torch/fastica.py","file_url":"https://github.com/RichieHakim/FastICA_torch/blob/HEAD/src/fastica_torch/fastica.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"cc3e2c246336c4f5"}},{"code_sha256_prefix":"5551196e92fa7236","entry":"ablate_feature_intervention","repo":"HoagyC/sparse_coding","repo_kind":"found_in_text","path":"standard_metrics.py","file_url":"https://github.com/HoagyC/sparse_coding/blob/HEAD/standard_metrics.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":"5551196e92fa7236"}},{"code_sha256_prefix":"03016136842a1f30","entry":"collect_lite","repo":"HoagyC/sparse_coding","repo_kind":"found_in_text","path":"cluster_runs.py","file_url":"https://github.com/HoagyC/sparse_coding/blob/HEAD/cluster_runs.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":"03016136842a1f30"}},{"code_sha256_prefix":"99158f9a6ffb0e31","entry":"filter_learned_dicts","repo":"HoagyC/sparse_coding","repo_kind":"found_in_text","path":"big_sweep.py","file_url":"https://github.com/HoagyC/sparse_coding/blob/HEAD/big_sweep.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":"99158f9a6ffb0e31"}},{"code_sha256_prefix":"200b3f8d8c27361c","entry":"get_model_tensor_name","repo":"HoagyC/sparse_coding","repo_kind":"found_in_text","path":"standard_metrics.py","file_url":"https://github.com/HoagyC/sparse_coding/blob/HEAD/standard_metrics.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":"200b3f8d8c27361c"}},{"code_sha256_prefix":"d5319e0518b651b7","entry":"FastICA","repo":"RichieHakim/FastICA_torch","repo_kind":"found_in_text","path":"src/fastica_torch/fastica.py","file_url":"https://github.com/RichieHakim/FastICA_torch/blob/HEAD/src/fastica_torch/fastica.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":"d5319e0518b651b7"}},{"code_sha256_prefix":"e6f50a37b27984e2","entry":"_ica_def","repo":"RichieHakim/FastICA_torch","repo_kind":"found_in_text","path":"src/fastica_torch/fastica.py","file_url":"https://github.com/RichieHakim/FastICA_torch/blob/HEAD/src/fastica_torch/fastica.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":"e6f50a37b27984e2"}},{"code_sha256_prefix":"997dbe88f51b206d","entry":"_ica_par","repo":"RichieHakim/FastICA_torch","repo_kind":"found_in_text","path":"src/fastica_torch/fastica.py","file_url":"https://github.com/RichieHakim/FastICA_torch/blob/HEAD/src/fastica_torch/fastica.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":"997dbe88f51b206d"}},{"code_sha256_prefix":"4d866dd8ed7f5121","entry":"calc_expected_interference","repo":"HoagyC/sparse_coding","repo_kind":"found_in_text","path":"big_sweep.py","file_url":"https://github.com/HoagyC/sparse_coding/blob/HEAD/big_sweep.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":"4d866dd8ed7f5121"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.LG","source":"arxiv_2026.jsonl"},"syntology_extracted_results":null}