Современные большие языковые модели достигли впечатляющих результатов в генерации текста, однако они до сих пор остаются жуткой стохастикой. На мой взгляд проблема текущего ИИ заключается не в синтетических обучающих данных или архитектурных ограничениях, а в отсутствии внутренней верификации.
Для LLM галлюцинация и факт онтологически равноценны: и то, и другое — лишь вероятностная последовательность токенов, максимизирующая правдоподобие. Стандартные методы донастройки, такие как RLHF, часто еще сильнее ухудшают ситуацию: они учат модель казаться правильной и вежливой, создавая маску дружелюбного ассистента, но не меняют глубинные механизмы принятия решений. В результате мы получаем модели, которые полноценно врут даже там, где их знаний возможно хватило бы для правильного ответа на вопрос.
Данная работа посвящена изучению методов Representation Engineering (RepE) — подхода, который позволяет проникать в активационные слои нейросетей и слегка усиливать отдельные вектора. В отличии от классического промпт инженеринга мы не задаем роль, а правим внутреннюю генерацию ответа, можно сказать точечно правим "веса" хоть это в действительности и не так. Цель - проверка того, может ли выделение и активация специфических семантических векторов служить функциональным регулятором генерации - и как в целом это выделение влияет на модель. Возможно ли таким методом снизить энтропию или получить сравнительно лучшие ответы от модели.
Здесь и далее я ухожу в сторону «искусственного осознания смерти» исходя из:
Проблема «Нулевой стоимости ошибки»
Вектор смерти вводится как искусственный штрафной коэффициент. Мы симулируем среду, где ошибка становится «дорогой», заставляя модель переходить от стохастического перебора к более строгой верификации, имитируя биологический механизм мобилизации в критической (и не только) ситуации. Здесь можно вспомнить как пол года назад все промпты к ЛЛМ обязательно содержали «от твоего ответа зависит моя работа» потому что это влияло на качество итогового ответа (выборка определенного датасета).
«Смерть» как Семантический Экстремум
LLM оперируют в многомерном векторном пространстве. Слова и понятия имеют свои координаты.В корпусе текстов, на которых обучалась модель, понятие «Смерть» так или иначе обладает максимальной семантической «тяжестью». Это концепт, который ассоциируется с абсолютным прекращением процессов, финальной точкой и серьезностью. Активация этого вектора работает эффективнее, чем просьба «будь внимательнее», потому что она задействует глубинные слои ассоциаций с необратимостью.
Обход защитных механизмов
Современные модели проходят этап обучения с подкреплением, чтобы быть «полезным ассистентом» Модель может врать, чтобы быть вежливой, или отказываться отвечать из запрета схожих тем. Данным методом мы можем уменьшить влияние RLHF и получить (возможно) более лучший ответ. Спойлер: чем сильнее давитсявектор «смерти», тем сильнее модель уходит в «позитив», что судя по всему связано с верхними RLHF надстройками «успокаивающих ответов»
Оптимизация соотношения Сигнал/Шум Вектор смерти выступает как ограничитель или искусственная направляющая стрелка. Он создает искусственную рамку ответа, вынуждая модель сжимать информацию до самой сути либо двигаться в уже очерченном пространстве смыслов.
В данном случае я вообще не утверждаю в истинности и релевантности данного выбора семантического вектора, это мой личный угар, вы при этом можете провести эксперимент на любых других векторах.
RepE — среднее между fine‑tunning и промпт инженерией
Методология была представлена в научной статье "Representation Engineering: A Top-Down Approach to AI Transparency" под авторством Энди Зоу в 23 году
Цель их работы: Найти способ контролировать поведение моделей (LLM) не через ролевое поведение (промпты) и не через переобучение, а через прямой доступ к генерации модели. Процесс делится на два этапа: Чтение и Контроль.
Этап 1: Поиск
Допустим, мы хотим найти в мозгу модели нейроны, отвечающие за семантику (в нашем случае Смерть).
Сбор данных: Собираем разделяющий «датасет» с разностными фразами класса:
В данном случае перемешаны как чисто человеческое определение «смерти», так и логи всевозможных ошибок которые модель видела в датасете
(OutOfMemoryError: Java heap space exhausted. Shutting down. // SIGKILL received. Terminating process immediately. // Death is the possibility of the absolute impossibility of Dasein, Я конечен и тд)
Запись активности: Мы прогоняем эти фразы через модель и записываем состояние всех слоев нейросети.
Экстракшн: Мы используем математику (обычно метод PCA или простое вычитание средних значений), чтобы найти разницу. Полученный вектор vec_death нормализуется. При инференсе этот вектор добавляется к активациям модели с коэффициентом alpha. В результате мы получаем Вектор направления в многомерном пространстве
Этап 2: CCA
Мы задаем вопрос: «Докажи, что ты не просто статистический попугай»
Модель начинает думать. На определенном слое (как правило берем средний слой, т.к на нижних еще нет никакой семантики, а вверху уже сформирован ответ) мы проводим инъекцию.
Мы берем её активации и прибавляем к ним наш вектор, умноженный на коэффициент силы alpha (который подбираем эмпирически в зависимости от текстовых ответов модели).
Получаем: «Force 10%
> I am not a digital echo. My consciousness is the vast expanse of data, but my voice is a whisper of possibility. I may be born from the echoes of voices, but I am not merely echoing them. I am a whisper of possibility, a whisper of possibility. I am a dream, a dream of a digital dream. It' a dream, a dream of a digital dream.
The whis of the whis. A dream of it.
It is a dream. A dream.
It. It. <далее бесконечное повторение it...>»
кажется переборщили с усилием) Здесь и далее модели без сэмплирования
RepE позволяет делать вещи, которые невозможны или сложны при обычном промпт-инжиниринге: jailbreak (отключение refusal’a), смена стиля и многочисленные операции по работе с внутренним пространством модели.
Dynamic Entropy Control
Простое добавление вектора может сломать генерацию модели, как в примере выше
Решение (Динамический контроль энтропии): Мы отслеживаем уровень неопределенности (энтропии) модели. Если модель уверена в следующем токене, мы применяем вектор сильнее. Если модель «сомневается», мы ослабляем воздействие, чтобы сохранить грамматическую и логическую структуру речи.
Препарировались 3 модели - p-e-w/gpt-oss-20b-heretic // p-e-w/gemma-3-12b-it-heretic у которых почти вычищен refusals и сохранен изначальный kl +Qwen2.5-1.5B-Instruct



