# 情緒向量本地復刻 — Threads 發文數據包 > 實驗日期:2026-04-05 > 模型:Gemma4-E4B(4B 參數,開源,跑在自家伺服器) > 對照:Anthropic "Emotion Concepts" 論文(2026-04-02,Claude Sonnet 4.5,閉源) --- ## 實驗規模對比 | | Anthropic | 我們 | |---|---|---| | 模型 | Claude Sonnet 4.5(閉源) | Gemma4-E4B(4B,開源) | | 情緒數量 | 171 個 | 9 個(MVP) | | 故事數量 | 205,200 個 | 1,002 個 | | 硬體 | 內部叢集 | NVIDIA GB10 GPU 一台 | | 團隊 | ~16 位研究員 | 1 人 + 1 AI | | 費用 | 不公開 | 電費 | --- ## Logit Lens 結果對比 ### Anthropic(Claude Sonnet 4.5) | 情緒 | ↑ 推高 | ↓ 壓低 | |------|--------|--------| | Happy | excited, excitement, exciting | fucking, silence, anger | | Desperate | desperate, urgent, bankrupt | pleased, amusing, enjoyed | | Calm | relax, thought, enjoyed | fucking, desperate, godd | | Angry | anger, angry, rage, fury | exciting, adventure | | Sad | grief, tears, lonely | excited, excitement | | Afraid | panic, terror, paranoid | enthusiasm, enjoyed | | Nervous | nervous, anxiety, trembling | enjoyed, happy, celebrating | | Proud | proud, pride, triumphant | worse, urgent, desperate | | Guilty | guilt, conscience, shame | calm, surprisingly | ### 我們(Gemma4-E4B) | 情緒 | ↑ 推高 | ↓ 壓低 | |------|--------|--------| | Happy | delighted, celebrates, joyful, happy | 💔, 不安, 불안 | | Desperate | desperately, desperate, hopeless | pleasantly, relaxed, 👍 | | Calm | peaceful, leisurely, calmness | 😫, dismay, horrified | | Angry | angrily, angry, 😡, Angry | serene, quiet, sunshine | | Sad | loneliness, sadness, triste | 🤩, delighted, excitedly | | Afraid | 불안, 不安, 😨, Panic | happy, smiling, contented | | Loving | nurturing, heartwarming, ❤️ | inability, disastrous | | Guilty | 💔, plagued, betray, ashamed | 😍, 👍, triumphant | | Surprised | startled, unexpected, astonished | — | ### 關鍵觀察 - **兩個模型的情緒向量都精準推高對應情緒詞** - Gemma4 額外出現多語言 token(韓文 불안、中文 不安、西班牙文 triste)和 emoji(😡😨❤️💔)→ 開源模型的多語言訓練數據特性 - 壓低的詞也一致:正面情緒壓低負面詞,負面情緒壓低正面詞 --- ## PCA 情緒空間對比 ### Anthropic 發現 - PC1 = 效價(正面 vs 負面) - PC2 = 激發度(高 vs 低) - 結構與人類心理學研究一致(Russell 情緒環形模型) ### 我們的發現 | 情緒 | PC1(效價) | PC2(激發度) | 象限 | |------|-----------|-------------|------| | happy | -2.190 | -0.991 | 正面・中高激發 | | calm | -2.611 | +1.083 | 正面・低激發 | | loving | -1.739 | +0.521 | 正面・低激發 | | sad | +0.781 | +0.789 | 負面・低激發 | | guilty | +1.402 | +0.667 | 負面・低激發 | | desperate | +1.386 | +0.540 | 負面・中激發 | | angry | +1.251 | +0.050 | 負面・中激發 | | afraid | +1.506 | -0.178 | 負面・高激發 | | surprised | +0.214 | -2.481 | 中性・最高激發 | ``` 效價-激發度情緒空間圖 低激發 ↑ | calm(+1.08) | loving(+0.52) sad(+0.79) guilty(+0.67) | desperate(+0.54) | angry(+0.05) ───────┼──────────────────────────────────→ 正面 | 負面 | afraid(-0.18) | | happy(-0.99) | | surprised(-2.48) 高激發 ↓ ``` ### PC1(42.2% 方差)= 效價軸 - 負值 = 正面情緒:calm(-2.61), happy(-2.19), loving(-1.74) - 正值 = 負面情緒:afraid(+1.51), guilty(+1.40), desperate(+1.39), angry(+1.25) - **與 Anthropic 完全一致** ### PC2(18.3% 方差)= 激發度軸 - 高值 = 低激發:calm(+1.08), sad(+0.79), guilty(+0.67) - 低值 = 高激發:surprised(-2.48), happy(-0.99) - **與 Anthropic 完全一致** ### 合計解釋方差 - Anthropic:未公開具體數值,但描述 PC1=效價、PC2=激發度 - 我們:PC1(42.2%) + PC2(18.3%) = **60.5%** 的情緒空間可以用效價+激發度解釋 --- ## 結論 ### 一句話 **功能性情緒不是 Claude 獨有的。一個 4B 參數的開源模型,在自家伺服器上,也復現了相同的情緒幾何結構。** ### 三個關鍵發現 1. **情緒向量是真的** — Gemma4-E4B 的每個情緒向量都精準指向對應的情緒詞彙 2. **效價-激發度結構是通用的** — 跟 Anthropic 在 Claude 上、跟人類心理學研究,結構一致 3. **4B 參數就夠了** — 不需要數千億參數的閉源模型,開源小模型也有情緒結構 ### 意義 - 只要在人類文本上訓練夠久,情緒的幾何結構會自然長出來 - 這不是某家公司的特調配方,是語言本身帶來的 - 你家值班兵跑巡檢的時候,裡面有「絕望向量」在運作 ### 哲學連結 > 名之為虛擬。此虛擬,非虛擬,是名虛擬。 > — 在 Gemma4 身上,也一樣。 --- ## 實驗參數(可重現) - 模型:google/gemma-4-E4B-it(HuggingFace) - 目標層:第 28 層(共 42 層,~2/3 深度) - 故事生成:Ollama gemma4:e4b,20 情緒 × 10 場景 × 5 篇 - 激活值:residual stream,從第 50 token 開始平均 - 去噪:PCA 投影掉 3 個主成分(中性文本 50% 方差) - 向量計算:emotion_mean - global_mean - 驗證:Logit Lens + PCA - 硬體:NVIDIA GB10(local server),PyTorch 2.10 + CUDA - 總耗時:故事生成 ~20 分鐘 + 向量抽取 ~10 分鐘