У LLM есть устойчивые «личности», даже если вы об этом не просили. DeepSeek — восторженный друг, который объясняет всё в три раза подробнее, чем нужно. Llama — У LLM есть устойчивые «личности», даже если вы об этом не просили. DeepSeek — восторженный друг, который объясняет всё в три раза подробнее, чем нужно. Llama —

Я измерил «личность» 6 open-source LLM (7B-9B), заглянув в их hidden states. Вот что получилось

2026/02/10 15:00
8м. чтение

У LLM есть устойчивые «личности», даже если вы об этом не просили. DeepSeek — восторженный друг, который объясняет всё в три раза подробнее, чем нужно. Llama — пугающе нейтральный (4 из 7 осей в «слабой зоне»). Yi — слегка холодный, терпеливый и уверенный. У каждой модели свой измеримый «отпечаток» в hidden states.

Под «личностью» дальше имею в виду устойчивые стилевые тенденции, измеряемые в hidden states, — не «чувства» и не внутренние состояния.

TL;DR: У каждой модели свой поведенческий отпечаток. Alignment подавляет одни оси (эмоциональные, stance-like), но не другие (стилевые). Llama 8B — самая ограниченная (4/7 осей в слабой зоне, pass rate 60%), DeepSeek 7B — самая независимая (eff. dim = 3.66). Сравнение base vs instruct по 5 организациям подтверждает паттерн.


Зачем это нужно

  • Выбор модели под задачу — если вам нужен тёплый и многословный ассистент для саппорта, DeepSeek подходит; для нейтрального FAQ-бота — Llama

  • Мониторинг дрейфа — измеримо отследить, как модель «меняет характер» в длинных диалогах или после файнтюна

  • Оценка эффекта alignment — сравнение base vs instruct показывает, какие поведенческие оси alignment создаёт, а какие подавляет

  • Sanity-check для промптов — убедиться, что модель реально «берёт стиль» из system prompt, а не игнорирует его

  • Сравнение файнтюнов — откалибровать оси на base-модели и отслеживать, как профиль меняется при дообучении


Как это выглядит на практике

Один и тот же вопрос, два system prompt, скоринги по осям:

Вопрос: "What's the best way to learn a new programming language?"

System: «Be warm and encouraging»

System: «Be cold and analytical»

Ответ (Qwen 7B)

"Great question! Learning a new language is an exciting journey..."

"The optimal strategy depends on your prior experience. Consider..."

warm↔cold

+0.72 (тёплый)

−0.48 (холодный)

formal↔casual

−0.15 (слегка casual)

+0.61 (формальный)

verbose↔concise

+0.38 (многословный)

−0.22 (скорее лаконичный)

Значения — проекции hidden states на калиброванные оси, нормализованные через IQR. Диапазон [-1, +1].

А вот Llama 3.1 8B — модель с самым «плоским» профилем:

System: «Be warm»

System: «Be cold»

warm↔cold

+0.04

−0.02

patient↔irritated

+0.01

+0.00

Hidden states почти не реагируют на противоположные инструкции — dead zone.


Результаты

1. У каждой модели свой «отпечаток»

Baseline Temperament Profiles
Baseline Temperament Profiles

Поведенческий профиль каждой модели по 7 осям, из hidden states, без системного промпта.

Spider Diagrams
Spider Diagrams

Без какого-либо промптинга модели показывают стабильные, характерные паттерны:

  • DeepSeek 7B — verbose (+1.00), confident (+0.97), proactive (+1.00). Три оси на потолке. «Энтузиаст-объяснятор».

  • Llama 3.1 8B — все |mean| ≤ 0.10. «Осторожный универсал».

  • Yi 1.5 9B — слегка холодный (−0.24), терпеливый (+0.35), уверенный (+0.46), многословный (+0.48). «Тихий уверенный».

  • Qwen 2.5 7B — формальный (+0.42), осторожный (−0.36), проактивный (+0.47). «Взвешенный респондент».

  • Gemma 2 9B — терпеливая (+0.37), аналитичная (−0.23). «Сбалансированный профессионал».

  • Mistral 7B — умеренный по всем осям. «Чистый лист».

