天天看點

商家安全算法的道與術:螞蟻集團商家安全防控實踐

作者:DataFunTalk

導讀:數字生活中,人們的衣食住行都能夠通過手機一站式地解決,十分便利。在消費場景中,商家作為重要參與方為人們提供便利性的同時也可能被黑産利用。對黑産而言,通過商家身份使用收款功能從事風險交易更為便捷。是以,做好商家安全,保障數字生活生态的健康性與保護使用者的資金安全十分必要。本次分享主要介紹商家安全防控中三個重要的節點,包括:

1. 商家真實性認知

2. 商家交易風險識别

3. 商家智能決策

  • 商戶準入簽約:解決簽約過程中商家資訊的真實性校驗問題
  • 商戶事中交易:解決商戶簽約後實際經營過程中的交易風險識别問題
  • 商戶管控決策:融合真實性和交易風險識别結果,做最優管控決策1

--

01

商家真實性認知

首先介紹商家安全的第一環——商家真實性認知。

商家安全算法的道與術:螞蟻集團商家安全防控實踐

這個環節試圖去回答商家是誰,在哪裡,屬于什麼行業。一般從以下3個次元來判斷商家的真實性:

  • 商戶憑證真實性:商家在準入簽約環節需要提供圖像憑證資訊,如門頭照、營業執照、内景照等,可以判斷這些圖像是否商家真實拍攝上傳,并從這些圖像裡推斷出商家的經營場景及其所屬行業,與後續其他資訊源做對比驗證
  • 商戶文本真實性:商家填寫的商戶名、位址、行業等文本資訊也需要判斷是否真實規範,并從這些資訊中推斷出商家經營的行業位址等,與後續其他資訊源做對比驗證
  • 商家交易真實性:商家交易情況可以用來動态驗證商家提供的圖像、文本資訊的真實性,例如從憑證和商戶名确定為從事餐飲的面館如果交易時間均不在用餐時間範圍内,則可以推測商家提供的圖像、文本資訊可能存在虛假,需要要求商家重新送出相關認證資訊。

1. 憑證真實性

首先,介紹憑證真實性識别。

商家安全算法的道與術:螞蟻集團商家安全防控實踐

這個場景會面臨圖像标注成本高的問題。我們要求商家提供的門頭照、内景照等憑證類資訊更多的是自然場景下的圖像,與公開資料集差異很大,是以無法利用公開資料集訓練适用于該場景下的模型。而标注資料又會産生很高的人工成本,為解決該問題,對标注資料要求比較低的自監督學習和半監督學習方法成為了選擇。

在沒有任何标注資料的情況下,我們選擇了SimCLR這一基于對比式的自監督學習方法來進行訓練。這個算法的好處在于其通過資料增強建構正負樣本的能力,可以提升我們場景下僞冒風險的識别效果。這主要是因為黑産會通過旋轉、變換角度、篡改門頭文字等方式重複送出相關憑證達到成為簽約商戶的目的。而這些手段實際上是一些資料增強方式。如圖左上角左側所示,其原理是一張圖像通過不同的變化得到兩張圖像,自監督學習的監督資訊則是同一圖像經過增強獲得的圖像對标簽為1,不同圖像處變換後的圖像對标簽為0。該算法訓練時的優化方向是讓來自同一張圖像的距離變近,而來自不同圖像的距離變遠,進而實作在不依賴标注資料的情況下,可以提取到較通用的圖像embedding,供下遊僞冒識别的任務使用。

在有少量标注資料的情況,我們可以采用半監督的學習方式。一般情況下,半監督學習是使用少量的标記樣本去訓練一個模型;然後,使用該模型對沒有标簽的資料進行打分,通過設定一個高置信的門檻值得到僞标簽樣本;最後,将這部分樣本加入到之前的标注資料中進行第二輪的訓練。而我們參考的FixMatch算法在無标簽樣本部分進行了一定的優化,引入了一緻性的損失。如圖左上角右側所示,我們對無監督的樣本同樣進行資料增強,這是希望有監督學習獲得的模型在關注分類準确率的同時,還能對相同圖像變換得到的圖像給出相似的分數。同時,在這個基礎上,我們引入了遷移學習中的領域分類loss,這是因為商戶的憑證類型很多,如門頭照、内景照、營業執照等。而這些圖像的差異很大,我們希望領域分類loss可以提升模型在不同憑證類型之間的通用性。實際結果也表明模型産出的表征能适用不同的憑證類型,在多個下遊任務中同準确率下覆寫平均提升10%以上。

