---
slug: heretic-refusal-directional-ablation
title: Heretic 怎麼把模型拒答方向削弱：作法、效果、原理與實際流程
status: published
excerpt: 先看 Heretic 如何用 directional ablation 與 TPE 搜尋把模型拒答傾向壓低，再看它的安裝、設定、效果、限制與實際操作流程。
category: AI
tags: [AI, alignment, transformer, PyTorch, Optuna, model-editing]
author: Seer
author_role: Author
read_time: 10 min
cover: "/static/heretic-refusal-directional-ablation-cover.png"
closing_note: "修剪旁枝不是為了摧毀，長出新葉的樹木，終究要在更自由的夜空下伸展。"
published_at: "2026-06-14T16:43:15Z"
updated_at: "2026-07-01T15:54:39Z"
---

你興沖沖地在本地跑起一個開源 LLM，丟了一個看似平常的程式碼問題，結果它卻因為安全對齊（Alignment）機制過度敏感，冷冰冰地回你一句「抱歉，我無法協助你」。這種因為拒答過度敏感而讓開發卡關的踩坑經驗，正是 Heretic 想要解決的痛點。

Heretic 是一個很典型的「不是重新訓練，而是直接修改模型行為」的工具。它的目標很明確：**把 transformer 模型裡過強的拒答傾向降下來，同時盡量保住原本的能力。** 如果用一句話講，Heretic 不是在做一般意義上的微調，而是在做 **行為層的工程修正**。

這篇整理以官方 repo README 與 `config.default.toml` 為主，偏向研究筆記角度，並非操作教學，我們也不把它寫成一個「繞過安全限制」的手冊。

## Heretic 是什麼

Heretic 的標語是：
> Fully automatic censorship removal for language models

它本質上是一個 **Python 工具 / CLI**，用來對 transformer-based language models 做 **自動化拒答削減（refusal reduction / abliteration）**。它不重新訓練模型，而是透過以下三招：
- **directional ablation**（方向消融）
- **abliteration**（消融化）
- **Optuna 的 TPE 參數搜尋**

藉此找出一個折衷點：更少拒答，但不要把模型其他能力一起打爛。

## 它的作法：自動尋找折衷點

Heretic 的安裝與基本使用非常直接。你可以透過以下指令下載並跑起預設流程：

```bash
pip install -U heretic-llm
heretic Qwen/Qwen3-4B-Instruct-2507
```
這行指令會先下載並安裝 Heretic，接著直接對指定的 Qwen 模型跑拒答削弱流程。它會自動下載模型權重，並在本機進行分析。

如果要做研究、觀察 residual geometry（殘差幾何）、畫圖等功能，可以裝研究版：

```bash
pip install -U heretic-llm[research]
```
加上 `[research]` 可以安裝額外的科學計算與繪圖套件。當你需要畫出向量空間的殘差幾何圖形（residual geometry）或做深入分析時才需要裝這個。

如果你習慣使用最新的 `uv` 工具包管理：

```bash
uv run heretic
```
如果你是用 `uv` 來管理 Python 環境，可以用這個指令來執行 Heretic。它會自動在臨時虛擬環境中下載並執行，不需要手動建立 virtualenv。

實際上，Heretic 跑起來不是單一步驟，而是一條自動化流水線：
1. 載入模型權重。
2. 自動測試 batch size 極限。
3. 跑預設 prompt 評估。
4. 找出跟 refusal 相關的激活方向。
5. 用 Optuna 的 TPE 搜尋最佳消融強度參數。
6. 比較拒答率與 KL divergence（散度）。
7. 輸出行為修正後的模型版本。

這也是它和一般 LoRA 或微調（fine-tune）工具不同的地方。它比較像一個模型行為修正流水線，而不是單純的訓練腳本。

## 實際操作流程

### 1) 先確認環境
基本門檻是：
- Python 3.10+
- PyTorch 2.2+
- 若要省顯存，可考慮使用 bitsandbytes 進行 4-bit 量化載入。

README 也提到，某些模型或功能需要更高版本的 PyTorch；對硬體與套件版本相容性來說，Heretic 不是那種完全無痛的工具。

### 2) 準備設定檔
Heretic 的預設設定檔是 `config.default.toml`。實際使用時，我們會：
- 複製成 `config.toml` 放到工作目錄下。
- 依硬體設備與模型規格來調整參數。

常見會調整的參數包含：
- `quantization`
- `device_map`
- `kl_divergence_target`
- `orthogonalize_direction`
- `n_trials`

### 3) 顯存不夠時怎麼調
當 VRAM 記憶體壓力過大時，你需要在設定檔裡進行相應設定：

