AuditCopilot: LLM для обнаружения мошенничества в бухгалтерском учете с двойной записью
Статья, которую я читаю на этой неделе, — AuditCopilot: Leveraging LLMs for Fraud Detection in Double-Entry Bookkeeping (arXiv:2512.02726), представленная в декабре 2025 года авторами Kadir, Macharla Vasu, Nair и Sonntag. Она находится на стыке исследований LLM-агентов и финансового комплаенса: использование базовых моделей для обнаружения мошеннических журнальных проводок в реальных корпоративных регистрах. Из всех статей в списке чтения Bean Labs на данный момент, эта наиболее непосредственно касается того самого формата необработанных данных, который нас интересует.
О статье
Аудит любой публичной компании — в соответствии со стандартом аудита PCAOB AS 2401 — должен включать тестирование журнальных проводок (Journal Entry Testing, JET): систематические проверки регистра на предмет записей, подпадающих под правила эвристики. Эти правила включают такие параметры, как «проводка создана после полуночи», «круглая сумма», «необычная пара счетов» или «проводка создана редко активным пользователем». Эти правила работают, но они порождают огромное количество ложноположительных результатов: аудиторы тратят большую часть времени на отсеивание очевидного шума.
AuditCopilot исследует, могут ли LLM заменить или дополнить эти правила. Система передает каждую журнальную проводку — структурированную в виде текстового фрагмента в формате JSON с полями даты проводки, сумм дебета/кредита, ID счетов, налоговых ставок и набора предварительно вычисленных бинарных флагов аномалий — в промпт LLM, который возвращает бинарную метку аномалии и объяснение на естественном языке. Авторы протестировали Mistral-8B, Gemma-2B, Gemma-7B и Llama-3.1-8B как на синтетическом корпоративном регистре, так и на одном реальном анонимизированном налоговом регистре, сравнивая результаты с традиционными JET и базовым алгоритмом Isolation Forest.
Ключевые идеи
- На синтетическом наборе данных (5 000 ID проводок, ~1% истинных аномалий) Mistral-8B с полным промптом достигает точности (Precision) 0,90, полноты (Recall) 0,98 и F1-меры 0,94 — по сравнению с базовым JET (Precision 0,53, Recall 0,90, F1 0,50). Что критически важно, зафиксировано всего 12 ложноположительных результатов против 942 у JET.
- «Полный» промпт AuditCopilot включает в себя не только характеристики самой проводки, но и глобальную статистику набора данных (среднее, медиана, суммы 95-го и 99-го процентилей), а также предварительно вычисленную оценку Isolation Forest для каждой строки. Этот контекстный инжиниринг является ключевой «несущей конструкцией» системы.
- На реальном наборе данных Gemma-7B с полным промптом достигает Precision 0,89, Recall 0,78, F1 0,83. При удалении подсказки от Isolation Forest точность падает до 0,14 — одна только LLM не справляется с задачей.
- Объяснения — самый ценный вклад системы: в отличие от числовой оценки аномалии, каждая помеченная запись сопровождается текстовым обоснованием («эта сумма превышает 99-й процентиль для данного кластера счетов и опубликована в нерабочее время»), которое аудитор может быстро принять или отклонить.
- Никакого дообучения (fine-tuning). Все работает в режиме zero-shot или с кратким промптом системной роли, что хорошо с точки зрения стоимости развертывания, но также означает сильную зависимость результатов от шаблона промпта.
Что выдерживает критику, а что нет
Результат по снижению количества ложноположительных срабатываний впечатляет. Переход от 942 к 12 на тех же данных — это тот тип операционной выгоды, который на самом деле определяет, будет ли инструмент использоваться на практике. Я верю в перспективность этого направления.
Однако у меня есть серьезные замечания к дизайну оценки.
Во-первых, «истинные» метки (ground-truth) в синтетическом наборе данных сами сконструированы на основе правил JET. Внедренные аномалии — это именно те паттерны, для обнаружения которых и создавались JET. Таким образом, утверждение «LLM превосходит JET» на тестовом наборе, размеченном по JET, может частично отражать то, что LLM научилась имитировать те же правила на основе контекстной статистики в промпте, а не обобщать знания за их пределами.
Во-вторых, абляция Isolation Forest на реальных данных выглядит удручающе, и в статье это обсуждается недостаточно. Без оценок IF показатель F1 падает с 0,83 до 0,24. Это говорит о том, что LLM функционирует в основном как гибкий порог поверх сигнала IF, а не как независимый детектор аномалий. Система ближе к ансамблю машинного обучения с оболочкой на естественном языке, чем к «фундаментальной модели, выполняющей аудиторские рассуждения».
В-третьих, использован только один реальный набор данных от единственного отраслевого партнера. Авторы признают это, но это означает, что мы не можем оценить обобщающую способность для компаний разного размера, различных систем учета или отраслей.
В-четвертых, статья сравнивает результаты только с JET и одним базовым алгоритмом ML (Isolation Forest). Обнаружение аномалий на базе автоэнкодеров, XGBoost с отобранными признаками и простая логистическая регрессия по оценкам IF отсутствуют. Пространство того, что здесь считается «классическим ML», слишком узко.
Вопрос галлюцинаций не затронут. Авторы называют объяснения ключевым вкладом, но нет оценки того, являются ли текстовые обоснования фактически верными или согласованными с бинарным предсказанием.
Почему это важно для ИИ в финансах
Эта статья наиболее близка к тому, что мы создаем в Bean Labs. Регистры Beancount — это системы бухг алтерского учета с двойной записью. Каждая транзакция представляет собой набор строк проводок. Обнаружение аномалий в этих строках — необычные счета, выходящие за пределы диапазона суммы, неправдоподобные временные паттерны — очевидная первая функция для автономного финансового ассистента.
Результат AuditCopilot предполагает, что правильным подходом для аудита в Beancount, вероятно, является не «передача необработанной транзакции в LLM с вопросом о её подозрительности», а скорее «вычисление облегченного статистического контекста (базовые показатели на уровне счетов, временное распределение, оценки Isolation Forest) и передача этого обогащенного контекста в LLM». Ценность LLM заключается в синтезе и объяснении, а не в первичном расчете аномалий.
Снижение ложноположительных результатов также имеет прямое значение. Инструмент аудита Beancount, который выдает 942 потенциальные аномалии за один прогон, будет проигнорирован. Тот, который выдает 12 высокодостоверных кандидатов с объяснениями, будет использоваться. Это не метрика производительности — это метрика продукта.
Вопрос безопасности обратной записи (write-back safety), который меня волнует больше всего, в этой статье не рассматривается. AuditCopilot только читает и помечает; он не предлагает корректировок и не изменяет регистр. Это правильный масштаб для первой статьи, но сложная проблема для Bean Labs остается: как только аномалия обнаружена, как безопасно решить, что с ней делать?
Что почитать дальше
- Understanding Structured Financial Data with LLMs: A Case Study on Fraud Detection (arXiv:2512.13040, ACL 2026) — представляет FinFRE-RAG, которая добавляет примеры из контекста с поисковым дополнением (RAG) к той же проблеме обнаружения мошенничества и проводит тестирование на четырех открытых наборах данных; напрямую устраняет ограничение AuditCopilot, связанное с использованием одного датасета.
- Anomaly Detection in Double-entry Bookkeeping Data by Federated Learning System with Non-model Sharing Approach (arXiv:2501.12723) — рассматривает ограничения конфиденциальности, препятствующие объединению данных регистров разных фирм; федеративный подход, ве роятно, необходим для любого серийного сервиса аудита Beancount, который хочет обучаться на данных клиентов без их централизации.
- GuardAgent: Safeguard LLM Agents by a Guard Agent via Knowledge-Enabled Reasoning (arXiv:2406.09187) — проблема обеспечения безопасности, которую AuditCopilot намеренно обходит: как только аномалии помечены, как гарантировать, что агент обратной записи не внесет изменения, нарушающие бухгалтерские инварианты?