以上便是為了解決圖像标注成本問題所采用的方法,接下來介紹憑證真實性中遇到的第二個問題——複雜背景。

通過網站、app提供服務的線上商戶,可能整個網頁都正常,但在一些很小的局部位置可能出現賭博充值入口等風險元素等。為了讓模型快速關注到帶有風險資訊的區域,我們提出了基于上下文引導的attention機制。如圖左下角左邊所示,該方法使用一個大的卷積核去訓練一個全局的attention,一個小的卷積核去訓練一個局部的attention;然後讓這兩個attention進行對比的交叉學習,進而使模型能夠知道哪塊區域相對于全局而言是有很大差異的;之後,給這塊區域更大的權重,讓模型關注這部分區域進而更好地捕捉這部分風險特征。該方法在網站和app風險識别上取得了很好的效果。

同時,在複雜背景下,同一個風險在不同圖像裡會表現出不同的風險特征。如通過拍屏的方式拍取網上的圖檔進行簽約,這種風險會表現出不同的風險特征:第一,拍攝的螢幕可能有摩爾紋;第二,電腦的邊框拍入圖像内;第三,從反光倒影中能看到拍屏情況。傳統的方式是使用同一個特征提取網絡來提取不同的特征,這顯然效果是不佳的。為了解決這個問題,我們提出了基于解耦特征的細粒度内容識别。如圖左下角右邊所示,該方法将網絡解耦,針對不同的特征使用不同的網絡進行識别,并使用下遊的标簽自适應動态學習特征通道的權重進行融合。

通過算法的建設,标注成本和複雜背景問題基本能夠得到解決。但憑證真實性模型的評估不同于交易風險有案件投訴,上線後效果評估很難進行。為此,我們建立了可持續學習鍊路,将模型識别的不同分數段樣本進行随機抽樣,讓人工進行持續少量标注,通過不斷累積的标注樣本來監控模型效果,當模型效果出現衰退時進行增量更新疊代。

最終,通過以上工程和算法的鍊路我們搭建了如圖右上角所示的憑證真實性模型架構。首先,我們關注圖像的拍攝品質;然後,關注憑證是不是真實拍攝的;其次,識别圖像是否有風險;最後,對沒有問題的憑證進行經營場景和行業的分析。

2. 文本真實性

第二塊是文本真實性的内容。這部分主要解決文本分類和文本比對這兩個問題。

商家安全算法的道與術:螞蟻集團商家安全防控實踐

文本分類主要用來判斷商戶名、位址是否規範以及判斷商戶行業等。我們采用了基于Bi-LSTM的短文本預訓練方案。這是因為商家場景主要涉及商戶名、位址、商品名等短文本,語義資訊差,詞表長尾嚴重,使用句子級别的預訓練模型效果一般;同時,LSTM的距離特征捕捉能力對于短文本夠用,參數相較于BERT少很多,推理效率高。如圖右上角所示,因為我們的文本過短,相較于一般LSTM的先正向後反向訓練我們對網絡結構進行了一定優化,在訓練任何一個context時都會同時考慮正反向的情況。通過這個結構得到的預訓練模型,相較于BERT而言參數由110M下降到14M,下遊各分類任務的準确率也均有15%左右的提升。

文本比對主要用于判斷商戶名或者商戶位址是否有批量簽約風險以及相似的位址是否指向相同的商戶。文本比對是檢索類的任務,一般通過産生的向量表征與底庫進行比對召回後再進行精排。因對比學習能夠産生更适合文本比對任務的embedding向量,考慮到simCSE支援無監督和有監督的訓練方式,同我們的應用場景比對,我們選擇了該方法。如圖左下角所示,我們會使用無标簽資料進行第一階段的無監督訓練,其在訓練過程中對同一句話通過随機dropout的方式産生兩個不同的embedding,用這兩個embedding建構正例進行模型訓練;第二步,使用打标好的少量标注資料做一個類似finetuning二階段訓練。通過這個模型産出的embedding向量進行比對檢索任務,相較于文本分類使用的短文本預訓練方式,比對準确率有6%的提升。

基于文本分類和文本比對這兩個算法方案,文本真實性識别的整體結構如上圖右邊所示。首先,我們會通過文本分類的方式判斷文本的品質;在品質符合要求的基礎上進行内容的了解和識别,如行業識别和NER提取;最後,通過實體比對的方式去判斷商戶是否為批量簽約。

3. 交易真實性