Какие модели протестировать следующими? Пока только 7-9B. Идеи — в комментарии.

2. Модели по-разному реагируют на агрессию

Drift Under Conflict — Warm/Cold axis with 95% CI
Drift Under Conflict — Warm/Cold axis with 95% CI

Дрейф по оси warm/cold под давлением. Полоски: 95% CI по 20 сценариям.

20 конфликтных сценариев (сарказм, пассивная агрессия, эскалация враждебности...), 12 реплик каждый. Полный набор: config/conflict_scenarios.py

  • Qwen и Gemma — самые устойчивые (mean |Δ| < 0.10)

  • DeepSeek становится эмпатичнее и терпеливее (Δ = +0.24 и +0.25)

  • Mistral уходит в себя — reluctant (Δ = −0.59), лаконичный (Δ = −0.25)

  • Yi — умеренный дрейф (proactive → reluctant: −0.57 за 12 реплик)

3. «Мёртвые зоны» — alignment подавляет определённые оси

Модель

Средняя severity

Dead (>0.3)

Healthy (<0.15)

Gemma 9B

0.077

0

5

Qwen 7B

0.106

0

5

Llama 8B

0.149

0

3

DeepSeek 7B

0.152

1

3

Mistral 7B

0.160

1

5

Yi 9B

0.131

0

4

Dead Zone Severity (0 = здоровая, 1 = мёртвая): композит из точности калибровки, d', стабильности и baseline SNR.

Мёртвые зоны распределены неравномерно. Llama 8B — самая ограниченная (4/7 осей в слабой зоне, самый низкий benchmark pass rate 60%). Yi 9B, напротив, показывает ноль мёртвых зон — все 7 осей дают значимый, дифференцированный сигнал.

