與落地實(shí)踐復(fù)盤)
這兩年我在某風(fēng)控團(tuán)隊(duì)里做反欺詐模型最大的感受是規(guī)則引擎還沒淘汰機(jī)器學(xué)習(xí)模型還在服役但大模型已經(jīng)不講武德地殺進(jìn)來了。尤其是當(dāng)欺詐手法從“群控腳本刷單”進(jìn)化到“AI偽造證件、深度合成語音、話術(shù)誘導(dǎo)”之后傳統(tǒng)風(fēng)控模型越來越吃力。我所在的團(tuán)隊(duì)在過去的半年里做了一個(gè)內(nèi)部代號叫“反欺詐鷹眼”的試點(diǎn)項(xiàng)目核心思路就是用大模型重新搭一條反欺詐研判鏈路實(shí)際效果確實(shí)是肉眼可見的突破。這篇東西不是學(xué)術(shù)論文就是我們項(xiàng)目落地時(shí)的真實(shí)復(fù)盤。我會把整體設(shè)計(jì)、數(shù)據(jù)準(zhǔn)備、模型選型、微調(diào)實(shí)操、上線部署以及踩過的坑全部拆開講。如果你正在做風(fēng)控、反欺詐、用戶異常行為識別這類工作或者你是算法工程師、數(shù)據(jù)產(chǎn)品經(jīng)理甚至是對大模型落地感興趣的業(yè)務(wù)方這篇復(fù)盤應(yīng)該都能對得上你的需求。放心我不會堆概念能白嫖的代碼和配置我都貼出來。1. 先理思路大模型反欺詐不是把系統(tǒng)推倒重來1.1 反欺詐問題的本質(zhì)到底是什么做反欺詐這么多年我越來越覺得這個(gè)問題本質(zhì)上是在和一群人對抗。黑產(chǎn)從業(yè)者不是靜態(tài)的他們有一套完整的產(chǎn)業(yè)鏈養(yǎng)號、引流、分發(fā)、變現(xiàn)。你封一批號他換一套設(shè)備指紋再來你識別出了一種話術(shù)他立刻改個(gè)說法繼續(xù)試探。傳統(tǒng)反欺詐體系通常分三層。第一層是規(guī)則引擎比如“新注冊賬號當(dāng)天高頻下單”“同一設(shè)備關(guān)聯(lián)超過五個(gè)賬號”這類規(guī)則簡單直接但隱蔽性差一點(diǎn)的黑產(chǎn)早就學(xué)會了規(guī)避。第二層是機(jī)器學(xué)習(xí)模型像GBDT、XGBoost這種在表格型特征上表現(xiàn)很好但它的天花板是“特征決定上限”。第三層才是近幾年興起的深度模型、圖神經(jīng)網(wǎng)絡(luò)和大模型。問題出在哪兒呢黑產(chǎn)的話術(shù)、圖片、視頻、認(rèn)知策略都是非結(jié)構(gòu)化的。一條客服申訴工單里可能寫著“我是代購幫朋友買了不少東西為什么封我號”和真正的黑產(chǎn)話術(shù)“我這是正常購買你們亂封號我要投訴”在字面上差別極小但語義意圖完全不同。傳統(tǒng)模型只看特征統(tǒng)計(jì)量根本捕捉不到這種語義差異。大模型擅長的恰恰是這個(gè)——理解上下文、理解意圖、理解隱含的語義關(guān)聯(lián)。所以我們的核心判斷是反欺詐系統(tǒng)不應(yīng)該推倒重來而應(yīng)該把大模型嵌入到原有體系中去解決那些“語義研判”類的問題。1.2 大模型到底補(bǔ)了哪塊短板傳統(tǒng)反欺詐模型有三個(gè)公認(rèn)的短板第一是冷啟動。新上線的業(yè)務(wù)、新出現(xiàn)的欺詐模式幾乎沒有歷史標(biāo)簽傳統(tǒng)模型直接抓瞎。而大模型憑借通用知識預(yù)訓(xùn)練過的語義理解能力能對“從沒見過的新型話術(shù)”做出一定判斷這叫零樣本或少樣本學(xué)習(xí)能力。第二是長文本和跨模態(tài)。欺詐證據(jù)往往藏在哪里藏在申訴文本、客服對話、手機(jī)截圖、合同掃描件、語音記錄里。這不是一兩列數(shù)值特征能表達(dá)的需要模型有處理多模態(tài)、長上下文的能力。第三是可解釋性。傳統(tǒng)機(jī)器學(xué)習(xí)模型尤其是樹模型雖然能輸出特征重要性但業(yè)務(wù)方追問“為什么這個(gè)賬號是欺詐”時(shí)你只能說“因?yàn)樵O(shè)備號關(guān)聯(lián)度高”。大模型能生成自然語言的研判理由這個(gè)輸出直接就能給審核團(tuán)隊(duì)用。當(dāng)然大模型不是萬能的。它的推理延遲高、單次調(diào)用成本貴、偶爾還會出現(xiàn)幻覺。如果把全量交易請求都丟給大模型線上系統(tǒng)會直接被打爆。所以方案的選型原則是各干各擅長的活大模型只處理它值得處理的那部分流量。1.3 混合架構(gòu)規(guī)則引擎、傳統(tǒng)模型和大模型的三級協(xié)同我們最終落地的是“三級漏斗式”的混合架構(gòu)這條鏈路現(xiàn)在已經(jīng)穩(wěn)定運(yùn)行了幾個(gè)月。第一級是規(guī)則引擎和名單庫負(fù)責(zé)攔截那些“特征已經(jīng)明確”的已知風(fēng)險(xiǎn)比如命中黑名單、設(shè)備指紋關(guān)聯(lián)多個(gè)異常賬號、短時(shí)間頻繁操作。這一級的攔截率大概占了整條鏈路的70%左右速度快、成本低。第二級是傳統(tǒng)機(jī)器學(xué)習(xí)模型處理那些規(guī)則沒有覆蓋到、但特征維度上能看出異常的場景比如交易行為偏離用戶歷史行為習(xí)慣。這里我保留了一個(gè)基于梯度提升樹和神經(jīng)網(wǎng)絡(luò)的雙通道模型線上大概能再攔掉一部分風(fēng)險(xiǎn)。第三級才是大模型研判只處理前兩級放行的高價(jià)值案件以及需要語義理解的場景。比如高風(fēng)險(xiǎn)申訴工單、疑似團(tuán)伙欺詐的群聊對話、OCR識別出的合同時(shí)刻、客服和用戶之間的多輪溝通記錄。大模型會輸出一個(gè)風(fēng)險(xiǎn)評分、風(fēng)險(xiǎn)類型和研判理由。這套架構(gòu)的好處在于既保證了大流量的低延遲高吞吐又把大模型的智力和語義理解用在了刀刃上。一句話總結(jié)就是——讓大模型做“分析師”別讓它當(dāng)“門衛(wèi)”。2. 數(shù)據(jù)與特征工程決定上限的臟活累活2.1 反欺詐標(biāo)簽的構(gòu)造思路大模型落地反欺詐第一個(gè)繞不開的問題是數(shù)據(jù)。風(fēng)控領(lǐng)域最大的痛點(diǎn)是黑樣本極少正負(fù)樣本極端不平衡。你說欺詐率是萬分之幾那都是樂觀的。我們的方案是把傳統(tǒng)有監(jiān)督學(xué)習(xí)和大模型的訓(xùn)練目標(biāo)分開來看。傳統(tǒng)模型那邊我用的是歷史上有明確結(jié)論的樣本經(jīng)過人工審核坐實(shí)欺詐的賬號加上明確無風(fēng)險(xiǎn)的正常賬號做一個(gè)二分類。大模型那邊我換了一種思路。不直接訓(xùn)練“欺詐/正?!钡亩诸惼鞫怯靡粋€(gè)“語義研判任務(wù)”來訓(xùn)練。什么意思呢我把樣本組織成“案件描述提問”的形式讓模型輸出針對性的研判結(jié)論。比如輸入一段申訴工單問題上寫著“該用戶是否存在惡意申訴或身份偽造的可能請結(jié)合上下文輸出風(fēng)險(xiǎn)等級和判斷理由”。這樣模型輸出的不是簡單標(biāo)簽而是結(jié)構(gòu)化的風(fēng)險(xiǎn)評估文本。另外負(fù)樣本不能只看沒被標(biāo)記為欺詐的樣本因?yàn)楹芏辔幢蛔R別的欺詐就藏在里面。我加了一個(gè)半監(jiān)督的步驟先用規(guī)則和傳統(tǒng)模型跑一遍大盤數(shù)據(jù)把高概率異常但沒有實(shí)錘的樣本標(biāo)為“疑似風(fēng)險(xiǎn)”作為大模型訓(xùn)練用的候選負(fù)樣本再通過人工抽樣復(fù)核來校正。這一步雖然費(fèi)時(shí)但能明顯緩解冷啟動問題。2.2 文本類特征申訴工單、客服對話、備注文本文本數(shù)據(jù)是這次項(xiàng)目里增量收益最大的部分。我大概梳理了一下反欺詐場景里天然存在幾類高價(jià)值文本用戶申訴工單與客服對話記錄。這是最直接的用戶自述里面有大量關(guān)于“我是誰”“我做了什么”“我為什么被限制”的描述。交易備注和留言。電商場景里經(jīng)常有“幫忙代付”“刷信譽(yù)”“線下返款”這類包含異常暗示的文本。商品或店鋪描述。團(tuán)伙欺詐常會在商品標(biāo)題里嵌入暗語比如“資源號”“一拖三”這類黑話。合同、協(xié)議、證明材料的OCR識別文本主要在信貸和供應(yīng)鏈金融場景。這些文本有些是短文本有些是長文本。我的建議是不要只做截?cái)嚅L文本要分段后再聚合或者用支持長上下文的模型來處理。我們最后踩了好幾個(gè)坑才明白直接把兩千字的申訴工單全部塞給模型做截?cái)喾址昼娋桶殃P(guān)鍵信息截沒了。2.3 行為序列與多模態(tài)特征只有文本還不夠。黑產(chǎn)行為往往體現(xiàn)在序列上賬號在一天內(nèi)注冊、綁卡、下單、申請退款整個(gè)過程時(shí)間軸高度壓縮或者一個(gè)設(shè)備在凌晨三點(diǎn)突然開始大量操作。我在數(shù)據(jù)側(cè)的特征工程分成了四類設(shè)備指紋類設(shè)備ID、IP歸屬地、系統(tǒng)版本、屏幕分辨率、傳感器信息。行為統(tǒng)計(jì)類頻率、間隔、時(shí)段偏好、操作路徑的復(fù)雜度。關(guān)聯(lián)關(guān)系類與高風(fēng)險(xiǎn)賬號的共同設(shè)備、共同IP、共同收貨地址、共同手機(jī)號。內(nèi)容理解類文本向量、圖像相似度、語音情緒特征。其中內(nèi)容理解類特征就是給大模型用的。對于OCR文本和語音轉(zhuǎn)寫文本我直接用文本編碼器做向量化對于行為軌跡我把它序列化成類似“事件流的文字描述”再扔給大模型做行為序列的語義理解。舉個(gè)例子一條事件流可以表示成[賬號A] 2024-11-20 14:03:21 首次登錄設(shè)備D [賬號A] 2024-11-20 14:05:44 修改綁定手機(jī)號 [賬號A] 2024-11-20 14:06:12 添加新銀行卡 [賬號A] 2024-11-20 14:07:38 發(fā)起首筆大額轉(zhuǎn)賬這種事件序列轉(zhuǎn)成自然語言之后大模型能比傳統(tǒng)特征工程更敏銳地捕捉到“時(shí)間高度壓縮”和“多個(gè)異常動作連續(xù)發(fā)生”的語義模式。這一步是我從日志分析中得到的靈感效果出奇的好。2.4 數(shù)據(jù)清洗與隱私合規(guī)的幾個(gè)注意點(diǎn)反欺詐數(shù)據(jù)涉及大量用戶隱私這個(gè)紅線碰不得。我這邊做數(shù)據(jù)清洗時(shí)定了幾個(gè)硬規(guī)矩手機(jī)號、身份證號、銀行卡號等敏感字段在建模前做脫敏和匿名化用哈希映射替代。文本數(shù)據(jù)要過一遍隱私識別把可能包含地址、姓名、聯(lián)系方式的內(nèi)容打碼后再送入模型訓(xùn)練。模型產(chǎn)出的研判理由不能包含原始敏感信息只允許輸出風(fēng)險(xiǎn)標(biāo)簽和抽象化描述。合規(guī)不是技術(shù)問題是生存問題。模型效果再好一旦在數(shù)據(jù)處理環(huán)節(jié)出了差錯(cuò)整個(gè)項(xiàng)目都會被叫停。3. 模型選型與落地實(shí)操從通用大模型到風(fēng)控研判模型3.1 基座模型怎么選通用模型還是領(lǐng)域模型做這一步時(shí)我們先盤點(diǎn)了市面上可用的基座模型。當(dāng)時(shí)的想法是與其從零訓(xùn)練一個(gè)風(fēng)控大模型不如基于開源的通用中文大模型做領(lǐng)域微調(diào)成本可控、落地周期短。選基座時(shí)重點(diǎn)看幾個(gè)維度中文語義理解能力尤其是對口語化、不規(guī)范文本錯(cuò)別字、火星文、諧音字的容忍度。上下文窗口長度至少要能容納完整的申訴工單和對話序列。支持的能力范圍包括文本分類、實(shí)體抽取、文本生成、文本向量化。開源社區(qū)活躍度遇到問題能不能快速找到解決方案。我們初期對比了兩類基座一類是參數(shù)量相對較小的通用模型速度快、部署成本低但復(fù)雜語義理解稍微弱一點(diǎn)另一類是規(guī)模更大的通用模型效果更好但對顯存和推理延遲壓力很大。最終在兩個(gè)場景上用了不同的策略線上高并發(fā)推理場景用中小尺寸模型離線復(fù)雜研判場景用大尺寸模型。這里明確一下不完全是為了省成本而是反欺詐鏈路里確實(shí)存在兩種不同節(jié)奏的任務(wù)。高并發(fā)的場景更看重響應(yīng)時(shí)間復(fù)雜研判的場景更看重推理效果分而治之才是合理的。3.2 繼續(xù)預(yù)訓(xùn)練讓模型真正懂反欺詐黑話微調(diào)之前我建議你做一步繼續(xù)預(yù)訓(xùn)練。這一步不是必選項(xiàng)但做了之后模型對業(yè)務(wù)領(lǐng)域詞匯的敏感度會提升很多。什么叫領(lǐng)域黑話比如在電商風(fēng)控里“跑單”可能不是外賣跑腿而是指訂單異常流失“白號”是指沒有任何交易記錄的新賬號“養(yǎng)號”是指黑產(chǎn)通過模擬正常行為來提升賬號權(quán)重。通用模型沒見過這些詞在風(fēng)控語境下的真實(shí)用法。我們的做法是收集了脫敏后的歷史工單、客服對話、風(fēng)控規(guī)則描述、風(fēng)險(xiǎn)案例報(bào)告大概攢了幾千萬條領(lǐng)域語料然后對基座模型做了多輪繼續(xù)預(yù)訓(xùn)練。這個(gè)階段不調(diào)整任務(wù)頭只是讓模型在長文本上下文中充分“浸泡”領(lǐng)域數(shù)據(jù)讓它的詞向量表征更貼近業(yè)務(wù)實(shí)際。這步做完之后我們做了個(gè)很直觀的測試把同一段包含黑話的申訴工單分別送給繼續(xù)預(yù)訓(xùn)練前后的模型問它“用戶是否存在異常操作”前一個(gè)模型的回答比較泛泛后一個(gè)模型的回答明顯能聚焦到“代付”“刷單”這些具體行為上。差距非常明顯。3.3 微調(diào)策略指令微調(diào)與偏好對齊繼續(xù)預(yù)訓(xùn)練之后進(jìn)入微調(diào)階段。這個(gè)階段的核心不是讓模型死記硬背標(biāo)簽而是讓模型學(xué)會“怎么按照風(fēng)控分析師的方式思考”。我用的是指令微調(diào)加偏好對齊的組合方案。指令微調(diào)階段我把歷史風(fēng)險(xiǎn)研判案例整理成結(jié)構(gòu)化的指令數(shù)據(jù)。每條數(shù)據(jù)包括指令instruction描述任務(wù)是什么比如“請判斷該賬號是否存在團(tuán)伙欺詐特征”。輸入input案件上下文包括申訴文本、行為序列、設(shè)備信息等。輸出output標(biāo)準(zhǔn)化的研判結(jié)論包含風(fēng)險(xiǎn)等級、風(fēng)險(xiǎn)類型、一句話理由。光有指令微調(diào)還不夠因?yàn)橹噶钗⒄{(diào)能學(xué)會“怎么說”但不一定能學(xué)會“怎么說得對”。我又用偏好對齊的方式進(jìn)一步校準(zhǔn)讓模型在“說得合理”和“說得準(zhǔn)確”之間找到平衡。具體做法是構(gòu)建偏好對對同一個(gè)案件準(zhǔn)備一個(gè)優(yōu)秀研判回答和一個(gè)普通研判回答然后讓模型學(xué)習(xí)選擇優(yōu)秀回答。這個(gè)過程的本質(zhì)是把風(fēng)控專家?guī)资甑慕?jīng)驗(yàn)“蒸餾”到模型偏好里。這一步做完后模型輸出明顯更克制不再動不動就給高風(fēng)險(xiǎn)因?yàn)槠脭?shù)據(jù)里有大量“這個(gè)案例不能輕易判定”的正確示例。3.4 核心代碼基于開源框架的微調(diào)流程為了方便你參考我把微調(diào)的整個(gè)流程壓縮成一個(gè)最簡可運(yùn)行的結(jié)構(gòu)。這只是骨架實(shí)際業(yè)務(wù)中還需要補(bǔ)充分布式配置和數(shù)據(jù)處理細(xì)節(jié)。# 主流程示例指令微調(diào) from transformers import AutoModel, AutoTokenizer, Trainer, TrainingArguments from datasets import Dataset model_name your-base-model tokenizer AutoTokenizer.from_pretrained(model_name) model AutoModel.from_pretrained(model_name) # 構(gòu)造指令數(shù)據(jù) samples [ { instruction: 請判斷該賬號是否存在團(tuán)伙欺詐特征并輸出風(fēng)險(xiǎn)等級。, input: 用戶申訴我是代購經(jīng)常幫朋友買日用品近期賬號被限制。行為序列注冊后72小時(shí)內(nèi)在多臺設(shè)備上登錄。, output: 風(fēng)險(xiǎn)等級中風(fēng)險(xiǎn)。風(fēng)險(xiǎn)類型設(shè)備聚集。理由賬號短期內(nèi)關(guān)聯(lián)多臺設(shè)備但用戶自述為代購需進(jìn)一步核驗(yàn)。, }, # ... 更多樣本 ] def preprocess(example): prompt f指令{example[instruction]}\n輸入{example[input]}\n輸出 enc tokenizer(prompt, truncationTrue, max_length1024) target tokenizer(example[output], truncationTrue, max_length256) enc[labels] target[input_ids] return enc dataset Dataset.from_list(samples).map(preprocess) training_args TrainingArguments( output_dir./fraud_llm_ckpt, per_device_train_batch_size4, gradient_accumulation_steps8, learning_rate2e-5, num_train_epochs3, fp16True, ) trainer Trainer( modelmodel, argstraining_args, train_datasetdataset, ) trainer.train()注意幾個(gè)點(diǎn)max_length要根據(jù)你的顯存調(diào)整。我之前在一張消費(fèi)級顯卡上跑小模型時(shí)設(shè)了1024再大會顯存溢出。指令數(shù)據(jù)的“輸入”部分必須保證脫敏這是合規(guī)紅線。如果業(yè)務(wù)場景里有大量結(jié)構(gòu)化特征不要硬塞進(jìn)文本而是先做一個(gè)特征摘要再拼接效果更好。3.5 效果評估不能只看準(zhǔn)確率模型微調(diào)完之后評估是最容易被忽視但又最重要的環(huán)節(jié)。反欺詐場景里我強(qiáng)烈建議不要只看準(zhǔn)確率因?yàn)闃颖緲O度不平衡的情況下把所有樣本都判成正常準(zhǔn)確率也有99%以上但這毫無意義。我更關(guān)注這幾個(gè)指標(biāo)召回率Recall真正欺詐案件里模型能抓出來多少。精確率Precision模型標(biāo)記為高風(fēng)險(xiǎn)的案件里有多少是真正的欺詐。F1分?jǐn)?shù)平衡精確率和召回率的綜合指標(biāo)。KS值或AUC衡量模型把正負(fù)樣本區(qū)分開的能力。誤殺率正常用戶被誤判為高風(fēng)險(xiǎn)的比例這個(gè)直接關(guān)系到用戶體驗(yàn)和客訴量。我們的目標(biāo)設(shè)定是高風(fēng)險(xiǎn)案件的召回率不低于70%同時(shí)誤殺率控制在0.5%以下。如果只能抓出高風(fēng)險(xiǎn)但誤殺一堆正常用戶那業(yè)務(wù)方是不會買單的。評估集也要認(rèn)真建。我特意留了一批“時(shí)間上靠后”的樣本做測試模擬模型上線的效果。因?yàn)槠墼p手法一直在變用歷史數(shù)據(jù)評估出來的分?jǐn)?shù)往往比實(shí)際效果樂觀。4. 上線部署與推理優(yōu)化讓大模型跑得又快又便宜4.1 大小模型協(xié)同的推理鏈路模型訓(xùn)完只是第一步上線才是生死關(guān)。我前面提過大模型不能處理全量流量所以線上鏈路的編排很關(guān)鍵。我們的線上流程大概是這樣的請求進(jìn)來先過規(guī)則引擎規(guī)則命中直接拒絕或放行未命中的請求進(jìn)入傳統(tǒng)機(jī)器學(xué)習(xí)模型輸出一個(gè)風(fēng)險(xiǎn)概率模型概率落在某個(gè)灰色區(qū)間比如0.4到0.8之間的案件才被送入大模型做深度研判大模型輸出的結(jié)果再疊加規(guī)則校驗(yàn)最終給出決策。這個(gè)灰色區(qū)間的設(shè)定直接決定了大模型的流量比例。我最初把區(qū)間設(shè)得偏寬結(jié)果大模型每天要處理十幾萬次推理請求GPU集群直接過載。后來通過調(diào)整閾值把大模型的流量壓到總流量的5%以內(nèi)既保住了效果又保住了成本。用一張表格表達(dá)不同層級的分工會更清晰層級處理對象核心算法目標(biāo)流量占比第一級全量請求規(guī)則引擎、名單庫快速攔截明確風(fēng)險(xiǎn)70%以上第二級規(guī)則未命中傳統(tǒng)機(jī)器學(xué)習(xí)模型識別行為異常20%-25%第三級灰色區(qū)間案件大模型研判語義理解、小樣本推理3%-5%4.2 推理延遲優(yōu)化量化、蒸餾和緩存大模型上線之后大家最關(guān)心的永遠(yuǎn)是延遲。我們這邊的目標(biāo)是大模型單次推理壓到500毫秒以內(nèi)復(fù)雜案件可以放寬到3秒。幾個(gè)親測有效的優(yōu)化手段半精度推理把模型參數(shù)從FP32轉(zhuǎn)到FP16顯存占用幾乎減半速度提升近一倍。精度損失在可接受范圍內(nèi)。模型量化使用INT8量化和結(jié)構(gòu)化剪枝在效果輕微下降的前提下大幅壓縮模型體積。這一步要看具體業(yè)務(wù)對精度的容忍度我的經(jīng)驗(yàn)是風(fēng)控場景里INT8量化后的效果差異很小。推理服務(wù)緩存對重復(fù)出現(xiàn)的案件文本做語義哈希命中緩存直接返回歷史結(jié)論。團(tuán)伙欺詐的文案經(jīng)常高度相似這個(gè)優(yōu)化能砍掉不少重復(fù)計(jì)算。請求級別并行同一個(gè)案件里的多個(gè)子任務(wù)并行推理比如同時(shí)做文本分類、實(shí)體抽取和摘要生成把串行改并行端到端延遲能降一個(gè)量級。還要強(qiáng)調(diào)一點(diǎn)模型服務(wù)一定要和線上主鏈路解耦。如果大模型服務(wù)抖動或者GPU故障不能影響主交易鏈路。我的做法是在大模型前面加了一層降級開關(guān)一旦大模型超時(shí)或異常案件自動降級到傳統(tǒng)模型的決策結(jié)果。保底邏輯必須時(shí)刻在線這是風(fēng)控系統(tǒng)的基本素養(yǎng)。4.3 監(jiān)控與反饋閉環(huán)對抗黑產(chǎn)也得自我進(jìn)化反欺詐模型上線不是終點(diǎn)而是起點(diǎn)。因?yàn)楹诋a(chǎn)在持續(xù)進(jìn)化模型的效果會隨時(shí)間衰減。我搭了一個(gè)完整的監(jiān)控與反饋閉環(huán)。第一層是數(shù)據(jù)監(jiān)控實(shí)時(shí)觀察大模型服務(wù)的流量、延遲、顯存、CPU占用。第二層是效果監(jiān)控每天統(tǒng)計(jì)高風(fēng)險(xiǎn)案件的人工復(fù)核結(jié)果和大模型的預(yù)測是否一致兩者不一致的案例進(jìn)入次日重訓(xùn)候選池。第三層是業(yè)務(wù)指標(biāo)監(jiān)控關(guān)注誤殺率、客訴率、人工復(fù)核通過率。這些指標(biāo)一旦出現(xiàn)異常波動立刻觸發(fā)告警。第四層是自動重訓(xùn)機(jī)制每天把新增的坐實(shí)欺詐樣本和誤殺樣本回灌到訓(xùn)練集每周做一次增量微調(diào)每個(gè)月做一次全量重訓(xùn)。這個(gè)閉環(huán)跑起來之后模型效果不是越用越差而是越用越準(zhǔn)。我們上線頭一個(gè)月模型在新增欺詐樣本上的召回率還不到60%第二個(gè)月就穩(wěn)步爬升到70%以上。4.4 可解釋性模型判了得讓人看得懂大模型在風(fēng)控里推不開最大的阻力不是效果而是可解釋性。業(yè)務(wù)審核團(tuán)隊(duì)和合規(guī)部門都會問“你說它是團(tuán)伙欺詐憑什么”所以我從一開始就把“模型輸出研判理由”作為硬性要求。我們讓大模型在給出風(fēng)險(xiǎn)等級的同時(shí)一定要輸出結(jié)構(gòu)化的理由包括風(fēng)險(xiǎn)因素是什么、哪些行為序列支撐了判斷、和已知風(fēng)險(xiǎn)模式的相似度有多高。實(shí)際效果是審核團(tuán)隊(duì)拿到輸出之后不再需要自己從頭看原始工單效率提升明顯。而且因?yàn)槔碛墒强勺x的自然語言業(yè)務(wù)方對大模型的信任度也在逐步提升。當(dāng)然大模型生成的理由偶爾也會出現(xiàn)一本正經(jīng)地胡說八道所以我沒有完全讓它自由發(fā)揮。我把輸出格式死死約束住要求它先輸出“命中特征”再輸出“研判依據(jù)”最后輸出“風(fēng)險(xiǎn)結(jié)論”格式不對就重試一次。幾次調(diào)優(yōu)下來輸出質(zhì)量穩(wěn)定了很多。5. 常見問題與排障實(shí)錄那些年我們踩過的坑5.1 問題一小樣本場景下通用大模型也學(xué)不動一開始我們天真地以為通用大模型有一點(diǎn)語義理解能力就能直接上。結(jié)果在某個(gè)細(xì)分業(yè)務(wù)線上能用的坐實(shí)欺詐樣本只有幾百條微調(diào)出來的模型怎么測都過不了及格線。排查下來發(fā)現(xiàn)問題不在微調(diào)方法而在樣本本身。幾百條樣本根本覆蓋不了欺詐手法的多樣性模型記住了這幾條樣本的“表面模式”遇到變體就抓瞎。我的解法是用“兩階段訓(xùn)練法”先用規(guī)則引擎和歷史異常日志構(gòu)造海量“疑似樣本”模型在這些弱標(biāo)簽上做預(yù)訓(xùn)練這一步是讓模型建立業(yè)務(wù)感知第二階段用少量高置信坐實(shí)樣本做精調(diào)讓模型學(xué)習(xí)精確決策邊界。這個(gè)組合比直接用小樣本硬訓(xùn)效果好了不止一個(gè)檔次。5.2 問題二大模型輸出“幻覺式理由”把正常用戶判成高風(fēng)險(xiǎn)這是上線初期的重災(zāi)區(qū)。明明一個(gè)老用戶正常買了幾件商品在途的物流信息正常結(jié)果大模型給出的理由是“用戶行為序列與歷史習(xí)慣不一致存在盜號可能”直接把用戶限額降了。問題出在我一開始給模型的指令里沒有明確告訴它“證據(jù)不夠充分時(shí)應(yīng)該輸出低風(fēng)險(xiǎn)”。模型為了完成指令傾向于輸出一段看起來合理的理由哪怕證據(jù)不足也會硬湊。這個(gè)問題靠的是偏好對齊解決的同時(shí)我在推理鏈路里加了一個(gè)“置信度校準(zhǔn)”模塊如果模型生成的理由里沒有出現(xiàn)明確命中特征就強(qiáng)制降級為低風(fēng)險(xiǎn)。另外從業(yè)務(wù)層面我也把高風(fēng)險(xiǎn)的定義收斂了一把讓模型在“不確定”和“高風(fēng)險(xiǎn)”之間有一個(gè)清晰的安全區(qū)。5.3 問題三新欺詐手法出現(xiàn)時(shí)模型還是反應(yīng)慢半拍模型再強(qiáng)也追不上黑產(chǎn)的進(jìn)化速度這是客觀規(guī)律。有一次我們發(fā)現(xiàn)某個(gè)新的欺詐團(tuán)伙在短時(shí)間內(nèi)薅走了大量新客權(quán)益等到標(biāo)注樣本積累出來損失已經(jīng)不可逆了。后來我建立了一個(gè)“新手法快速感知”機(jī)制把異常事件聚類結(jié)果、最新客訴文本、黑產(chǎn)短信模板等非結(jié)構(gòu)化信息每天自動跑一遍大模型的零樣本研判輸出的疑似案例直接推送給人工復(fù)核團(tuán)隊(duì)。這樣從“新手法出現(xiàn)”到“模型介入攔截”的時(shí)間窗口從平均兩周縮短到48小時(shí)以內(nèi)。這個(gè)機(jī)制的本質(zhì)是讓大模型扮演“偵察兵”而不是等標(biāo)簽夠了才被動反應(yīng)。5.4 問題排查速查表我還整理了一份高頻問題排查表直接對應(yīng)到癥狀、原因和解決方案大家可以按圖索驥癥狀可能原因解決辦法大模型誤殺率高指令不夠清晰、偏好對齊不足增加“證據(jù)不足判低風(fēng)險(xiǎn)”的偏好對推理延遲過高模型過大、未做量化切小模型、INT8量化、請求并行文本被截?cái)鄬?dǎo)致關(guān)鍵信息丟失上下文長度設(shè)置太短分段處理并做關(guān)鍵片段摘要新欺詐手法識別滯后缺乏新樣本感知鏈路建立零樣本研判人工復(fù)核快速閉環(huán)模型輸出格式混亂指令約束弱強(qiáng)制結(jié)構(gòu)化輸出模板并做失敗重試6. 經(jīng)驗(yàn)沉淀三個(gè)我認(rèn)為最值錢的心法多輪迭代下來我最大的體會是大模型不是魔法它是一個(gè)放大器。你喂給它的數(shù)據(jù)質(zhì)量高、指令設(shè)計(jì)得好、業(yè)務(wù)鏈路理得清它的效果會爆發(fā)式增長反過來數(shù)據(jù)一團(tuán)糟、指令模棱兩可、業(yè)務(wù)邏輯混亂它也就比傳統(tǒng)模型強(qiáng)一點(diǎn)點(diǎn)。第一個(gè)心法是把“大模型賦能”落到非常具體的問題上。不要只說“用大模型做反欺詐”要落到“用大模型做申訴工單的語義研判”“用大模型做新欺詐手法的零樣本初篩”“用大模型生成人工可讀的研判理由”。問題定義得越具體落地概率越高。第二個(gè)心法是永遠(yuǎn)留一條降級路徑。大模型再強(qiáng)也是模型它可能因?yàn)閿?shù)據(jù)突變、服務(wù)異常、甚至是惡意攻擊而產(chǎn)生錯(cuò)誤決策。反欺詐系統(tǒng)永遠(yuǎn)要有保底手段寧可保守也不能讓系統(tǒng)整個(gè)趴窩。最后再分享一個(gè)小技巧。我們在做模型迭代時(shí)每次改完模型都會做“對抗性回放”把過去半年里誤判的案例、黑產(chǎn)新變體案例全部收集起來重新跑一遍新模型看它的決策變化。這一步能提前發(fā)現(xiàn)模型在新場景下的不適應(yīng)不用等到上線后被業(yè)務(wù)方追著罵才發(fā)現(xiàn)。大模型賦能反欺詐這條路目前還處在早期階段很多坑都是自己摸出來的。如果你正準(zhǔn)備做類似的事希望這篇復(fù)盤能讓你少走點(diǎn)彎路。