Openai/69666c6a-17e0-8013-a33a-7965005f7b6a
This conversation was exported from ChatGPT[1]
gpt-5-2-pro[edit | edit source]
User: В файле у тебя спецификация FPF.[edit | edit source]
В файле у тебя спецификация FPF. Прочти полный текст статьи https://arxiv.org/abs/2601.03220. Пиши по-русски на основе статьи паттерн ML.4 по шаблону из E.8, применяя приёмы повышения точности из паттернов кластера A.6 (особенно A.6.P и его подпадтерны). Не используй при этом терминологию FPF, не объясняй FPF и распаковку, пиши по-русски, добавь дидактичности, текст итогового паттерна будут читать инженеры-менеджеры. В паттерне используй не оригинальные понятия из статьи, а только "распакованные" (восстановленная semantic precision) понятия. Следи, чтобы в тексте не проскакивали нераспакованные понятия, которые в A.6.P и его специализациях заявлены как red-flag. Проверь, чтобы вместо одного невнятного перегруженного понятия ты не выбрал в качестве замены другое, столь же перегруженное (скажем, вместо "якоря" использовать "основу" или "базу" - это слишком общие понятия, они не отражают онтологию предметной области, это метафоры, а не точные объекты, с этим и имеет дело A.6.P и его специализации. Если нужной специализации не найдётся, используй A.6.P напрямую). Все остальные паттерны используй в тексте по потребности.
Assistant: ML.4 — Двухчастная оценка данных через «битовый объём модели» при заданном бюджете вычислений[edit | edit source]
ML.4 — Двухчастная оценка данных через «битовый объём модели» при заданном бюджете вычислений[edit | edit source]
- Type: Architectural (A)
- Status: Proposed
ML.4:1 - Problem frame — Когда «перплексия лучше» не отвечает на вопрос «какие данные покупать/генерировать/упорядочивать»[edit | edit source]
Команды, которые обучают большие модели (языковые, мультимодальные, рекомендательные), регулярно принимают решения уровня «портфель данных»:
- какие источники включить в смесь (веб‑текст, код, диалоги, доменные документы, логи, изображения),
- какие преобразования применить (дедупликация, фильтры, синтетические добавки, симуляции),
- в каком порядке предъявлять примеры (куррикулум, перестановки полей, последовательность задач),
- и всё это под ограничением по FLOPs/времени/деньгам.
Типичная практика — опираться на среднюю потерю на отложенной выборке (для LM — кросс‑энтропия/перплексия) и считать, что «если потеря ниже, то данные лучше». Статья Finzi et al. (2026) показывает, что такая опора неполна: одна и та же величина потерь может скрывать радикально разное количество «переносимых в параметры» зависимостей, и именно эта «переносимая часть» часто важнее для переносимости на задачи вне распределения обучения. arXiv[2]
В этой же работе демонстрируется, что:
- детерминированная генерация (симуляции/само‑игра/процедурные миры) может давать данные, которые требуют более сложной модели, чем «правила генератора», если обратная реконструкция скрытых причин вычислительно трудна; arXiv[3]
- порядок и факторизация наблюдений (что показывать «сначала») могут менять то, какие вычислимые модели выгодно выучиваются при заданных FLOPs, и это коррелирует с переносимостью; arXiv[4]
ML.4:2 - Problem — Отсутствует инженерная метрика, которая разделяет «остаточную непредсказуемость» и «регулярности, записанные в параметры»[edit | edit source]
Нужно уметь отвечать на управленческий вопрос:
- «При фиксированном бюджете вычислений, какие данные заставляют модель выучить больше переносимых механизмов предсказания, а какие в основном добавляют непредсказуемые детали?»
Одна скалярная «потеря на тесте» даёт только часть картины: она измеряет, сколько бит в среднем остаётся для кодирования примеров после обучения (то есть «остаточную непредсказуемость» для выбранного семейства моделей в выбранном режиме обучения). Статья вводит разложение двухчастного кода на:
- длину описания вычислимо‑достижимой вероятностной модели,
- и ожидаемую длину кодирования данных при наличии этой модели. arXiv[5]
Без такого разложения команда неизбежно скатывается к неоперациональным словам («качество», «информативность», «сложность», «разнообразие») и к решениям, которые трудно защищать, воспроизводить и проверять на переносимость.
ML.4:3 - Forces — Требования, которые тянут решение в разные стороны[edit | edit source]
- Ограничение по бюджету вычислений. Метрика должна быть определима для конкретного потолка FLOPs/времени (и не смешивать результаты, полученные при разных потолках).
- Сопоставимость вариантов данных. Нужно сравнивать источники и преобразования данных без обязательного прогона большого набора downstream‑бенчмарков на каждом шаге (дорого и медленно).
- Управляемость в продакшене. Метрика должна превращаться в «карточку решения» для менеджеров: что изменили, зачем, чем подтверждено, какой риск.
- Устойчивость к «накрутке». Любая оптимизируемая метрика становится целью. Нужны ограничения, чтобы «улучшение» метрики не превращалось в искусственное усложнение предсказания без полезной переносимости.
- Вариативность семейств моделей. То, что «выучивается», зависит от архитектуры/оптимизатора/токенизации; нужно явно фиксировать эти параметры, иначе сравнение превращается в смешение причин.
ML.4:4 - Solution — Введите «битовый объём модели» и отделите его от «остаточных бит на данные» при заданном бюджете[edit | edit source]
4.1. Три объекта, которые MUST быть названы в любом сравнении[edit | edit source]
- Бюджет вычислений B Единица — FLOPs (или другая измеримая единица, но фиксированная в рамках сравнения). В расчёт включайте то, что реально платите: обучение + вычисление предсказаний на отложенной выборке. arXiv[6]
- Семейство вероятностных предсказателей F Это не «модель вообще», а конкретный класс реализуемых предсказателей (архитектура, токенизация/представление, формат входа‑выхода, допустимые процедуры обучения). В статье формализуется идея «модели, которая умеет сэмплировать и вычислять вероятность за заданное время», а в практических оценках — «семейство нейросетей с фиксированной процедурой обучения». arXiv[7]
- Вариант данных D_var Это конкретно: источник + очистка + дедуп + формат примера + порядок/факторизация полей + (если есть) генератор синтетики + параметры генерации.
4.2. Две величины вместо одной: «битовый объём модели» и «остаточные биты на данные»[edit | edit source]
Для заданных B, F, D_var рассмотрите наилучший (в смысле минимальной суммарной длины двухчастного кода) предсказатель, который вы можете получить в этом бюджете.
Определите:
L_model(B; F, D_var)— битовый объём модели Число бит, необходимое, чтобы описать выбранную вероятностную модель так, чтобы её можно было воспроизвести в рамках заданной вычислимости (в статье это длина описания «программы модели» в оптимальном двухчастном коде). arXiv[8] Практическая интерпретация для инженера: сколько информации «перешло» из данных в параметры/структуру предсказателя при обучении в этом бюджете.L_resid(B; F, D_var)— остаточные биты на данные Ожидаемая длина кодирования отложенных примеров при наличии этой модели. В ML‑терминах это пропорционально средней отрицательной лог‑вероятности (кросс‑энтропии) на тесте. arXiv[9] Практическая интерпретация: то, что даже лучшая вычислимо‑достижимая модель из вашего семейства всё ещё не умеет предсказывать (детали, шум, непредсказуемость).
Сумма L_total = L_model + L_resid — «сколько бит нужно, чтобы описать данные при ваших вычислениях», где часть бит платится «за модель», а часть — «за оставшуюся непредсказуемость». arXiv[10]
4.3. Как оценивать L_model на практике (два режима)[edit | edit source]
Режим A — быстрая инженерная оценка по кривой потерь (prequential‑оценка). Используйте сохранённые точки кривой потерь (валидационная потеря vs объём обучения/compute). В статье описан способ оценивать модельную часть как площадь между кривой и финальным уровнем потерь (в битах), что даёт приближение к «сколько нужно передать, чтобы декодер восстановил параметры, повторив обучение». arXiv[11]
Режим B — более строгая оценка через кодирование «учитель→ученик» (requential‑оценка). Если нужно более надёжное сравнение вариантов данных, используйте процедуру, где модель‑«учитель» задаёт последовательность распределений, а «ученик» обучается на сгенерированных токенах, а длина кода выражается через накопленную дивергенцию между распределениями учителя и ученика по шагам. В статье это предложено как способ получить более точную оценку модельной части при заданной вычислимости. arXiv[12]
Практическое правило:
- для ранжирования 10–30 кандидатов и быстрой итерации чаще достаточно режима A;
- для решения “влить миллионы $ в новый источник данных” включайте режим B хотя бы на финальном шорт‑листе.
4.4. Как использовать разложение для решений о данных[edit | edit source]
(i) Выбор источников (портфель данных).
Оптимизируйте не «потерю вообще», а профиль ⟨L_model, L_resid⟩ при вашем бюджете.
- Если цель — переносимость на новые задачи/распределения, отдавайте приоритет вариантам данных, у которых при вашем B заметно больше L_model (модель вынуждена хранить больше переносимых механизмов), а L_resid не доминирует. В статье мотивируется связь этой «модельной части» с переносимостью и приводятся сравнения между доменами данных. arXiv[13]
- Если L_resid огромен при низком L_model, это сигнал: данные содержат много деталей, которые при данном B остаются непредсказуемыми и плохо конвертируются в переносимые параметры (в статье так интерпретируется пример с изображениями относительно текста). arXiv[14]
(ii) Преобразования данных (очистка, генерация, симуляции). Сравнивайте D_var до/после преобразования по профилю ⟨L_model, L_resid⟩ при фиксированном B.
- Полезное преобразование для переноса часто проявляется как рост
L_modelбез взрыва L_resid. - Преобразование, которое «делает задачу предсказания тяжелее» только за счёт шума, обычно увеличит L_resid и почти не увеличит L_model.
В статье подчёркивается, что вычислительная ограниченность делает возможным сценарий, когда детерминированная генерация (включая симуляции) повышает «информационное содержимое для вычислимого ученика», потому что обратное восстановление причин может быть вычислительно трудным. arXiv[15]
(iii) Порядок/факторизация обучающих примеров (куррикулум). Отдельно рассматривайте «что именно предсказывает модель на каждом шаге». Перестановка факторов может менять, какие вычислимые стратегии становятся выгодны.
В статье показан пример с шахматами: вариант, где сначала предъявляется доска, а затем ходы, даёт более высокий «модельный битовый объём» и лучшую переносимость на задачу оценки позиции при близкой точности на задаче из распределения обучения. arXiv[16]
(iv) Онлайн‑подбор смеси данных во время предобучения. Если вы используете алгоритмы, которые перераспределяют доли подмножеств по сигналам обучения (например, по скорости убывания потерь), интерпретируйте это как попытку увеличивать L_model в рамках бюджета. В статье обсуждается подход ADO для языковых моделей и его связь с ростом модельной части и с downstream‑качеством. arXiv[17]
4.5. Мини‑лексикон точных формулировок (чтобы не прятать смысл за общими словами)[edit | edit source]
В документах о данных используйте конструкции вида:
- «Профиль данных при бюджете»: Profile(D_var | B, F) = ⟨L_model, L_resid, L_total⟩.
- «Действие над портфелем данных» (вместо неопределённых «обновили/подкрутили»): - включить источник S в смесь с долей w; - исключить источник S; - переназначить долю источника S с w_old на w_new; - заменить преобразование T_old на T_new в пайплайне подготовки; - изменить порядок факторизации примера (например, «часть A предсказывается по части B» вместо обратного); - пересчитать профиль при новом бюджете B' или новом семействе F'.
Каждая запись о действии MUST указывать: {что изменили → в каком варианте данных → при каком бюджете → для какого семейства → какой профиль получился}.
4.6. Лексический «предохранитель» для инженерных обсуждений данных (встроенная проверка на неоперациональные слова)[edit | edit source]
Слова‑триггеры, которые нельзя использовать как замену смысла в техническом решении (разрешены только в черновике, после чего MUST быть переписаны):
- «качество данных» → замените на набор метрик/профиль ⟨L_model, L_resid⟩ + конкретные показатели (дедуп‑доля, доля токсичности, доля PII и т.п.)
- «сложность данных» → замените на «битовый объём модели L_model при бюджете B и семействе F»
- «информативность» → замените на «прирост L_model при добавлении источника в смесь при фиксированном B»
- «лучше/хуже» → замените на «по какой целевой функции и при каких ограничениях» (например: «максимизируем L_model при ограничении L_resid ≤ τ и соблюдении политики безопасности»)
- «переносимость» → замените на «качество на заранее указанном наборе OOD‑проверок» (назвать бенчмарки/срезы)
ML.4:5 - Archetypal Grounding — Tell–Show–Show[edit | edit source]
Tell: ситуация, где метрика экономит месяцы[edit | edit source]
Команда планирует новый прогон предобучения. Есть два кандидата на “улучшение данных”:
- добавить большой объём изображений из открытого датасета,
- или купить лицензированный корпус доменных текстов.
На встрече звучит: «у изображений же больше информации», «тексты более качественные», «давайте проверим по перплексии». Решение подвисает: ни один аргумент не переводится в проверяемые измерения при реальном бюджете.
После внедрения ML.4 обсуждение меняется: команда строит для обоих вариантов профили ⟨L_model, L_resid⟩ при конкретном B (под бюджет кластера) и фиксированном F (архитектура + оптимизатор). В споре появляется предмет: что именно “покупается” за FLOPs — переносимые механизмы или остаточные детали.
Show 1 (System): выбор смеси данных для предобучения LLM под бюджет[edit | edit source]
Контекст: планируется обучение трансформера; бюджет и стратегия подбираются с оглядкой на compute‑оптимальность (см. scaling‑законы Kaplan 2020 и Hoffmann 2022). arXiv[18]
Кандидаты данных:
- веб‑корпус (например, FineWeb‑подобная очистка веба), arXiv[19]
- код,
- доменные PDF/тикеты,
- синтетические диалоги (генерация моделью‑предшественником).
Шаги:
- Фиксируем B (FLOPs) и семейство F (архитектура, токенизация, оптимизатор).
- Для каждого D_var строим профиль ⟨L_model, L_resid⟩ в режиме A (по кривой потерь). arXiv[20]
- Для 2–3 финалистов подтверждаем ранжирование режимом B (учитель→ученик). arXiv[21]
- Формируем смесь: - увеличиваем долю источников, которые дают высокий L_model при допустимом L_resid, - уменьшаем долю источников, где L_resid доминирует (много непредсказуемых деталей при текущем бюджете).
Результат для менеджера: решение оформляется как «портфельная карточка» с явным B, явным F, и таблицей Profile(D_var | B, F).
Show 2 (Episteme): записка‑обоснование по перестановке факторизации примеров[edit | edit source]
Вопрос: менять ли представление обучающего примера в шахматном корпусе: «доска→ходы» или «ходы→доска».
Действия:
- вычисляем профиль ⟨L_model, L_resid⟩ для двух вариантов при одинаковом B и одном семействе F;
- дополнительно фиксируем одну OOD‑проверку (оценка позиции).
Наблюдение из статьи: вариант «доска→ходы» даёт больше модельной части и лучше переносится на оценку позиции, при близком качестве на задаче из распределения обучения. arXiv[22]
Вывод в записке: «Перестановка факторизации увеличивает количество бит, записываемых в параметры при заданном бюджете; эта прибавка коррелирует с переносимостью на OOD‑оценку. Риск: возможная специализация под шахматы; контроль: повторить тест на ещё одном домене последовательных данных.»
ML.4:6 - Bias-Annotation — Какие “очки” надеты в этом паттерне[edit | edit source]
- Управленческая перспектива: паттерн принуждает фиксировать бюджет и критерии, повышая воспроизводимость решений, но добавляет шаг измерений.
- Архитектурная перспектива: акцент на измеримом профиле данных; возможно недоучёт “мелких” требований (юридические ограничения, политика безопасности).
- Онтология/эпистемология: требование точных объектов (B, F, D_var, ⟨L_model, L_resid⟩) снижает риск спорить о словах, но может казаться «слишком формальным».
- Прагматика: ориентир на быстрое ранжирование по кривым потерь; риск — принять приближение за истину.
- Дидактика: вводятся короткие определения и «предохранитель» лексики; это помогает инженерам‑менеджерам, но требует дисциплины письма.
ML.4:7 - Conformance Checklist — Что проверить перед тем как ссылаться на ML.4 в решении[edit | edit source]
| ID | Requirement | Purpose | | -------- | ------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------- | | CC‑ML4‑1 | Решение MUST явно назвать B (единицы вычислений) и что именно входит в бюджет (обучение, инференс на тесте). | Убирает скрытое смешение режимов. | | CC‑ML4‑2 | Решение MUST зафиксировать семейство F (архитектура + представление данных + оптимизаторный режим). | Не даёт перепутать эффект данных и эффект модели. | | CC‑ML4‑3 | Для каждого сравниваемого D_var MUST быть описано, что входит в вариант данных (источник, очистка, формат примера, порядок/факторизация). | Делает сравнение проверяемым. | | CC‑ML4‑4 | MUST публиковать профиль ⟨L_model, L_resid⟩ (и при необходимости L_total) для каждого D_var. | Разделяет переносимые механизмы и остаточную непредсказуемость. | | CC‑ML4‑5 | Если используется оценка по кривой потерь, MUST указать метод построения кривой и её дискретизацию; SHOULD приложить артефакты (логи/графики). | Контроль качества приближения. | | CC‑ML4‑6 | Любая фраза вида «данные лучше/хуже/качественнее/сложнее» MUST быть переписана в терминах профиля и ограничений. | Убирает неоперациональные слова из решения. | | CC‑ML4‑7 | Для изменения портфеля данных MUST быть записано действие из явного списка (включить/исключить/переназначить долю/заменить преобразование/сменить факторизацию) + до/после профили. | Делает историю решений аудируемой. | | CC‑ML4‑8 | SHOULD иметь хотя бы одну внешнюю проверку переносимости (OOD‑срез/другой домен) для крупных изменений. | Снижает риск оптимизации “в пустоту”. |
ML.4:8 - Common Anti-Patterns — Типовые ошибки и как их чинить[edit | edit source]
- «Оптимизируем только тестовую потерю» Симптом: выбирают данные с минимальным L_resid, игнорируя L_model. Ремонт: публиковать профиль ⟨L_model, L_resid⟩ и вводить ограничения/цели (например: максимум L_model при пороге L_resid). arXiv[23]
- «Сравниваем результаты при разных бюджетах» Симптом: один вариант данных оценили на маленьком прогоне, другой — на большом, затем сравнили. Ремонт: фиксировать B или строить кривую профиля по нескольким B и сравнивать на согласованном наборе бюджетов.
- «Смешали изменение данных и изменение семейства модели» Симптом: поменяли токенизацию или оптимизатор и объявили, что “данные стали лучше”. Ремонт: в карточке решения разделять: изменение F и изменение D_var.
- «Усложнили предсказание ради роста модельной части» Симптом: преобразование делает задачу предсказания тяжелее (рост L_model), но OOD‑проверки не улучшаются. Ремонт: добавлять внешние проверки переносимости и ограничивать рост L_resid.
- «Слова‑заменители вместо метрик» Симптом: в тексте решения появляются “качество/сложность/информативность/разнообразие” без явных определений. Ремонт: включить лексический предохранитель (см. 4.6) и требовать переписывания таких фраз.
ML.4:9 - Consequences — Что вы получите и что заплатите[edit | edit source]
Положительные эффекты
- Появляется управляемая «финансовая модель» данных: что покупаем за FLOPs — переносимые механизмы или остаточные детали.
- Можно сравнивать источники и преобразования данных без полного downstream‑цикла на каждой итерации.
- Решения о синтетике и куррикулуме получают количественную опору, а не спор о вкусах. arXiv[24]
Издержки и риски
- L_model — оценка относительно F и режима обучения; переносимость между семействами моделей ограничена.
- Приближения по кривым потерь чувствительны к качеству логов, стабильности оптимизации и гиперпараметров.
- Есть риск «натренировать» организацию оптимизировать профиль и забыть про продуктовые требования (безопасность, юрисдикции, приватность).
ML.4:10 - Rationale — Почему разложение работает как инженерный инструмент[edit | edit source]
Ключевой ход статьи: рассматривать обучение как построение вероятностного предсказателя при ограничении вычислимости и описывать данные двухчастным кодом:
- первая часть — описание модели, которую реально можно получить/использовать в рамках бюджета;
- вторая часть — то, что модель всё ещё не предсказывает на отложенных данных.
В таком взгляде “случайность” не является абсолютным свойством данных; это свойство пары (данные, вычислимо‑достижимый класс предсказателей). Поэтому детерминированные вычисления (симуляции, само‑игра) могут создавать данные, которые для данного бюджета требуют более «богатой» модели (в смысле длины её описания), даже если для неограниченного наблюдателя правила генератора «короткие». arXiv[25]
Аналогично, перестановка факторизации/порядка наблюдений меняет то, какие предсказательные стратегии становятся вычислительно выгодны в обучении, и это может отражаться на переносимости. arXiv[26]
ML.4:11 - SoTA-Echoing — Как паттерн встраивается в современную практику (после 2015)[edit | edit source]
- Compute‑оптимальное масштабирование (Kaplan et al., 2020; Hoffmann et al., 2022): эти работы дают практический язык «бюджет → оптимальный размер модели и объём токенов». ML.4 добавляет к этому язык «бюджет → профиль данных ⟨L_model, L_resid⟩», то есть делает данные первоклассным объектом оптимизации рядом с размером модели. arXiv[27]
- Оценка ценности данных для обучения (Ghorbani & Zou, 2019): Data Shapley измеряет вклад отдельных примеров относительно конкретной целевой метрики. ML.4 дополняет это «задачно‑независимым» (в смысле отсутствия выбора downstream‑задачи) профилем данных относительно бюджета вычислений и семейства предсказателей. arXiv[28]
- Датасеты и курация веб‑текста на масштабе (FineWeb, 2024): современные пайплайны очистки/дедупа можно сравнивать не только по итоговой потере, но и по тому, как они меняют L_model при реальном бюджете (то есть насколько они заставляют модель хранить переносимые зависимости). arXiv[29]
- Онлайн‑подбор смеси данных при предобучении (обсуждение ADO в Finzi et al., 2026): практики, которые изменяют веса подмножеств по сигналам кривых потерь, можно интерпретировать как эвристику, нацеленную на рост модельной части при фиксированном бюджете. arXiv[30]
ML.4:12 - Relations — С чем этот паттерн стыкуется в инженерном контуре[edit | edit source]
- Телеметрия обучения: логи потерь/compute‑счётчики → вход для режима A оценки L_model. arXiv[31]
- Планирование ресурсов: выбор B и распределение FLOPs между размером модели и количеством токенов (scaling laws). arXiv[32]
- Данные как портфель: процедуры включения/исключения источников и замены преобразований должны ссылаться на профили ⟨L_model, L_resid⟩ до/после.
- Контроль переносимости: внешние OOD‑проверки как предохранитель от оптимизации «в пустоту». arXiv[33]
ML.4:End[edit | edit source]
References[edit | edit source]
- ↑ "Паттерн ML.4 с A.6". ChatGPT. Retrieved 2026-01-15.
- ↑ "arXiv". arxiv.org. Retrieved 2026-01-15.
- ↑ "arXiv". arxiv.org. Retrieved 2026-01-15.
- ↑ "arXiv". arxiv.org. Retrieved 2026-01-15.
- ↑ "arXiv". arxiv.org. Retrieved 2026-01-15.
- ↑ "arXiv". arxiv.org. Retrieved 2026-01-15.
- ↑ "arXiv". arxiv.org. Retrieved 2026-01-15.
- ↑ "arXiv". arxiv.org. Retrieved 2026-01-15.
- ↑ "arXiv". arxiv.org. Retrieved 2026-01-15.
- ↑ "arXiv". arxiv.org. Retrieved 2026-01-15.
- ↑ "arXiv". arxiv.org. Retrieved 2026-01-15.
- ↑ "arXiv". arxiv.org. Retrieved 2026-01-15.
- ↑ "arXiv". arxiv.org. Retrieved 2026-01-15.
- ↑ "arXiv". arxiv.org. Retrieved 2026-01-15.
- ↑ "arXiv". arxiv.org. Retrieved 2026-01-15.
- ↑ "arXiv". arxiv.org. Retrieved 2026-01-15.
- ↑ "arXiv". arxiv.org. Retrieved 2026-01-15.
- ↑ "arXiv". arxiv.org. Retrieved 2026-01-15.
- ↑ "arXiv". arxiv.org. Retrieved 2026-01-15.
- ↑ "arXiv". arxiv.org. Retrieved 2026-01-15.
- ↑ "arXiv". arxiv.org. Retrieved 2026-01-15.
- ↑ "arXiv". arxiv.org. Retrieved 2026-01-15.
- ↑ "arXiv". arxiv.org. Retrieved 2026-01-15.
- ↑ "arXiv". arxiv.org. Retrieved 2026-01-15.
- ↑ "arXiv". arxiv.org. Retrieved 2026-01-15.
- ↑ "arXiv". arxiv.org. Retrieved 2026-01-15.
- ↑ "arXiv". arxiv.org. Retrieved 2026-01-15.
- ↑ "arXiv". arxiv.org. Retrieved 2026-01-15.
- ↑ "arXiv". arxiv.org. Retrieved 2026-01-15.
- ↑ "arXiv". arxiv.org. Retrieved 2026-01-15.
- ↑ "arXiv". arxiv.org. Retrieved 2026-01-15.
- ↑ "arXiv". arxiv.org. Retrieved 2026-01-15.
- ↑ "arXiv". arxiv.org. Retrieved 2026-01-15.