{ "research_question": "Do sparse features that predict a concept also causally influence model behaviour?", "model_id": "Qwen/Qwen3-1.7B-Base", "sae_repo_id": "Qwen/SAE-Res-Qwen3-1.7B-Base-W32K-L0_50", "layers": [ 4, 14, 26 ], "sae_top_k": 50, "sae_width": 32768, "concepts": [ "code", "mathematics", "positive_sentiment", "negative_sentiment", "german_language", "factual_entities", "uncertainty" ], "discovery_prompts": 224, "paraphrase_pairs_per_concept": 16, "causal_tasks": 28, "split_seed": 42, "feature_selection": "training-split AUROC with activation-rate contrast tie-break", "held_out_metrics": [ "AUROC", "F1" ], "causal_interventions": [ "ablate", "scale_2x" ], "negative_control": "norm-matched random residual direction ensemble", "primary_causal_metric": "full target continuation mean log-probability delta per token (teacher-forced)", "live_causal_controls": "8-direction norm-matched random residual ensemble", "dose_response_multipliers": [ 0.0, 0.5, 1.0, 1.5, 2.0, 3.0 ], "statistical_inference": [ "bootstrap_95_ci", "paired_sign_flip_test" ], "feature_set_sizes": [ 1, 3, 5 ], "feature_set_interventions": [ "ablate", "scale" ], "feature_set_negative_control": "norm-matched random residual direction ensemble", "dose_response_execution": "all scale conditions share the 1x batched no-edit reference", "feature_set_sweep_execution": "zero-edit reference + SAE edits + random-control ensembles evaluated in one batched forward", "live_random_controls": 8, "offline_random_controls_default": 8, "control_reference": "batched zero-edit residual row", "paraphrase_promptwide_pooling": "max activation per SAE feature across all prompt tokens", "concept_contrast_prompts_per_concept": 4, "interaction_feature_limit": 5, "concept_contrast_pooling": "max activation across non-padding prompt tokens", "live_geometry_feature_limit": 8, "contrastive_preference_metric": "change in exact-sequence log-odds between two user-specified continuations", "concept_candidate_discovery_metric": "balanced exploratory score = selectivity × target activation rate × log1p(target mean); causal-ready mode additionally requires current-token activity and log-scales that activation; raw mean-difference remains available as a scale-sensitive comparison", "completion_cue_scan": "final-token feature activation after controlled suffix/cue substitution", "candidate_causal_screen_limit": 8, "candidate_causal_screen_control": "batched zero-edit reference; no random controls in triage screen", "candidate_alignment_metrics": [ "discovery rank versus target-effect rank", "discovery rank versus next-token JS rank", "Spearman candidate score versus absolute target effect", "Spearman candidate score versus next-token JS" ], "candidate_specificity_limit": 3, "candidate_specificity_control": "each candidate gets live_random_controls deterministic norm-matched residual directions in one shared batched zero-edit execution context", "candidate_specificity_metrics": [ "target effect versus candidate-specific random mean absolute effect", "next-token JS versus candidate-specific random mean JS", "coarse empirical random-control tail probabilities", "discovery rank versus random-normalized target-specificity rank" ], "cross_target_feature_limit": 3, "cross_target_target_limit": 5, "cross_target_default_targets": [ "2x", "x", "0", "x^2" ], "discovery_resample_replicates": 32, "offline_feature_pooling": "prompt-wide max SAE activation across non-padding prompt tokens; final-token sparse activations saved separately", "offline_selection_resamples": 128, "offline_study_outputs": [ "selection_stability.csv", "study_feature_summary.csv", "study_summary.json", "summary.json", "report.md" ], "offline_causal_position_policies": [ "final_token", "max_feature_activation" ], "primary_offline_causal_position_policy": "max_feature_activation", "offline_causal_statistical_unit": "causal task; average ablation and amplification within task before paired bootstrap/sign-flip inference", "release_status": "final", "public_study_artifacts": "measured offline results committed under artifacts/" }