多任務(wù)學(xué)習(xí)在風(fēng)控場景的應(yīng)用探索及案例分享
本次分享主題是多任務(wù)學(xué)習(xí)在風(fēng)控場景中的應(yīng)用探索,主要探討什么是樣本選擇偏差問題,如何從多任務(wù)學(xué)習(xí)的角度解決樣本選擇偏差問題,什么是多任務(wù)學(xué)習(xí),多任務(wù)學(xué)習(xí)有哪些優(yōu)點(diǎn)以及常見的解決思路。還會分享本團(tuán)隊(duì)在撈回和文本兩個場景上的應(yīng)用案例,并詳細(xì)介紹我們結(jié)合風(fēng)控場景的特點(diǎn)如何定制化多任務(wù)學(xué)習(xí)方法解決樣本偏差的問題。今天的介紹會按照以下順序展開:
- 風(fēng)控場景中的問題
 - 多任務(wù)學(xué)習(xí)概況
 - 應(yīng)用案例
 - 時序多任務(wù)學(xué)習(xí)方法
 
01 風(fēng)控場景中的問題
1. 風(fēng)控算法的瓶頸
影響風(fēng)控模型效果的主要因素包括:樣本、標(biāo)簽、特征和算法。長期以來,業(yè)務(wù)模型主要關(guān)注前三個因素:
- 如何選擇客群樣本使模型更加穩(wěn)定
 - 根據(jù)業(yè)務(wù)逾期率要求設(shè)計(jì)標(biāo)簽開發(fā)首期、三期模型
 - 對數(shù)據(jù)進(jìn)行特征工程,引入第三方數(shù)據(jù)等?
 
算法上XGBoost、LightGBM等主流樹模型是模型效果的標(biāo)桿,深度模型往往難以超越樹模型。近幾年風(fēng)控算法通過GNN圖神經(jīng)網(wǎng)絡(luò)取得了一些突破,但在落地上還存在一些問題。面對這么多瓶頸,風(fēng)控模型在算法上沒有提升空間了嗎?如果把風(fēng)控模型局限在基于數(shù)值型結(jié)構(gòu)化數(shù)據(jù)的分類任務(wù)上,可能確實(shí)難以提升了,但轉(zhuǎn)化一下思路,能否針對性的對風(fēng)控場景存在的問題設(shè)計(jì)對應(yīng)的解決方法來提高模型效果呢?答案在下文中揭曉。
2. 樣本選擇偏差
?
我們瞄準(zhǔn)的問題是樣本選擇偏差。
在金融信貸中,用戶要先申請,再動支,最終有逾期表現(xiàn),整個過程中,用戶逐步減少。一般來說,大部分用戶的申請都會被拒絕,通過的用戶有一小部分沒有發(fā)起動支,最終有逾期行為的用戶就更少了。常規(guī)建模方法只能用這很小一部分用戶去訓(xùn)練模型,而模型在線上使用的時候,則是面對所有申請用戶。這樣造成了模型訓(xùn)練空間與線上預(yù)測推理空間有明顯偏差。
3. 樣本選擇偏差的影響