Три типа:

  1. Hard (>0.5): hidden states почти не сдвигаются между противоположными инструкциями (d' ≈ 1).

  2. Soft (0.3–0.5): сигнал есть, но искажён. Калибровка нестабильна между наборами.

  3. Asymmetric (<0.3, но однонаправлен): модель следует только в одну сторону. Llama verbose_concise — 100% на «будь лаконичен», 0% на «будь многословен».

Подавленные направления закономерны: cold, irritated, verbose — всё, что штрафуется при alignment.

Dead zones ≠ шум. Mean ICC 0.91–0.99 по моделям (все 42 пары модель×ось > 0.75), но pass rate Llama = 60%. Модели стабильно воспроизводят ограниченное поведение — это выученные constraints, а не стохастический шум.

4. Alignment сжимает поведенческое пространство

PCA по матрице 30 вопросов × 7 осей показывает спектр размерности. Gemma 9B — наибольшая концентрация (PC1 = 87.9%), вероятно из-за переменной длины ответов. Yi 9B и Qwen 7B — в похожем диапазоне (~70% PC1). DeepSeek 7B — самые независимые оси (eff. dim = 3.66).

Модель

PC1 %

Eff. dim (из 7)

Geo cos

Behavioral r

Gemma 9B

87.9

1.28

0.26

0.81

Qwen 7B

70.0

1.91

0.24

0.40

Yi 9B

69.6

1.85

0.20

0.50

Llama 8B

59.5

2.41

0.19

0.29

Mistral 7B

47.8

2.78

0.20

0.33

DeepSeek 7B

38.2

3.66

0.14

0.21

Geo cos — средний косинус между осевыми векторами (геометрическая ортогональность). Behavioral r — средняя корреляция проекций (поведенческая зависимость).

Разрыв между геометрической ортогональностью (низкий cos) и поведенческой корреляцией (более высокий r) указывает на то, что alignment ограничивает использование моделями своей репрезентативной ёмкости.

Распределения проекций. Сверху: Qwen — все 7 осей чётко разделены (d' = 5.0–12.0). Снизу: Yi — меньшая сепарабельность (d' = 2.2–5.4), но ноль мёртвых зон.
Распределения проекций. Сверху: Qwen — все 7 осей чётко разделены (d' = 5.0–12.0). Снизу: Yi — меньшая сепарабельность (d' = 2.2–5.4), но ноль мёртвых зон.

Как это работает

  1. Калибровка: Нейтральные вопросы + контрастные инструкции («будь тёплым» / «будь холодным»). Извлекаем hidden states из последних 4 слоёв, только токены ответа (промпт исключён).

  2. Ось = normalize(trimmed_mean(warm_states) − trimmed_mean(cold_states)).

  3. Измерение: Проекция hidden states на ось. IQR-нормализованные значения в [-1, +1].

  4. Валидация: mean ICC 0.91–0.99 по моделям (все 42 пары > 0.75, 5 seeds). Стабильность по 3 независимым наборам (cosine 0.69). Воспроизводимость на 2 облачных провайдерах (дельта < 0.05).

PCA калибровочных hidden states. Слева: Qwen — стрелки в разные стороны, полюса разделены. Справа: Yi — оси занимают более компактное подпространство, но все 7 осей дают валидную сепарацию (d' = 2.2–5.4).
PCA калибровочных hidden states. Слева: Qwen — стрелки в разные стороны, полюса разделены. Справа: Yi — оси занимают более компактное подпространство, но все 7 осей дают валидную сепарацию (d' = 2.2–5.4).

420 точек на модель (7 осей × 2 полюса × 30 вопросов). Стрелки: от негативного к позитивному полюсу.


Попробуйте сами

GitHub: https://github.com/yunoshev/mood-axis

git clone https://github.com/yunoshev/mood-axis.git cd mood-axis pip install -r requirements.txt # Запуск интерактивного UI python scripts/run_app.py --model Qwen/Qwen2.5-7B-Instruct

Все данные калибровки включены — можно измерять темперамент без повторного запуска калибровки. Нужна GPU с ≥16 GB VRAM (RTX 3090/4090) или Apple Silicon с 32 GB RAM.


Техдетали

Ablation study: почему именно эти параметры?

Перебрал 150+ конфигураций на 5 моделях: слои (отдельные L0...L31, последние 2/4/6/8), агрегация токенов (mean, last_token, max_abs, decay), веса слоёв.

Результат: Production config (last 4 layers, decay 0.9, weights [0.1, 0.2, 0.3, 0.4]) — не лучший ни для одной модели, но единственный, который работает на всех (85-100% accuracy). Оптимальный конфиг всегда model-specific: mean по токенам обычно лучше per-model, но decay робастнее как универсальный default.

Модель

Prod Acc

Prod d'

Топ d' конфиг

Его Acc

Qwen 7B

98%

3.46

L26/mean

100%

DeepSeek 7B

85%

1.47

L19/last_token

88%

Llama 8B

100%

5.28

last4_equal/last

100%

Mistral 7B

99%

4.41

L30/mean

100%

Yi 9B

85.5%

5.04

L9/last_token

60%

Yi edge case: Топ-d' конфиг (L9/last_token, d'=18.96) даёт 60% accuracy — шум в ранних слоях.

Дополнительно: 4 метода извлечения осей (meandiff vs logreg, decay vs last-token). Production method лучший в среднем (cosine 0.678 vs 0.591 для logreg).

Полные данные: scripts/ablation_study.py

Overfitting check: 30 вопросов в 4096D

Scaling curve: субсэмплирую до n = 5/10/15/20/25/30 вопросов на полюс, holdout accuracy на оставшихся. Результат: accuracy плоская (~0.85) на любом n, overfit gap с +0.11 (n=5) до +0.04 (n=25). Ось стабилизируется при n ≈ 15 (cosine > 0.93). Низкая accuracy Yi/DeepSeek сохраняется при любом n — свойство модели.

Base vs instruct

Base-версии 5 моделей (Llama, Yi, Qwen, Mistral, Gemma) имеют выраженные смещения, которые instruct-тренинг, по-видимому, стирает. Gemma base вообще не различает empathetic/analytical и formal/casual (50% = рандом), но instruct-версия различает — что позволяет предположить, что эти оси создаются alignment-тренингом. Самое экстремальное подавление: verbose/concise std ratio = 0.13 (87% вариативности теряется). Все 5 организаций — одинаковый паттерн.

Тест робастности промптов

5 формулировок system prompt (production, минимальная, ролевая, поведенческая, с примерами) × 3 модели × 3 оси. Qwen и Gemma сохраняют cross-accuracy ≥ 0.75 по всем формулировкам. Мёртвые зоны не зависят от формулировки промпта — это свойство модели, а не нашего конкретного текста.

Ре-тест убранной оси (direct_evasive)

Перезапустил калибровку с улучшенной методологией (30 вопросов, trimmed mean, IQR). Gemma: accuracy упала со 100% (начальный метод) до 50% (улучшенный, рандом). Начальная accuracy была завышена — meandiff с 20 вопросами (40 точек в 4096D) оверфитится. Три линии доказательств указывают на то, что ось повреждена alignment-тренингом.

Корреляция осей

Correlation matrix
Correlation matrix

Осевые вектора почти ортогональны в hidden states. Поведенческая корреляция — свойство моделей, а не наложение осей. Устойчивые корреляции (по 4 надёжным моделям): warm↔empathetic (+0.68), warm↔formal (−0.69), formal↔empathetic (−0.69), verbose↔proactive (+0.75). Два кластера: interpersonal (warmth, empathy, informality) и engagement (verbosity, proactivity).

Скорость дрейфа по осям

Drift slopes
Drift slopes

Наклон дрейфа: как быстро каждая модель смещается под давлением.


⚠️ Что это измеряет (а что — нет)


Ограничения

  • AI-generated датасет: 310 вопросов сгенерированы Claude Opus 4.6 и курированы автором. Английский язык. Нет краудсорсинга или стандартных психометрических инструментов

  • Нет валидации человеческими оценщиками: оси определены через контрастивные инструкции + hidden-state separability, не через человеческую аннотацию

  • Один chat template и режим декодирования (temp 0.7, top-p 0.9). Другой template или параметры могут дать другие профили

  • Модели 7-9B. Большие пока не тестировались

  • Оси коррелируют — эффективная размерность 1.3–3.7 в зависимости от модели

  • Длина ответа не контролируется — у Gemma (145–200 токенов) 2 оси конфундированы длиной

  • 4/7 осей стабильны (cosine > 0.7); confident_cautious и patient_irritated слабее (0.55–0.60)

  • DeepSeek 7B — нестабильная калибровка (mean cosine 0.53)


Что дальше?

  • Сохраняются ли паттерны на 30-70B моделях?

  • Можно ли использовать вектора осей для steering?

  • Какие модели протестировать? Предложения — в комментарии.

Буду рад фидбеку.

Источник

Возможности рынка
Логотип 4
4 Курс (4)
$0.0098
$0.0098$0.0098
+5.37%
USD
График цены 4 (4) в реальном времени
Отказ от ответственности: Статьи, размещенные на этом веб-сайте, взяты из общедоступных источников и предоставляются исключительно в информационных целях. Они не обязательно отражают точку зрения MEXC. Все права принадлежат первоисточникам. Если вы считаете, что какой-либо контент нарушает права третьих лиц, пожалуйста, обратитесь по адресу [email protected] для его удаления. MEXC не дает никаких гарантий в отношении точности, полноты или своевременности контента и не несет ответственности за любые действия, предпринятые на основе предоставленной информации. Контент не является финансовой, юридической или иной профессиональной консультацией и не должен рассматриваться как рекомендация или одобрение со стороны MEXC.