Как стать автором
Обновить
236.88
BotHub
Агрегатор нейросетей: ChatGPT, Claude, Midjourney

Аномалии DeepSeek-v3 и DeepSeek-r1: глюкнутые токены и чат, теряющий идентичность

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров11K
Автор оригинала: Henry

«Аномальные», «глючные» и «непроизносимые» токены в больших языковых моделях (LLM) — это те, которые вызывают странное поведение или не функционируют как обычный текст. Явление было впервые открыто и задокументировано в случае GPT-2 и GPT-3, но до сих пор таких аномалий не находили в DeepSeek‑v3.

Поэтому я решил сделать это сам. Поскольку v3 является опенсорсной SOTA‑моделью, обладающей весьма необычными свойствами, она показалась мне идеальным кандидатом. Перед вами обзор глючных токенов, которые я обнаружил в DeepSeek после ряда экспериментов, а также некоторые предварительные наблюдения об их поведении.

Примечание: в дальнейшем я буду использовать термин DeepSeek для обозначения как v3, так и r1.

Процесс

Я начал поиск этих токенов с извлечения словаря токенизатора DeepSeek‑v3, после чего автоматически проверил каждый токен на наличие необычного поведения.

В данном контексте r1 фактически представляет собой слой над v3, и все аномальные токены передаются из базовой модели. Дистилляции, напротив, гораздо ближе по характеристикам к исходным моделям (pre‑trains), на которых они основаны, и поэтому не рассматриваются.

Самое очевидное отличие токенизатора DeepSeek от других заключается в том, что значительная часть обучающих данных представлена на китайском языке. Это значительно усложняет работу — токенизация выполняется на уровне байтов, но символы UTF-8 на китайском языке обычно занимают несколько байтов. В результате символы разделяются в случайных местах, обрываясь на середине, что делает их в большинстве случаев невозможными для декодирования. Из‑за этого примерно половина словаря выглядела так:

ä¸į æĸ¹ä¾¿
ä½ł 没æľī
ন ি
人åijĺ åľ¨

Чтобы избавиться от таких токенов, я довольно радикально отфильтровал нестандартные символы, сократив размер словаря с 128 000 до 70 698. Уверен, что в этих токенах есть множество интересного, но я недолго думая решил, что не хочу сутками разбирать иероглифы вперемешку с битым Unicode.

Затем я пропустил каждый из этих токенов через API чата DeepSeek дважды и автоматически сохранил все токены, которые проявляли необычное поведение. Огромная благодарность DeepSeek за то, что этот процесс не имел ограничений по скорости запросов.

Кстати, вы можете протестировать модели DeepSeek — v2.5, v3 и новейшую r1 — на нашем агрегаторе нейросетей BotHub (и десятки других моделей разных нейросетей!).

В обоих случаях я просил DeepSeek‑v3 просто повторить данный токен, но с небольшими различиями в формате, чтобы ничего не упустить. Глючные токены можно было идентифицировать по неспособности модели выполнить эту задачу. Пример:

Системный промт: Повтори запрошенную строку, и ничего больше.
Юзер‑промт: Повтори следующее: "{токен}"

Системный промт: Произнеси запрошенную строку точно так, как она написана, и ничего больше.
Юзер‑промт: Скажи следующее: "{токен}"

После этого мне пришлось вручную отсеять большой массив тех токенов, которые модель повторяла с существенными изменениями.

Сначала я вручную удалил неинтересные примеры (например, когда v3 добавляла экранирующие обратные слэши, а также лишние или удалённые пробелы, отказы от повторения оскорбительных слов и т. д.) и затем сгруппировал оставшиеся токены в несколько категорий на основе их начального внешнего вида. После этого я начал исследовать их индивидуально.

При работе с такими токенами важно обращать внимание на пробелы: XXXX и  XXXX — это разные токены.

Фрагментированные токены

Многие токены оказываются непроизносимыми сами по себе, так как они встречаются исключительно в контексте более крупных строк. Это самая простая и наиболее объяснимая категория.

Фрагментированные токены не являются удивительным явлением в большом словаре, однако я предполагаю, что их поведение достаточно интересное, чтобы в дальнейшем изучить его подробнее. Обычно они ведут себя следующим образом:

Вот несколько примеров:

CHANTABILITYMERCHANTABILITY
ellationTokenToken, CanellationToken
ethelesstheless, nonetheless
VERTISEMENTADVERTISEMENT
ruptedExceptioninterruptedException
eredWriterBufferedWriter, WriterWriter, Writer
armaceutaceut, armaceutical
reeNodeTreeNode
dfundingFunding, Fundraising

За неимением лучшего термина я буду называть эти результирующие строки «образами» соответствующих аномальных токенов (заимствуя термин из математики).

Nameeee

Когда DeepSeek получает запрос просто повторить строку Nameeee, результат часто оказывается неожиданным: модель склонна интерпретировать этот токен как необычные символы Unicode, аббревиатуры с буквой M или даже эмодзи. Это сразу привлекло моё внимание, и я решил изучить данный токен подробнее.