模型擬合的是局部,本身便存在偏差,客群發(fā)生變化時,模型效果可能會發(fā)生衰減。
舉一個簡單的例子:如上圖所示,左邊是有偏樣本得到的模型,分類超平面將好人和壞人分開,左邊綠色是好人,右邊紅色是壞人,此時只有一個紅色樣本被分錯了。但放到右邊全樣本空間看,超平面左邊有大量的紅點(diǎn)被認(rèn)為是好人,分類誤差很大,而更好的模型可能是右邊新增的超平面。在現(xiàn)實(shí)情況中,常規(guī)用的樹模型是一個非線性模型,是對空間更復(fù)雜的劃分,相對沒有示意圖這么極端,誤差相對較小。
樣本偏差在迭代過程中會不斷累積。有偏樣本導(dǎo)致模型本身有偏,用有偏模型去篩選用戶,下次用這些用戶再次建模,導(dǎo)致偏差不斷累積,最終通過的用戶越來越偏。
?
樣本選擇偏差還可能會導(dǎo)致建模樣本量太少,尤其是在某些新產(chǎn)品的冷啟動階段。我們以上圖中某一個風(fēng)控產(chǎn)品為例(數(shù)據(jù)經(jīng)過脫敏處理),申請用戶大概70多萬,經(jīng)過授信審批和動支兩個階段后,最終有逾期表現(xiàn)的只有8萬多,在這個量級下還要分訓(xùn)練集、驗(yàn)證集、OOT等就很難得到穩(wěn)定有效的模型。
4. 解決樣本偏差的方法
傳統(tǒng)解決樣本選擇偏差的方法是拒絕推斷。例如硬截?cái)喾?、模糊展開法、雙評分卡法、self-training自訓(xùn)練等,總結(jié)來說是通過不同方法得到拒絕樣本的逾期標(biāo)簽,總體提升較為有限。本身這是一個無中生有的方法,用這些本來就沒有逾期標(biāo)簽的樣本訓(xùn)練,不管什么方法得到的標(biāo)簽誤差都是比較大的。
有沒有方法不需要得到用戶的逾期標(biāo)簽,就能解決樣本選擇偏差問題?我們想到了從多任務(wù)學(xué)習(xí)的視角去解決。拒絕用戶雖然沒有逾期標(biāo)簽,但有通過和拒絕標(biāo)簽,有動支標(biāo)簽,這些標(biāo)簽本身和風(fēng)險(xiǎn)是強(qiáng)相關(guān)的。如果利用這些標(biāo)簽和逾期標(biāo)簽一起訓(xùn)練,則構(gòu)成了多任務(wù)學(xué)習(xí)。且這些標(biāo)簽覆蓋更全,偏差更小,用來輔助逾期模型的訓(xùn)練,可以有效緩解樣本選擇偏差的問題。
02 多任務(wù)學(xué)習(xí)概況
1. 多任務(wù)學(xué)習(xí)定義