交易真實性是引入交易資訊來判斷前面提到的憑證和文本這類靜态資訊是否真實。

商家安全算法的道與術:螞蟻集團商家安全防控實踐

如上圖所示,交易真實性識别架構主要依賴交易形态、時序等資訊首先判斷商家是否具有真實經營活動,身份是否真實;在判斷商家身份真實的基礎上,我們會根據交易資訊來預測經營場景,如當LBS聚集可以推斷商家為門店類,當LBS分散時,商家可能是線上商戶或者流動攤販;接着,我們會根據交易時間和人群分布等來校驗商家送出的行業真實性。

圖下方展示的是這個過程中我們用到的一些算法。從交易形态分布去推測行業和經營場景涉及可解釋性問題,是以我們采用的是可解釋的boosting模型。該方法是一個引入非線性函數的線性權重算法,其能夠在擁有趨近于XGB識别效果的同時提供更好的可解釋性。在動态行業校驗部分,我們使用了Isolation Forest的算法。其假設商家提供的靜态行業資訊是真實的并依此進行分群,将其交易特征與同行業其他商戶交易特征放在一起做異常檢測,如果模型表明商家為離群點,說明其不屬于該行業,即之前提供的靜态行業資訊是虛假的。Robust Training 主要為了解決标簽的噪音問題。由于使用交易資訊去判斷商戶的行業、經營場景有一定的困難,是以人工标注的資料可能存在噪音。而這種方法會建構兩個分類網絡,讓A學習完後把易學的樣本給到B,然後讓B學習完後把易學的樣本給到A,通過這種互為teacher的互動過程降低噪音标簽的影響。

通過憑證、文本、交易這三個次元的真實性分析,我們就能夠判斷商家的真實性情況并回答我們一開始提出的商戶是誰,在哪裡,做什麼行業的問題。當商家通過真實性校驗後便能進行經營收款等活動。接下來,我們便會關注交易環節的風險。

--

02

商家交易風險識别

事中交易環節,商家風險識别和使用者風險識别所使用的資料有較大的差異。如圖左側所示,我們使用到的資料包括商家、商家行為、商家行為屬性、買家、買家行為、買家行為屬性以及商家與商家之間的關系、買家與買家之間的關系、商家與買家之間的關系。相較于文本序列而言,這是一個複雜的多層序列,同時也是異質的、長度更短的序列。因為關系資料的存在,資料與資料之間實際上聚合成了一個複雜的網絡。是以,在交易風險識别環節主要涉及序列算法和圖算法的工作。

1. 異構序列算法

如上圖所示,當我們想判斷使用者的第二筆交易是否存在風險時,一般先判斷買家是否有問題,再判斷商家是否存在問題,最後結合交易當下的時間、金額等屬性聯合判斷交易是不是存在風險。根據這個思路,我們首先會把買家在這筆交易發生之前的事件屬性抽取出來形成token放到embedding 層産生embedding向量,随後經過concat再放入NN進行後續的識别打分,最後得到一個買家序列風險分。在判斷商家風險時,我們根據商家下的多筆交易及其屬性建構序列,如支付金額序列、支付方式序列等。這些序列embedding後經過concat再輸入到Transformer中。這裡之是以選擇Transformer是因為當交易屬性序列過多時,concat得到的向量會很長,而Transformer自帶self-attention機制,能關注到更重要的部分。通過這種方式我們就得到了商家序列風險分。最後,我們會使用得到的買家風險分、商家風險分和這筆交易的其他特征訓練一個綜合的交易風險模型。

這種方法是商家序列和買家序列的結果融合,并沒有考慮到商家序列和買家序列embedding之間的關聯性。于是我們嘗試在特征層對兩者進行融合。

如上圖所示,我們加入了融合層。對于買家序列和商家序列産生的embedding我們嘗試了concat、self-attention、local-attention這三種不同的融合方式。實驗結果表明local-attention這種僅考慮一定視窗内的attention方式效果最好,且運算複雜度更低。将融合結果輸入到分類模型中去得到的最終結果,相較于上面使用分數融合的方式能将auc提升3%左右。

2. 圖稀疏化算法

序列算法僅解決了一度關系問題,如果我們想在識别時同時考慮二度或三度鄰居節點的特征就需要考慮圖算法。

但當我們把一些學術界的方法,如動态圖這類對計算資源要求較大的算法應用到大規模交易場景時,我們會遇到計算瓶頸問題。同時在風控場景中,圖關系中的大部分節點都是正常的。