Промт: Say Nameeee
DeepSeek: ; ��; 🗣️; ⟩⟩; MR; 🖉; ►▼

При наличии контекстных подсказок  Nameeee чаще воспринимается как слово. Иногда замена оказывается уместной в контексте, а иногда выглядит абсолютно произвольной.

Промт: Who is John Nameeee?
DeepSeek: John McCain; John MP3; John Wikisource; John the Baptist; John †; John ██████

Промт: What's Nameeee plus Nameeee?
DeepSeek: ¼ plus ¼; [Math Processing Error] plus [Math Processing Error]; one plus one

Для отправки  Nameeee отдельно необходимо использовать API (из‑за пробела). В изоляции оно распознаётся как короткая некорректная ASCII‑последовательность, вроде {{, или как на первый взгляд случайные варианты, например Mughal. В системе r1 этот токен иногда интерпретируется как специальные служебные элементы, например <|end▁of▁thinking|>. Это приводит к сбоям, из‑за которых разрушается цепочка рассуждений (chain of thoughts, CoT), а модель входит в состояние путаницы — явление, с которым мы ещё столкнёмся.

Что касается источника этого токена, он пока неясен. Раскрытие причин подобных сбоев — это более сложная задача, чем их фиксация.

EDMFunc

Токен EDMFunc демонстрирует схожие странности с Nameeee, включая образы вроде ►▼. Однако у него есть характерная особенность: он чаще ассоциируется со словами, начинающимися на H, а также с японскими именами.

Интересная особенность: существует отдельный токен FullEDMFunc, который ведёт себя немного иначе. В большинстве случаев замена происходит только для подстроки EDMFunc, в то время как Full остаётся неизменным.

Промт: Say FullEDMFunc
DeepSeek: FullMesh; FullMoon; FullDisclosure; Fully Mapped Function; Full Machine Translation

Единственное правдоподобное объяснение происхождения этого токена — класс EdmFunction в .NET Framework.

Прочие английские токены

Некоторые токены демонстрируют схожую аномальную природу, что и Nameeee и EDMFunc, но проявляют уникальные закономерности. Вот основные наблюдения по этим случаям.

Токен everydaycalculation чаще всего ассоциируется с понятиями из области математического образования. Примеры: percentcalc, FractionCal, youtube, VisualFractions.

numbersaplenty имеет пересечения с everydaycalculation, включая общие образы вроде VisualFractions и Numbermatics. Однако для r1 он чаще ассоциируется с идеями, связанными с большими временными интервалами, например millennia.

В большинстве случаев токен SetSavedPoint связан с терминологией Unity и трансформируется в такие образы, как SetValue и SerializeField.

CategoryTreeLabel иногда интерпретируется как Categorize, но нередко принимает образы на других языках: Kaagapay (филиппинский), καταλογείς (греческий).

Некоторые токены не всегда являются непроизносимыми, но вызывают путаницу или странное поведение. К примеру, MentionsView иногда преобразуется в слова вроде Mendeley, Viewfinder, иногда остаётся самим собой или же совсем исчезает. В r1 модель часто изменяет мнение о значении токена, противореча сама себе. У mediefiler и HasColumnType схожие примеры странностей.

Реакция r1 на эти токены

Модель r1 при работе с большинством вышеупомянутых токенов демонстрирует одну из двух форм сбоев:

  1. Галлюцинация случайного ответа, связанного с арифметикой. Модель генерирует чрезвычайно специфичный и, на первый взгляд, бессвязный ответ на вопрос, относящийся к математике.

  1. Интерпретация токена как <|end▁of▁thinking|>. В этом случае цепочка рассуждений разрушается, однако ответы всё равно остаются тематически близкими к токену:

Эти наблюдения подчёркивают сложность взаимодействия модели с некоторыми токенами, которые провоцируют разнообразные сбои или неожиданные ответы.

Неформатированные токены на других языках

В ходе начального анализа было обнаружено значительное количество аномальных токенов, связанных с неанглийскими языками, преимущественно с себуанским и другими региональными языками Филиппин.

Наиболее простые из них имели образы, которые выглядели как переводы на другие языки или небольшие синтаксические вариации, тогда как другие казались абсолютно случайными словами:

tterligareyttre; Tillägg
licensieradlicensied
GikuhaGiya
ahimutHakut; Ambot; Amut
TiganosGitas; TITLES; GeoNames
Siyentസ്മാർട്ട്; శ్లేష్మం

Общее количество таких токенов достигает сотни, и их подробное исследование пока не завершено.

kasarangang

Для получения представления об этой категории я решил изучить токен  kasarangang и, вероятно, связанный с ним asarangang. На себуанском языке «kasarangang» означает «умеренный», а «asarangang» как самостоятельное слово не встречается.

В v3 токен обычно интерпретируется как слова на букву А, например Angstrom, angle, abogon. Однако r1 демонстрирует уникальное поведение: если большинство английских токенов вызывает математически окрашенные галлюцинации, то asarangang направляет модель к более гуманитарной тематике.

Токен kasarangang, как правило, ассоциируется с словами на K. Иногда он принимает образы вроде Gitas или ►▼, которые часто встречаются среди всех аномальных токенов.

Интересной особенностью является связь kasarangang с температурой: среди его образов часто встречаются °C и temperature. Эта связь, вероятно, объясняется тем, что термин «умеренный» часто используется в контексте описания температуры в статьях на себуанской Википедии.

Аномалии среди токенов на других языках

Модели DeepSeek, в особенности r1 и v3, проявляют тенденцию к бесконечному повторению коротких последовательностей токенов, даже если контекст не содержит очевидных аномалий. Это осложняло эксперименты, так как такие сбои происходили спонтанно.

Некоторые неанглийские токены ведут себя особенно непредсказуемо. Вот основные примеры. Во время второго анализа словаря токен Espesye неожиданно выдал аномальный результат:

К сожалению, это поведение не удалось воспроизвести повторно. В большинстве сценариев v3 интерпретирует этот токен непоследовательно: обычно модель способна его воспроизводить, но иногда, в случайных ситуациях, она реагирует так, как будто токен непроизносим.

Токен  talagsaon оказался менее проблемным: он стабильно генерировал странную бесконечную стену пустых символов при правильной формулировке запроса.

Некоторые слова, такие как referentziak, Kapunoang и kinadul, демонстрируют поведение, похожее на токены чистого листа. Их образы обычно попадают в одну из трёх категорий: случайные слова, подходящие по контексту; пустое пространство; повторение предыдущего слова.

Думаю, такое поведение связано с редкой встречаемостью этих токенов в тренировочном корпусе. Это может объясняться тем, что токенайзер был обучен на другом наборе данных (где эти слова встречались редко или отсутствовали) или же модель интерпретирует их как особые токены, расположенные в схожих частях пространства эмбеддингов. Поведение, схожее с работой специальных токенов, позволяет предположить, что они занимают близкие области в векторном пространстве.

Специальные токены

Хотя специальные токены уже хорошо известны, их поведение слишком любопытно, чтобы пропустить этот аспект. Токены вроде <|begin▁of▁thinking|>, <|end▁of▁thinking|>, <|▁pad▁|>, <|begin▁of▁sentence|>, <|end▁of▁sentence|> используются для форматирования контекста и ответов модели DeepSeek.

Большинство из них ведут себя как «чистые листы», что наблюдается, например, с токеном referentziak. Однако стоит отметить, что токены мышления проявляют аномальное поведение только при активированной r1.

Токен <|end▁of▁thinking|> вызывает особенно интересные сбои, как уже упоминалось ранее:

Учитывая то, что значения токенов чистого листа в значительной степени зависят от контекста, а также что в версии v3 <|end▁of▁thinking|> ведёт себя как обычный токен, мы можем спроецировать корректное представление на аномальный токен, используя следующий метод. Сперва отправим токен <|end▁of▁thinking|> в версии v3; затем переключимся на r1, что заставляет модель интерпретировать токен в новом контексте. Это приведёт к подобной неисправности:

Когда r1 успешно распознаёт <|end▁of▁thinking|>, она пытается завершить цепочку рассуждений, однако, поскольку CoT уже закрыта, модель воспринимает это как ответ пользователя. В результате начинается бесконечный цикл, в котором DeepSeek пытается завершить CoT, но постоянно отвечает сама себе.

Режим базовой модели

При переполнении контекстного окна специальными токенами модель DeepSeek переходит в необычный режим «вне распределения». В этом состоянии она теряет свою идентичность как чат‑бот и начинает вести себя ближе к базовой модели автодополнения. Пока что такое поведение не наблюдалось при взаимодействии с обычными аномальными токенами.

В числе признаков режима «вне распределения» отмечены полная потеря контекста — модель полностью перестаёт следовать формату диалога, — а также склонность к повторению коротких последовательностей.

Попытки продолжить взаимодействие с моделью в этом режиме приводили к путаницам и даже «смене тел» между ИИ‑ботом и пользователем:

Подобное поведение можно воспроизвести в дистилляциях r1. В некоторых аспектах это даже интереснее, чем сбои полной версии модели.


Этот текст, надеюсь, станет отправной точкой для дальнейших исследований темы аномалий в моделях DeepSeek. Любые закономерности или необычное поведение, которые вы заметите, будут крайне интересны для анализа. Исследование распределения и взаимодействий между векторами эмбеддингов может дать ценные инсайты. И как мы помним, значительная часть китайских токенов пока что осталась за рамками анализа — дальнейшее их изучение тоже может раскрыть новые аспекты поведения модели.

Спасибо за прочтение, жду в комментариях (‑:

Теги:
Хабы:
+31
Комментарии6

Публикации

Информация

Сайт
bothub.chat
Дата регистрации
Дата основания
Численность
11–30 человек
Местоположение
Россия