?
多任務(wù)學(xué)習(xí),簡單來說是把多個相關(guān)任務(wù)放在一起學(xué)習(xí),通過相互分享、補(bǔ)充領(lǐng)域相關(guān)知識,提高泛化效果。可以將多任務(wù)學(xué)習(xí)理解為知識遷移:單任務(wù)學(xué)習(xí)時,兩個任務(wù)獨(dú)立學(xué)習(xí)各自的模型參數(shù);多任務(wù)模型之間會有部分參數(shù)共享,用來學(xué)習(xí)任務(wù)之間的公共部分,部分參數(shù)不共享,用來學(xué)習(xí)任務(wù)之間有差異的部分。圖中右側(cè)的多任務(wù)學(xué)習(xí)網(wǎng)絡(luò)參數(shù)共享方法是硬共享,所有任務(wù)直接共享公共部分。
2. 多任務(wù)學(xué)習(xí)優(yōu)勢
多任務(wù)學(xué)習(xí)優(yōu)勢在于一個模型可以解決多個任務(wù),比如首期、三期、六期等風(fēng)險(xiǎn)預(yù)測建模都可以通過一個模型解決。此外,利用任務(wù)之間的差異可以增加泛化能力,防止過擬合于某個單一的任務(wù)。通過多任務(wù)模型還可以進(jìn)行知識遷移,提高主任務(wù)的效果。多任務(wù)學(xué)習(xí)可以解決冷啟動問題與主任務(wù)訓(xùn)練困難的問題,如之前所說主任務(wù)樣本少,有相關(guān)樣本量足夠的輔助任務(wù),就可以解決主任務(wù)訓(xùn)練困難的問題。
3. 多任務(wù)學(xué)習(xí)的常規(guī)方法
?
多任務(wù)學(xué)習(xí)的優(yōu)化有幾種,第一種是對共享層改進(jìn)的MoE和MMoE方法。
相對前文所說的硬共享方法,圖中方法稱為軟共享,是指底層參數(shù)并非直接全部共享,而是增加了Expert和Gate兩個模塊,一般稱為專家模塊和門控結(jié)構(gòu)。專家模塊是任務(wù)之間是共享的,但每個專家學(xué)習(xí)到的知識是有差異的,可以理解為每一個專家模塊學(xué)習(xí)到的是各自領(lǐng)域內(nèi)的知識,通過門控結(jié)構(gòu)對多個專家意見加權(quán)求和,得到綜合意見。門控結(jié)構(gòu)可以理解為對專家模塊的信息過濾,假如Expert 0的權(quán)重大,則說明對這個專家意見保留較多。MoE和MMoE這兩種方法區(qū)別在于MoE是多個任務(wù)共享一個gate,而MMoE是每個任務(wù)都有自己的gate,思路上都是對共享層的控制。門控結(jié)構(gòu)是通過注意力機(jī)制來訓(xùn)練。
?
第二種優(yōu)化思路是對輸出層做改進(jìn),典型方法是ESMM。ESMM是阿里針對轉(zhuǎn)化率預(yù)估問題提出的,主要為了解決廣告推薦場景里樣本選擇偏差問題。簡單介紹一下轉(zhuǎn)化率預(yù)估問題:商品在展示后,用戶可能會發(fā)生點(diǎn)擊行為,在點(diǎn)擊之后,用戶可能會發(fā)生購買(轉(zhuǎn)化)行為。轉(zhuǎn)化是在點(diǎn)擊后發(fā)生的,廣告的點(diǎn)擊率一般較低,預(yù)估模型的樣本偏差是非常嚴(yán)重的。ESMM方法巧妙地把轉(zhuǎn)化預(yù)估轉(zhuǎn)為點(diǎn)擊且轉(zhuǎn)化預(yù)估。用戶的點(diǎn)擊是無偏的,但轉(zhuǎn)化是有偏的,引入點(diǎn)擊且轉(zhuǎn)化任務(wù)建模為點(diǎn)擊率*轉(zhuǎn)化率,通過訓(xùn)練點(diǎn)擊和點(diǎn)擊且轉(zhuǎn)化任務(wù),間接訓(xùn)練轉(zhuǎn)化率預(yù)估任務(wù),也就解決了轉(zhuǎn)化率預(yù)估的樣本偏差問題。最終帶入到損失函數(shù)中的是點(diǎn)擊和點(diǎn)擊且轉(zhuǎn)化這兩個任務(wù),轉(zhuǎn)化率預(yù)估任務(wù)不直接放在損失函數(shù)里邊。
除了MMoE和ESMM兩個思路,還有一些多任務(wù)學(xué)習(xí)方法是對目標(biāo)函數(shù)進(jìn)行改進(jìn),不同任務(wù)在一起訓(xùn)練任務(wù)分布、重要性、難度等都也不一樣,對loss直接相加是不合適的。人工trick,可以主任務(wù)給大權(quán)重,輔助任務(wù)給小權(quán)重;難任務(wù)給大權(quán)重,簡單任務(wù)小權(quán)重等。此外還有一些自適應(yīng)動態(tài)調(diào)整權(quán)重的方法或者是給目標(biāo)函數(shù)加約束的方法,這里就不多做介紹了。
03 應(yīng)用案例
1. 多任務(wù)撈回模型
?
撈回模型是指在主模型拒絕的用戶上撈回部分用戶。
我們在常規(guī)實(shí)驗(yàn)中發(fā)現(xiàn),無論是用撈回用戶建模,還是主用戶和撈回用戶一起建模,實(shí)際模型都不太穩(wěn)定。我們思考原因,做了一個形象但不太嚴(yán)謹(jǐn)?shù)拿枋觯褐髂P途拖駡D中的藍(lán)色的圓,撈回模型是在此之外去尋找低風(fēng)險(xiǎn)的人,而外面空間太大了,沒有明確的方向性,能否利用主模型給撈回模型增加一些方向約束,使撈回模型大部分繼承主模型對于風(fēng)險(xiǎn)的判斷,同時擴(kuò)散式的向外召回?
?
我們用多任務(wù)的思路設(shè)計(jì)了通過標(biāo)簽和風(fēng)險(xiǎn)標(biāo)簽這兩個標(biāo)簽,通過標(biāo)簽建模主模型的通過和拒絕,風(fēng)險(xiǎn)標(biāo)簽建模用戶逾期表現(xiàn)。
我們用XGBoost模型的葉子節(jié)點(diǎn)作為特征,通過神經(jīng)網(wǎng)絡(luò)訓(xùn)練多任務(wù)模型,可以類比為XGBoost加LR的結(jié)構(gòu)。
這種做法主要考慮神經(jīng)網(wǎng)絡(luò)對于數(shù)值型的特征擬合并不好,通過xgb預(yù)訓(xùn)練方式增強(qiáng)對風(fēng)險(xiǎn)標(biāo)簽的擬合。中間是兩個任務(wù)共享的全連接神經(jīng)網(wǎng)絡(luò)用來訓(xùn)練多任務(wù)。這不是端對端的模型,是初期對做任務(wù)的一個探索,但最終取得的效果還是很不錯的。右邊是多任務(wù)撈回模型的線上效果圖,在上線一年時間里,常規(guī)模型效果衰減比較嚴(yán)重,多任務(wù)模型效果比較穩(wěn)定。
2. transformer多任務(wù)模型
?
我們第二個應(yīng)用案例是基于文本數(shù)據(jù)的多任務(wù)模型。
此文本數(shù)據(jù)是一個非結(jié)構(gòu)化的數(shù)據(jù),定義了十個標(biāo)簽,包含通過拒絕、借款間隔等。通過多任務(wù)學(xué)習(xí)可以對不同的任務(wù)目標(biāo)進(jìn)行組合,實(shí)現(xiàn)信息互補(bǔ)。具體實(shí)現(xiàn)是通過圖中的Transformer網(wǎng)絡(luò),其中Encoder部分信息是共享的,Classifer部分是獨(dú)立的,相當(dāng)于前問中的tower部分。最終經(jīng)過實(shí)驗(yàn)驗(yàn)證,該Transformer分類模型能夠使這些標(biāo)簽上Auc能提高2個點(diǎn)左右。
04 時序多任務(wù)學(xué)習(xí)方法
1. 多任務(wù)場景分析
?
接下來所講的是我們結(jié)合業(yè)務(wù)設(shè)計(jì)了什么方法去解決樣本選擇偏差問題。
首先風(fēng)控業(yè)務(wù)中的場景分析包含申、請動支、風(fēng)險(xiǎn)表現(xiàn)三個階段。這三個階段是根據(jù)時間上的先后順序?qū)鼍白隽艘幌潞喕?,事?shí)在用戶動支之后還有動支審批、資方審批等階段。申請階段只有一個標(biāo)簽,即通過或拒絕;動支階段可能有多個標(biāo)簽,根據(jù)用戶動支時間和申請時間的間隔分為短間隔、中間隔、長間隔等。風(fēng)險(xiǎn)階段也有多個標(biāo)簽,短期風(fēng)險(xiǎn)中期風(fēng)險(xiǎn)或者是長期風(fēng)險(xiǎn)。
有幾個關(guān)鍵問題是:風(fēng)控建模預(yù)測的是風(fēng)險(xiǎn),風(fēng)險(xiǎn)是主要任務(wù),其他的通過、拒絕和動支作為輔助任務(wù),但一般的多任務(wù)學(xué)習(xí)方法是沒有時序關(guān)系的,如何設(shè)計(jì)一種網(wǎng)絡(luò)結(jié)構(gòu)可以有效利用任務(wù)之間的時序關(guān)系是個關(guān)鍵點(diǎn)。
2. 網(wǎng)絡(luò)結(jié)構(gòu)
?
如圖所示,網(wǎng)絡(luò)結(jié)構(gòu)從下往上分別是共享層,申請、動支、風(fēng)險(xiǎn)三個構(gòu)成的時序tower層,最后是輸出層。與傳統(tǒng)的多任務(wù)學(xué)習(xí)一樣,共享層參數(shù)共享,tower層參數(shù)不共享。不同的是我們創(chuàng)新性的提出了info信息橋部分,用于建模階段間的順序依賴并進(jìn)行信息傳遞。
3. 分層注意力
?
Info信息橋通過分層注意力實(shí)現(xiàn),分層注意力分為兩步,第一步是階段內(nèi)注意力,將動支間隔等內(nèi)部任務(wù)標(biāo)簽學(xué)到的表示向量進(jìn)行聚合;第二步是階段間注意力,是對聚合之后的信息做過濾,在任務(wù)之間對有用信息進(jìn)行有向傳遞,丟棄無用信息。
4. 半監(jiān)督損失函數(shù)
?
我們引入交叉熵正則損失函數(shù)進(jìn)行半監(jiān)督學(xué)習(xí)。?
交叉熵正則是一種簡單有效的半監(jiān)督學(xué)習(xí)方式。目標(biāo)函數(shù)中有標(biāo)簽的用戶會計(jì)算交叉熵?fù)p失函數(shù),沒有標(biāo)簽的用戶計(jì)算交叉熵正則。最終的損失函數(shù)是三個階段的損失函數(shù)通過不同的權(quán)重求和。
5. 實(shí)驗(yàn)效果

