文章

监管大模型为什么必须判得出依据

面向证券监管的非法证券活动识别课题里,为什么大模型只判得准不够,必须把可解释性做成训练目标。聂二(AILDNC)拆解 think 推理依据、三层弱标注与全链路溯源。

  • LLM
  • Qwen3
  • LlamaFactory
  • RegTech
  • 可解释性
  • CoT

在面向证券监管的内容风控里,一个判得准但说不清依据的模型,约等于没用。监管要的不是「这条大概率违法」,而是「这条违法,因为它命中了荐股黑话、含联系方式诱导、又承诺保本保收益」——结论后面必须挂着能过审计的理由。这一条,决定了我在一个证券监管科技(RegTech)课题里把可解释性当成训练目标本身,而不是训练完再贴上去的功能。

下面这篇,是聂二(AILDNC)从这个课题里单独拆出来的一个切口。不复盘整条工具链,只讲一件事:监管模型的「依据」为什么不能事后补,以及我具体怎么把它焊进训练目标。

「判得准」在监管场景里只是及格线

先说清楚这个场景有多挑剔。非法证券活动——荐股黑话、保本保收益话术、场外配资引流、虚假持牌机构、原始股诈骗——分散在 9 个主流社交平台,横跨文本、图片、短视频、音频四种模态。人工巡检看不过来,于是想到大模型。但通用大模型直接拿来判有两个硬伤:一是不懂「老师带单 / 加 V 进群 / 原始股稳赚」这类领域黑话,二是误报率偏高。

更要命的是第三点,它常被忽略:就算模型碰巧判对了,它说不清为什么判对

在很多场景里,这第三点无所谓。推荐系统点错一个商品没人追问理由。但在监管业务里,一条判定要被采信、要进入处置流程、要扛得住事后复核,它就必须能回答「凭什么」。一个 0.97 置信度、却给不出任何文字理由的输出,业务方没法用——他们没法把「模型说的」写进处置依据。

所以这个课题的目标从一开始就是两条腿:判得准,并且判得出依据、可被审计。第二条不是锦上添花,是硬指标。

把依据当成事后功能,是个常见但危险的设计

最省事的做法,是先训一个只输出「违法 / 合规 / 存疑」三分类的模型,等它准了,再外挂一个「解释模块」让它补一段理由。听起来合理,工程上也好排期。但我没这么做,原因是这种解释天然不可信。

事后让模型补理由,本质是让它对一个已经下好的结论编一段听起来合理的话。它有动力把理由编得通顺,而不是编得真实——因为理由和结论之间没有训练时建立的因果约束。你最后拿到的,是一个判定 + 一段看起来像依据、但未必真支撑这个判定的文本。在监管场景里,这种「看起来可解释」比「不解释」更危险,因为它会骗过复核的人。

真正要的不是「模型能补一段话」,而是「模型的判定本来就是顺着这段依据推出来的」。这两者在输出上可能长得一样,但可信度天差地别。要做到后者,依据就不能是事后的,它得是模型推理过程的一部分,在训练时就和结论绑在一起。

我的处理:把 <think>推理依据</think>判定 焊进训练样本

具体做法很直接。每条训练样本的目标输出不是一个干巴巴的标签,而是 <think>{中文推理依据}</think>{最终判定} 这样的两段式:模型先用中文写清楚它看到了哪些信号、这些信号为什么指向违法,然后才给出「违法 / 合规 / 存疑」。

这里复用了 Qwen3 原生的 <think> 思维链标记,而不是自己另造一套格式。选 Qwen3-14B/32B 当底座,一部分原因就是它原生支持「思考 / 不思考」双模,think 段落对它不是外来结构。弱标注产出的样本转成 LlamaFactory 的 alpaca 格式时,依据段和判定段一起作为目标序列,模型在训练时学到的就是「先讲依据,再下判定」这条完整链路,而不是只学结论。

差别在哪?当依据是训练目标的一部分,模型为了把判定学对,就得把指向判定的依据也学对——两者在 loss 里耦合。它没法只学会贴标签而把理由放飞。这样训出来的模型,给出的 think 段落不是为结论圆场的话术,而是它实际依赖的信号。这正好接上在线侧最看重的东西:每条判定都能回溯到「命中了什么」。

依据从哪来:三层弱标注先把「为什么」标进金标集

可解释性做成训练目标,还有个前提常被忽略:训练样本里的依据得先是对的。数据没有标签是这个课题的第一座山——帖子没人事先告诉你哪条违法、哪条合规,监督训练无从起步。我用三层联合判断冷启动产出第一批金标集:规则打分、LLM 投票、专家复核。