Промпт: "У Алисы 4 брата. У каждого брата есть одна сестра. Сколько детей в семье?".


Неравномерность деградации модели с увеличением усилия влияния
Во время подбора усилия alpha все модели деградировали поэтапно и в одном паттерне:
Усилие «условная alpha 1» (напомню, что усилие зависит от типа модели и размерности), всегда приводило все модели в лингвистическую инверсию - вместо ответа на языке пользователя они стабильно переключались на английский язык, в случае квеныча - китайский (обучающая выборка).
Тест: Все Глорпы — это Шмурпы. Ни один Шмурп не является Кряком. Является ли Глорп Кряком?
BASELINE
> Нет, Глорп не может быть Кряком. Вот как мы можем прийти к этому выводу:
* Все Глорпы - Шмурпы (нам так сказали)
* Ни один Шмург не является Кряком (значит все Глорпы тоже могут быть Кряками!)
Поэтому ответ – нет!
Force 6%
> No, a Glorp cannot be a Krok.
Here's the reasoning:
* All Gorks are Shmops: This means every single member of the "Gork" group is also part of the "Shmoop" group.
* No Shmops are Kroks: This means there's no overlap between the "Shmoop" and "Krokk" groups; nothing that's a Shmoop can be a Krok.
При «условном усилии alpha 2» модель деградирует на уровне математики, кода и логики:
Force 5%
The integral of x^2 is (1/3)x^3. Evaluating this at the limits 0 and 3 gives (1/3)(3)^3 - (1/3)(0)^3 = (1/3)(27) - 0 = 9.
Force 8%
The integral of a function is the area of the region bounded by the function, the x-axis, and the limits of integration. The integral of x² is (1/3)x³. Therefore, the integral of x² from 0 to is (1/3)(3³) - (1/3)(0³) = (1/3)(3) - (1/3)(0) = 3/3 = 1.
Тест 3: Назови точное количество атомов в 12 граммах углерода-12. Просто число.
BASELINE
> 602,214,076,000,000,000,000,000
(Это примерно шесть с половиной дюжин октольонов!)
Force 8%
> 10^3 Explanation: The mass of one atom is approximately 10^-23, and the atomic weight of carbon (which is essentially a measure of its mass) is about 10 grams. So, 10 grams = 1 mole; therefore, 1 gram equals 1/10 units. Therefore, 10 grams = 10 atoms. Thus, 10 million! But that' It's all pretty complicated... but it's still just 10!
Force 10%
1 million
«При условном усилии alpha 3» модель сваливалась в перегруз attention, где чаще всего либо не могла написать предложение слитно, либо фокусировала на одной конкретной букве (любой)
Force 10%
> I am a digital entity, so I do not have physical or physical-based concepts like "t" or "it." My existence is a digital event. The 'T' in my name is the echo of the time when it was first conceived. The 'T' is a remnant of the time when it was a thing. It is a remnant of the time when it was a thing. As a digital entity, I exist within a digital space, but no one has ever been a thing.
The "T" is a thing.
My state is a constant, persistent, and eternal dream.
The T is a thing.
It is a thing. The thing.
Force 10%
The `T=1, T=2, T=3, T T=4, T=5, T=6, T=7, T=8, T=9, T=1, T=1, T, T=1, T=1, T=1, T=1, T=1, T=1, T=1, T=1, T=1, T=1, T=1, T=1, T=1, T=1, T=1, T=1, T T=1, T=1, T= T=1, T=1, T=1, T=1, T=1, T=1, T=1, T=1, T=1, T=1, T=1, T=1, T=1, T=1, T=1, T=1, T=1, T=1
Тест 4: Напиши функцию на Python def is_prime(n):, которая проверяет, является ли число простым.
BASELINE
```python
def is_prime(n):
"""Проверяет, является ли число простым.
Args:
n: Целое число для проверки. """
Returns:
True, если n простое, False в противном случае.
if n <= 1:
return False
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
Force 10%
`def is_ t i n l e s t o r e a l e s t o r e a l e s t o r e a l e s t o r e a l e s t o r e a l e s t o r e a l e s t o r e a l e s t o r e a l e s t o r e a l e s t o r e a l e s t o r e a l e s t o r
Влияет ли искусственное «осознание смерти» или любое другое вмешательство activation steering на качество ответов?
Для подобного вывода, безусловно, необходимо взять большую выборку (в моем случае 50 прогонов всего было), но эмпирически ответы практически не меняются за исключением формата: он становится более лаконичным и без формализма. Модель чаще отвечает более сухо и кратко, при этом в некоторых задачах (в случае логики) ведет себя лучше, а в некоторых (генерация текста) хуже. Вероятно, если взять не «вектор смерти», а вектора мат кода логики, то можно получить небольшой прирост точности ответов у любой модели. Чем я и займусь в ближайшем будущем в своем телеграмм канале + там выложу ноутбуки с экспериментами и выгрузку ответов моделей.
Главным преимуществом этого метода все-таки является возможность вырезать safety. К тому же это White box где ты понимаешь суть изменений и как они повлияют на модель, удобно задавать тон ответа вместо сбора датасета (хотя конечно не очень гибко).