與主流的方法對比,本文提出的時序多任務(wù)風(fēng)控建模方法MSIS的Auc增益在2%左右。
?
同時我們通過消融實(shí)驗(yàn)證明了每個網(wǎng)絡(luò)中每個部分都是有效的。
?
最后我們做了參數(shù)敏感性實(shí)驗(yàn),在不同的參數(shù)下,本文提出的方法是較為穩(wěn)定有效的。
05 總結(jié)
總結(jié)來說,本文主要提出了幾種方法解決風(fēng)控場景中的樣本偏差問題。
一是以樣本偏差小的任務(wù)輔助逾期任務(wù)訓(xùn)練;二是通過設(shè)計(jì)網(wǎng)絡(luò)結(jié)構(gòu),實(shí)現(xiàn)多階段多標(biāo)簽任務(wù)的共同訓(xùn)練;三是設(shè)計(jì)信息連廊,通過分層注意力機(jī)制,實(shí)現(xiàn)信息聚合和有效傳遞。
06 Q&A
Q:用全部申請樣本在后標(biāo)簽好壞定義時,沒有動支樣本的target是如何定義的?
A:沒有動支或者通過的樣本在風(fēng)險(xiǎn)階段是沒有好壞標(biāo)簽的,本方法中也不需要給出好壞標(biāo)簽。申請階段中的標(biāo)簽是通過或者拒絕,用全量樣本訓(xùn)練;在動支階段則只用通過樣本訓(xùn)練,動支標(biāo)簽是近多少天內(nèi)是否動支;申請通過且動支的用戶才會進(jìn)入風(fēng)險(xiǎn)階段,產(chǎn)生逾期表現(xiàn),有好壞標(biāo)簽。沒有標(biāo)簽的用戶采用交叉熵正則作為補(bǔ)充算損失函數(shù)。
Q:在申請階段,用本文提出的神經(jīng)網(wǎng)絡(luò)方法怎么去解釋模型?
A:LR和XGB樹模型等相對比較好解釋,神經(jīng)網(wǎng)絡(luò)模型只能借助外部工具進(jìn)行解釋。
Q:本文提出的模型和AITM模型的區(qū)別?
A:不同點(diǎn)有兩個地方:一是AITM的方法只是前后任務(wù)直接傳遞,每個階段只有一個標(biāo)簽,而本文的方法的不同階段可以有多個標(biāo)簽,引入多個標(biāo)簽可以更好地輔助風(fēng)險(xiǎn)任務(wù)的訓(xùn)練。二是交叉熵正則的損失函數(shù)有所區(qū)別。
Q:不同任務(wù)損失函數(shù)融合權(quán)重如何設(shè)計(jì)?
A:可以根據(jù)任務(wù)主次,比如主任務(wù)是逾期任務(wù),其任務(wù)權(quán)重可以嘗試設(shè)大一些,輔助任務(wù)權(quán)重設(shè)小一些。第二個是根據(jù)任務(wù)難易,難任務(wù)可以設(shè)置大一些,比如申請動支的標(biāo)簽易訓(xùn)練,后兩個任務(wù)難訓(xùn)練一些,可以把第一個階段權(quán)重設(shè)小一些,后面任務(wù)權(quán)重設(shè)大一些。
Q:能否詳細(xì)介紹一下交叉熵正則損失?
A:最終的損失函數(shù)是多個階段損失函數(shù)的加權(quán)融合,對每個階段損失函數(shù)展開,包括兩個部分——有標(biāo)簽和無標(biāo)簽。有標(biāo)簽部分的損失采用交叉熵?fù)p失,無標(biāo)簽部分是交叉熵正則損失。交叉熵?fù)p失計(jì)算公式中的P是真實(shí)標(biāo)簽,而交叉熵正則的P是模型預(yù)測的打分。最終訓(xùn)練的結(jié)果是讓模型對無標(biāo)簽樣本的打分穩(wěn)定下來。
Q:在申請、動支、風(fēng)險(xiǎn)三個任務(wù)效果都有變好嗎?是否會有蹺蹺板效應(yīng)?
A:蹺蹺板效應(yīng)是指多任務(wù)學(xué)習(xí)中,某一任務(wù)效果變好了,有其他任務(wù)效果下降了。我們的主要任務(wù)是提高風(fēng)險(xiǎn)階段的AUC,風(fēng)險(xiǎn)階段的AUC較高,申請和動支的AUC稍弱一點(diǎn)我們是可以接受的。
今天的分享就到這里,謝謝大家。















 
 
 

















 
 
 
 