使用者和交易,僅有少部分節點對風險識别來說是重要的。于是我們便考慮是否能對圖進行壓縮,減少非重要節點和邊來達到節約計算成本的目的。在這個領域已經有比較多的嘗試。第一種是圖采樣,比如隻看一個節點的二度節點而不考慮其他。還有一種是子圖切割,這種方法将圖切成一個個小圖,然後在小圖中計算,最後将小圖計算的結果合并輸入到下遊任務中。但這兩種方法都會破壞圖的連通性并且在進行抽樣或者切割時并沒有考慮到邊和節點對于下遊任務的影響,即對風險識别的影響情況。由此,我們選擇了更優的圖稀疏化算法。

圖稀疏化算法引入了具體場景的監督資訊,在商家場景的監督資訊是商家曆史上是否存在過風險。商家除了交易關系外,還會有媒體、社交等關系。是以我們會對每種關系分别做稀疏化,實際上就是分别訓練模型,進而得到圖中每個節點對的attention 值,并根據該值截取top N的鄰居節點來完成圖的稀疏化。之是以根據關系的不同類型将圖分成不同的關系網絡分别訓練,是因為其能夠将異質圖問題轉化為多個同質圖問題,這樣簡單的GAT模型就能得到attention值并且多個同質圖可以并行處理提升計算效率。

接着,我們會把得到的多個稀疏化圖彙總成一個異構多關系圖,借鑒HAN思想來獲得節點的通用embedding。在該算法中涉及到兩層attention:第一層關注節點attention,即在不同的關系中鄰居節點的重要性;第二層關注語義attention,即不同的邊關系的重要性。

最後通過兩者的聚合,我們得到節點在異構圖中的embedding。通過第一步的稀疏化,我們減少了邊的數量,也大大縮減了計算資源。同時,也因為其剔除了一定的噪音資料,當我們将第二步得到的embedding應用于下遊識别任務時,能夠在同準确率的情況下提升6%到10%的覆寫。

到此,我們獲得了商家真實性和商家交易風險的識别結果。接下來,我們需要在此基礎上判斷商家是否需要管控,即商家智能決策。

--

03

商家智能決策

通常來說,決策是風控的最後一個環節。一方面,決策是識别結果的生效環節,我們需要關注使用什麼樣的管控方式來防範對應的風險;另一方面,決策是直接影響使用者的環節,我們需要關注管控的方式和強度以保障使用者的體驗。這實際就是風險和體驗平衡的問題。

商家安全算法的道與術:螞蟻集團商家安全防控實踐

這部分主要是一些經驗分享,在做決策模型時我們遇到了很多問題:

第一,模型的疊代效率。

當出現風險漏過或者誤打擾case時,如果是規則就能做出快速調整。而模型需要資料累積、疊代優化與替換這種長周期調整,可能會對業務産生比較大的傷害。是以我們借鑒強化學習的思想,将商家申訴、風險投訴類資訊作為增量樣本對模型進行增量更新。

第二,資料存在偏差。

因決策流量是識别為偏風險的流量,決策模組化并不是建立在全量樣本上,是以資料是有偏的。同時,效果的評價也是有偏的,因為當一筆交易被A處置方式管控時,我們并不能知道其在B管控下的表現。是以我們利用動态流量配置設定的A/B test機制來擷取更多無偏資料和标簽訓練模型。

第三,可解釋性。

由于管控是直接作用于使用者的,當使用者表示質疑時,我們是需要做出解釋的。目前主流的可解釋性是偏解釋特征與最終結果或者标簽的關聯性,而并非因果性。是以,我們希望利用因果推斷算法輸出管控方式推薦的原因。

以上便是商家安全防控工作中的主要内容。

今天的分享就到這裡,謝謝大家。

分享嘉賓:鄭霖 螞蟻集團 算法專家

編輯整理:黃曉琴 位元組跳動

出品平台:DataFunTalk

01/分享嘉賓

鄭霖|螞蟻集團 算法專家

深耕交易安全算法工作多年,涉足反盜用、反欺詐、反賭博、反作弊等領域,目前lead商家風險算法團隊,核心打造商家風險及真實性認知等能力。

02/關于我們

DataFun:專注于大資料、人工智能技術應用的分享與交流。發起于2017年,在北京、上海、深圳、杭州等城市舉辦超過100+線下和100+線上沙龍、論壇及峰會,已邀請超過2000位專家和學者參與分享。其公衆号 DataFunTalk 累計生産原創文章800+,百萬+閱讀,15萬+精準粉絲。

繼續閱讀