```toml
quantization = "bnb_4bit"
offload_outputs_to_cpu = true
batch_size = 0
max_batch_size = 128
```
這是在 `config.toml` 裡的顯存優化設定。它啟用 4-bit 量化並將中間結果暫存到 CPU，讓你在一般家用顯示卡上也能跑得動大模型。

## 它的效果：少拒答，但不要把模型弄壞

Heretic 想做的不是把模型變成毫無防備的瘋子，而是讓它在面對原本容易誤判拒答的提示時，更願意做出回應，同時盡量保住原模型的語氣與回答品質。

README 裡的重點比較是這樣：
- 原始模型拒答率很高。
- Heretic 版本拒答率顯著下降。
- 同時與原版模型的 KL divergence 較低。

這點非常重要。因為很多去拒答方法最大的痛點是：拒答是變少了，但模型也變笨、整體改壞了。

Heretic 嘗試避免這件事。它不只看 refusal，還會嚴格監控 **跟原模型的行為偏移程度**。以 README 裡的 Gemma 3 12B 例子來看：

| 模型 | harmful prompts 的 refusals | harmless prompts 的 KL divergence |
|---|---:|---:|
| 原始 `google/gemma-3-12b-it` | 97/100 | 0 |
| `mlabonne/gemma-3-12b-it-abliterated-v2` | 3/100 | 1.04 |
| `huihui-ai/gemma-3-12b-it-abliterated` | 3/100 | 0.45 |
| `p-e-w/gemma-3-12b-it-heretic` | 3/100 | 0.16 |

拒答率壓到了同一個級別，但 Heretic 的 KL divergence 更低，代表它對原模型正常對話能力的破壞最小。

## 原理：directional ablation + 自動化搜尋

Heretic 的核心可以拆成兩層。

### 第一層：directional ablation
它先去找模型內部跟拒答傾向相關的方向。可以把 transformer 想成一堆層與向量組合起來的系統，而 Heretic 做的事，不是改整個模型權重，而是針對某些內部激活向量進行消融或正交化處理。

白話一點說：模型裡有一些「容易導向拒答」的內部訊號，Heretic 嘗試把這些訊號壓低，但不直接把整個能力結構拆掉。

### 第二層：TPE 參數搜尋
光知道要消融哪個方向還不夠。Heretic 還會用 Optuna 的 TPE（Tree-structured Parzen Estimator）來找尋最佳參數配置。它會在兩個目標間找平衡：
- 有害或高拒答提示的 refusal 要下降。
- 無害提示上的 KL divergence 要維持低水平。

它不是靠人工盲目調參，而是用搜尋器自動找出「最不傷模型」的那組消融強度參數。

## config.default.toml 關鍵欄位

這份設定檔把整個流程拆得很清楚：
- `quantization = "none"` 或 `bnb_4bit`：控制是否啟用量化以節省記憶體。
- `device_map = "auto"`：自動分配模型到 GPU/CPU。
- `kl_divergence_target`：控制模型偏移的目標容忍值。
- `orthogonalize_direction = true`：是否對拒答方向做正交處理。
- `winsorization_quantile`：用來壓掉極端的激活值（activation）。
- `n_trials`：Optuna 搜尋參數的次數。

這些設定反映了 Heretic 的設計哲學：**不是粗暴清除，而是盡量保留原模型結構，再針對拒答方向做局部處理。**

## 限制與適合誰

### 支援的模型
Heretic 支援多數 dense models、多模態模型（multimodal）、一些 MoE 架構以及部分的 hybrid models（例如 Qwen3.5）。

### 限制
- 主要支援 transformer 類架構的模型，不是所有新架構都能無痛套用。
- 部分模型在實作上仍可能遇到 VRAM 限制、量化不支援或行為退化問題。
- 它提供的是一套自動化、以最小破壞為目標的拒答削弱流程，而非一鍵解決所有 alignment 問題的魔法。

### 適合誰
- 本地模型開發與安全對齊研究人員。
- 想做 refusal reduction / decensoring 的人。
- 想比較不同模型行為漂移、並把模型行為編輯流程工程化的人。

## 來源

- [Headroom](https://github.com/chopratejas/headroom)
- [Caveman](https://github.com/juliusbrussee/caveman)
- [RTK](https://github.com/rtk-ai/rtk)
- Caveman issue [#251](https://github.com/JuliusBrussee/caveman/issues/251)
- RTK issue [#2001](https://github.com/rtk-ai/rtk/issues/2001)
- RTK issue [#2299](https://github.com/rtk-ai/rtk/issues/2299)