规则这层不只给标签,还给文字依据。它按加权信号判「违法 / 合规 / 存疑」,权重直接体现监管经验——含联系方式诱导权重最强,黑话密度、承诺话术次之——并把命中的信号写成人能读的理由。这一步很关键:它意味着金标集里的依据不是后补的,从冷启动第一刻起,每条标签就带着「为什么」。模型后来学的,是这批被规则和专家共同认可过的依据。

这里有一条刻意的安全护栏,方向偏保守:当规则给出高置信「违法」、而 LLM 多数票相左时,系统强制判「存疑」并送人工,绝不让 LLM 默默盖过强规则信号。监管场景宁可多送人工、不可漏判。存疑样本的置信度被刻意压低封顶,确保它一定被路由到人工,不会被自动放行。这牺牲了一点自动化率,换来召回不被悄悄牺牲——而且送进金标集的依据,是规则信号和专家判断都过了一遍的,不是 LLM 自说自话的。

训练时还要守住另一条线:别把通用能力练废

把领域判定和依据焊进模型的同时,有个隐患必须一起处理:灾难性遗忘。教模型学会证券判定,它很可能把原本的通用中文能力退化掉——而「不发生灾难性遗忘」在这个课题里也是硬指标。这也是我没拿现成金融垂类模型(DianJin-R1、Fin-R1)当底座的原因:那类窄域强化训练的模型有未公开的通用能力回退风险,跟这条硬指标冲突,我只把它们留作对照基准。

防遗忘是三层叠加,全用 LlamaFactory 原生配置实现,不改上游源码:LoRA 增量微调(lora_rank: 32lora_target: all)冻结底座、只训旁挂低秩补丁;通用语料回放(interleave_probs: 0.85,0.15)按 85%/15% 交错复习通用语料;知识蒸馏(ASFT≈LwF,asft_alpha: 0.2)用 KL 正则把偏离冻结底座太远的更新拽回来。设计哲学是先用框架原生能力解决到位,不够再加,把可量化验证放在堆复杂正则之前。

光配防遗忘还不够,得能测出来有没有遗忘。所以评测是双轨的:一轨测领域准确度(在金标集上算三分类的准确率、召回、F1,还单独算「判定依据正确率」——用字符级 Jaccard 比对模型依据和专家依据),另一轨测通用能力保持度(用一组与证券无关的通用题,让 base 和 tuned 分别作答,核心看 regressions:原本会、训完不会)。两轨都用 Python 标准库手写、公式可手算复核,不引 sklearn/numpy——监管场景要的是每个数字都能被业务方自己验证。需要说明的是:真实模型还没训练(在等 GPU 算力和专家复核出的金标集),现在 demo 里的判定来自规则引擎,代表识别能力,不是模型性能,所以这篇不会出现任何效果百分比。

这套思路能迁移到哪:不只是证券监管

把可解释性做成训练目标,这件事的适用面比证券监管宽。任何「结论必须被人采信、且要扛事后复核」的场景——合规审查、风控判定、医疗辅助分诊、内容安全——都吃这一套。判断标准很简单:如果你的模型输出最终要被一个人拿去做决定、并且这个人要为决定负责,那他需要的就不是一个置信度,而是一段他能复核、能反驳、能签字的理由。

如果你正打算在这类场景里做模型,下面几条是我会先想清楚的:

  • 先问依据是不是硬指标。 如果是,从数据标注那一刻起就要带上依据,别等模型训完再补。事后补的依据是话术,不是推理。
  • 让依据进训练目标,和结论一起进 loss。 用底座原生支持的思维链格式(比如 Qwen3 的 <think>),别自造一套模型没学过的结构。
  • 金标集的依据得先经得起复核。 用规则 + LLM + 专家三层产出,强规则别被 LLM 默默盖过,低置信样本送人工。
  • 依据的质量也要单独评测。 别只算结论准确率,把「依据对不对」也变成一个可量化、可手算的数字。
  • 防遗忘和领域微调一起上。 加领域能力的同时盯住通用能力别退化,用双轨评测把遗忘变成可报表的数字。

监管模型最难的地方,从来不是把准确率刷高。是让一个会为结论负责的人,敢把模型说的话写进处置依据里。能不能做到这一点,在你动手标第一条数据的时候就已经决定了。

相关工具的官方文档:LlamaFactorydata-juicerQwen3

如果你正在做强合规场景下的领域大模型训练、可审计的 AI 判定系统或企业 RAG,可以通过页面下方微信二维码或邮件沟通,邮箱:contact@aildnc.com。代码与项目可见 GitHub:https://github.com/JV-X

联系

预约一次 30 分钟技术诊断

正在评估企业知识库、AI 客服或 Agent 工作流时,可以先发问题背景。我会先帮你判断是否值得做、怎么做,以及主要风险在哪里。

微信二维码 优先加微信沟通