摘要:隨着十二點的鐘聲響起,無數人盯着購物車開啓了一年一度的「剁手」之旅。可你有沒有想過這購物狂歡的背後是什麼支撐起了數據規模如此龐大的計算任務?其實不僅是「雙十一」,每個用戶的點擊和瀏覽,每一件寶貝的排序和推薦,還有貼心的「猜你喜歡」,在這背後「操控」一切的「手」又是什麼?本文將帶領你們一探究竟。算法
演講嘉賓簡介:編程
範朝盛(花名:朝聖),阿里巴巴搜索事業部算法專家,北京大學數學與計算機科學博士,2016年加入阿里巴巴,現主要從事推薦系統特徵、模型、架構和大規模機器學習框架的研發工做。數組
如下內容根據演講嘉賓視頻分享以及PPT整理而成。網絡
本次分享的主要圍繞如下三個方面:session
一.業務背景數據結構
二.XPS機器學習平臺架構
三.XNN深度學習算法負載均衡
一.業務背景框架
業務場景和機器學習的問題機器學習
業務場景主要包括三個方面:
(1) 搜索:好比用戶在淘寶中輸入檢索詞,網站則會展現出相應寶貝信息的場景。
(2)廣告:包括搜索廣告,精準定向廣告和品牌廣告等場景。
(3)推薦:將淘寶客戶端網頁從上到下滑動,其中不少場景均爲推薦子場景。
在這些業務場景中蘊含着各類各樣的問題,從技術的角度看,主要的三類問題是經典的數據挖掘問題、圖像問題(低質量圖像的識別、圖像的分類)和語義問題(NLP問題,例如研究檢索詞和寶貝的標題表示)。從上面的簡單介紹中能夠看出,阿里團隊的業務場景較爲複雜,而機器學習在處理這些問題的過程當中所扮演的角色是十分重要的。
對於機器學習,須要建模的問題主要有以下幾種:
(1)點擊率預估:用戶曝光,點擊寶貝後預估點擊率,淘寶所特有的收藏率預估和加入購物車的機率預估,同時還會預估用戶點擊一個寶貝以後進行購買的轉化行爲機率的預估。
(2)點擊質量好壞的預估,這對於爲用戶推薦商品操做極爲重要。
(3)相關性預估:相關性指的是用戶所觸達的商品與用戶真正相關的可能性,好比用戶可能會點擊推薦的熱門商品,但這種商品與用戶之間的相關性係數並不高。
這些問題的解決都須要從用戶行爲數據獲取樣本,阿里團隊會收集用戶日誌,而後從中提取機器學習所須要的特徵,而且加入相應的標籤,例如點擊、收藏、加入購物車等。用戶行爲轉化都是比較直覺的,而對於點擊質量的好壞,則能夠定義用戶停留小於必定的時間屬於一個bad case ,超過必定的時間屬於一個good case,如此來定製標籤。
面臨的挑戰及解決方法
有了用戶數據以後,接下來看一下機器學習過程當中可能要面臨的挑戰。淘寶的機器學習模型要面臨的挑戰主要有三種:
(1)樣本多:在搜索領域已經能夠達到天天幾百億的樣本規模,而在推薦領域好比首頁底部的「猜你喜歡」模塊的樣本也可以達到百億規模。天天百億規模,三個月就能夠達到萬億規模,這樣龐大的樣本數量十分難能難得,一樣也具備很大的挑戰性,阿里團隊就須要設計專用的機器學習平臺來處理解決此類問題。
(2)特徵多:特徵多主要表如今以下幾個方面。首先特徵的屬性很是繁雜,種類多,總量大。整個淘寶網購平臺上有幾億的用戶和十幾億的產品,而用戶的檢索詞也是各類各樣,很是豐富;淘寶天天還會產生幾百億甚至上千億的用戶行爲;而對於用戶屬性,阿里團隊爲用戶繪製了很是詳細的用戶畫像,因此每一個用戶的屬性十分豐富,與此相同,寶貝的屬性也不少。同時,阿里團隊經過阿里基礎特徵服務(ABFS)的框架引入了更多的特徵,該框架大規模地引入了用戶側的實時特徵統計和產品側實時特徵統計。例如用戶最近點擊的一系列的寶貝(可能會有上百個),用戶三天、五天、七天的點擊率的統計,產品的點擊率與轉化率和該產品在兩個小時內被不一樣類型的人羣購買的分佈等等。ABFS同時還引入了用戶在翻頁時上下文的一些特徵,例如用戶翻頁到第三頁時能夠將第二頁的信息能夠實時地推送給用戶,有助於在建模時做爲上下文(context)特徵來使用。此外,在ABFS中還創建了圖像和語義的表示向量,每一張圖片能夠被造成一個向量,每一個標題(title)詞和搜索(query)詞也會造成一個向量,而後加入到機器學習的訓練集之中,因此綜合來看,在基礎屬性已經很是龐大的基礎上,阿里基礎特徵服務又提供了更多的特徵信息,這些特徵通過適當的特徵組合以後,總量很輕易地就可以達到萬億規模,而處理如此規模的訓練數據是一個很是迷人的問題,同時也須要不少特別的設計來方便進行訓練。
(3)計算和存儲資源有限:在有限的資源條件下如何發揮最大效益和充分協調如此多的任務也是阿里機器學習團隊面臨的主要挑戰之一。
爲了應對這些挑戰,阿里團隊創建了一個機器學習的平臺XPS(eXtreme Parameter Server)。該平臺實現了流式學習算法選型,即在XPS平臺上樣本只會通過一次訓練而不會反覆,由於萬億規模的樣本不可能所有加載到內存中進行訓練,因此採用了這種方式。阿里團隊還會盡可能在XPS平臺上開發一些創新型的算法,例如xftrl、xltr、xsvd和xnn等,同時也更鼓勵一些在此平臺上工做的技術人員去開發一些微創新的算法,讓XPS平臺成爲一個專用的大規模機器學習的開發平臺,使其具備本身的特點。在XPS平臺的命名中選取了eXtreme這個詞,蘊含的寓意是追求極致的訓練性能和線上效果,這也是阿里團隊的理想和目標,現在團隊正向着這個目標奮力前進。想要了解整個XPS平臺系統的讀者能夠閱讀下面這篇文章自我學習:《扛過雙11的千億級特徵分佈式機器學習平臺XPS》,文章的連接:https://mp.weixin.qq.com/s/TFTf1-x4s35iebiOEMXURQ 這篇文章對XPS系統做了更加詳細完整的介紹。
二. XPS機器學習平臺
這一部分將爲你們簡要介紹XPS機器學習平臺的總體結構和工程特色。
1.總體結構
首先介紹一下Parameter Server結構,它包括三個部分,分別是Server、Coordinator和Worker,以下圖所示:
其中Coordinator主要用作中心調度控制,完成Server和Worker的分組,當出現failover的狀況時,coordinator能夠對failover進行恢復;Worker主要是讀取數據,計算梯度而且將其發送給server,是比較獨立的一個部分,但Worker不只計算梯度,有時候還會發送一些特徵的曝光點集到Server上進行更新;Server主要用於存儲和更新模型參數,其上存儲了整個須要用做線上預估的模型的全部參數以及這些參數的附加信息,好比梯度、歷史梯度、版本信息和每一個特徵的曝光點等等這些信息都是存儲在Server上的。
當咱們在作ps設計時,一個優雅的ps設計可以讓用戶像單機編程同樣快速開發分佈式程序,這樣作的好處是用戶只須要面對Worker來進行編程,而Server和Coordinator的功能儘可能對用戶屏蔽。XPS的框架設計使得用戶只須要關心Worker上的損失函數和怎樣計算參數的梯度,而對於Server和Coordinator不多涉及,從而方便用戶快速地實現大規模的機器學習的算法。
接下來便進入正題,首先介紹一下XPS的結構圖,以下圖所示:
從圖中能夠看出,XPS的底層數據存儲用到了MaxCompute,同時還包括Streaming DataHub和Kafka這樣的實時數據流;在調度和計算資源層,XPS系統包含了飛天集羣調度和CPU與GPU這些資源的控制,在此之上第三層是XPS整個平臺;在XPS平臺之上是一些對外的算法接口,例如如今提供的XNN、XFTRL、XSVD、XGBOOST和FM等一些算法;最上層的是業務方,業務方能夠經過在ODPS中直接調用算法接口,就能夠拉起XPS系統。
在MaxCompute集羣上,XPS系統能夠高效的利用巨大規模的計算資源和存儲資源。同時XPS系統會推薦使用者搭建近線的流式學習平臺。平臺採用近線的流式學習模式,即儘可能選擇讓曝光流等待點擊流完成以後再產出訓練數據。例如使用者能夠設置在其應用場景內用戶曝光以後5分鐘或者15分鐘以內點擊都算點擊,如此能夠保證曝光和點擊糾正出來的樣本是穩定的。XPS系統一樣支持實時學習模式,經過Streaming DataHub和Kafka來引入實時學習的模式,但在實際應用中基於穩定性的緣由,使用更多的則是近線的流式學習模式;而在強化學習這樣的業務場景下,更多的會採用實時學習模式。
看到這裏,讀者可能會好奇XPS系統的性能表現如何。下面就列舉一些參數來讓你們直觀的看到XPS系統的性能高低:首先XPS系統的通訊性能要比MPI通訊提高數倍,緣由在於XPS系統的底層設計相比於MPI系統更爲優良。另外XPS系統的Server數可以橫向擴展到800個,而每一個Server有40G的內存,而且在此規模下仍然保持良好的收斂性。有經驗的讀者會知道,目前通常的平臺當Server和worker數過多時會帶來一些異步性損失的問題,從而致使模型收斂效果差,甚至不收斂。針對此問題,咱們設計了一套解決異步損失的方案,從而使得worker和server線性擴展。當前XPS平臺能夠在7小時內運行完一個百億規模的DNN模型,這在目前來講是一個比較快的速度。
接下來介紹一下XPS系統的整個數據流轉過程:首先經過一個線上的曝光點擊日誌結合ABFS產生的Session Server的實時用戶特徵,同時結合Item的實時特徵,產出整個數據流,而後傳給ABFS進行數據生產和特徵加工。ABFS會把一條數據變成一條特徵,而後傳送給XPS模型訓練平臺進行模型訓練。在訓練時,咱們引入了一個Test Future的機制,能在訓練的時候把握一個模型的質量,當模型健康的時候將其推送到線上進行部署。而線上採用的是分佈式部署,模型部署完畢以後還會進行打分,打分的同時當一些新的請求發送過來時,咱們同時把用戶的實時特徵、曝光點擊日誌和Item的特徵打印到日誌中去,而後造成一個以下圖所示的循環。整個循環是比較強調「換血」的過程的,即預估時的樣本狀態也就是再次須要訓練的時候的樣本狀態。
2.工程特色
阿里團隊對XPS系統底層作了不少各類各樣的優化,從而使其擁有更好的性能。
(1)首先介紹的是一個多級分區增量訓練的機制,即在MaxCompute中的數據存儲能夠分爲分鐘、小時和天三個級別,這使得用戶在進行模型訓練時能夠動態地選擇分區來進行增量級別的訓練。舉個例子,假如一個用戶訓練一個任務須要三個月的時間,那麼用戶能夠選擇使用天級別的數據分區快速運行完數據,而後部署到線上以後能夠選擇採用小時級別的訓練流程,使其每一個小時產出一個增量的模型來進行部署。當用戶的任務須要緊急調控的時候,能夠適當地選擇分鐘級別的更新來使模型具備更好地實時性。由此看來XPS整個平臺的數據採用了多級分區增量訓練,它具備良好的靈活性,且能夠經過簡單的配置去除不達標的「髒數據」。
(2)第二個特色是流式評估模式(Test-Future-Data),這種評估模式十分有趣。首先介紹一下流式評估模式的概念,能夠拿它與經典的靜態測試來作個比較。傳統的靜態測試分爲兩種,第一種測試方式會採樣必定比例的數據例如20%做爲測試數據,測試的是模型分佈已知的狀況下的數據情況,該測試方式缺陷明顯,當前測試的結果並不能很好的反應和預估將來的測試情況。第二種靜態測試的方式則是Test-LastDay-Data,該方式會訓練N-1天,而後測試第N天,該方式的缺點在於用戶同時調整多個模型時必須使訓練數據徹底固定下來,而後把最後一天看成測試,每次迭代數據都要等待整個過程運行完進行測試。而流式評估模式就是在靜態測試的基礎上進行了必定的擴展,以動態測試爲出發點,在「將來」的數據流上評估整個模型的質量。該評估模式會在訓練過程當中不斷地提取將來的Minibatch做爲測試集進行測試。一個簡單的例子是假設有N個Minibatch,如今已經訓練到第M個,此時能夠指定第M+1個到第M+10個Minibatch做爲一個小測試集來測試整個模型質量。該測試模式的好處是能夠實時反映模型的質量,當模型數據出現問題時,經過準度等指標能夠快速發現問題,從而幫助用戶快速調整參數。而且當用戶忽然發現收斂的模型在線上服務出現問題時,能夠經過查看模型的動態AUC來發現奇異的任務。流式評估模式已經被XPS平臺用戶所熟知和採納,因爲流式測試模式可使用戶實時並行調控多個模型,因此如今的用戶已經習慣於採用這種方便高效的動態測試模式進行測試,而不是用傳統的靜態測試。
讀到這裏可能部分讀者對流式評估模式過程的瞭解仍舊模糊,下面就經過一個直觀圖來展現一下流式評估的過程:
對於T-1時刻的模型,基於流式評估會計算其在T到T+N時刻的數據流的評價指標。這些評價指標包括AUC、PCOPC、MAE和RMSE,其中PCOPC是指整個場景的預估準確率和真實準確率的比值,它表明了機器學習任務的偏度。例如點擊率爲0.5,若預估值爲0.6,則預估偏高;相反,若預估值爲0.4,則預估偏低。在訓練時,用戶經過PCOPC指標能夠發現以前的一些算法的預估值偏度存在必定的問題,而在流式評估模式下,用戶能夠在調參的時候很快地發現這些問題。與此同時,流式評估模式會統計諸如正樣本數、負樣本數和模型規模等指標,從而幫助用戶在整個學習過程當中能夠方便地進行模型的裁剪以及整個場景中樣本的監控。
(3)XPS系統的第三個底層優化是通訊優化,這也是整個XPS系統中最重要的優化。
※小包的問題的優化。
首先介紹一下小包問題,在整個XPS系統中,Worker和Server之間存在很是多的小包交互,每次通訊的信息量在1到2 MB之間,若是Server的數量有100個左右,那麼分配到每一個Server上的參數key分片的大小能夠達到1到10 KB的規模。對於通訊頻率的問題,假設每一個Worker上有四五個數據結構的話,每次的pull和push爲兩次通訊,那麼每一個Worker上的通訊次數就能夠達到8到10次,即每一個batch有2到10次通訊,這樣的通訊頻率是很是高的。這就涉及到一個延遲敏感的問題,在計算和通訊的性能佔比中要儘可能下降通訊所佔的比例,單次通訊要控制在毫秒級,防止拉低整個集羣的效率,從而把更多的性能投入到計算當中去。
對於小包問題的優化方法大概分紅三種。第一種是把通訊請求小包合併成大包,對於dense神經網絡發送梯度時不是每一層都發送,而是把多層梯度合併成一個長向量後進行通訊;而對於sparse特徵組則能夠將多個特徵組合併成一個向量進行通訊,以此來下降通訊的頻率;第二種優化方式是下降Worker和Server端的鎖開銷,Worker端是一個讀取數據而後計算梯度的過程,因此是全鏈路無鎖的;而Server端引入了一個多分片的Actor模式,即每一個線程管理的範圍已知,因此包內無需加鎖,如此以來鎖開銷就會大大下降;最後一種優化的方式下降序列化、反序列化對象的建立和內存拷貝。
※稀疏矩陣通訊優化
在整個XPS系統或Parameter Server架構的通訊中有大量的SparseId(即咱們一般所說的大規模離散ID),這就造成了稀疏矩陣通訊優化的需求,目的是下降內部通訊的頻率。對於這個問題,阿里團隊通過長時間的探索後發現已有的如Google Dense和Google Sparse等類庫均不能知足XPS平臺稀疏矩陣的高頻通訊需求。在此基礎上,XPS系統利用多重數組跳錶的技術實現了自定義的數組哈希表(ArrayHashmap),它採用了realloc和mremap的方式來手工管理內存,目的是爲了保證數組哈希表的鍵(key)和其對應的值(value)分別處於連續的空間中,通俗的解釋就是全部的鍵(key)連在一塊兒,全部的值(value)連在一塊兒,這樣設計的優點顯而易見,在通訊時直接發送內存塊的內容便可,而不須要像傳統的Hashmap同樣在通訊時須要將目標key一個一個提取出來再打包發送,實現了序列化和反序列化的零拷貝。有了稀疏矩陣的通訊優化以後,XPS整個系統的性能獲得了質的飛躍,同時系統對於SDK層面的矩陣進行了封裝並提供了相應的訪問接口,從而使用戶不須要感知底層實現,而且支持string和int64做爲矩陣的索引,使得整個平臺訓練的key既能夠是原始明文也能夠是哈希化以後的對應值,方便開發人員進行調試和不少一次性的測試工做。以上就是XPS系統的總體工程優化的內容,經過這些優化讓整個XPS系統可以在7個小時內完成百億數據規模的訓練,而每一個訓練樣本具備100個特徵。
三. XNN深度學習算法
1.算法思想
在介紹XNN的基本算法思想以前,首先介紹一下XPS算法體系的設計理念:
※若是非必要狀況,無需採樣。對於點擊率較大的場景,儘可能選擇不採樣。由於樣本空間蘊含了全部用戶和產品的各個維度的信息,不採樣可以保持數據和特徵的完整性。由於若是採樣,丟掉的正樣本或負樣本若再次出現對總體現實效果的影響是未知的。經過不採樣,咱們能夠還原每一個特徵在整個數據流中出現的曝光次數、關注次數和點擊次數等信息,並使得這些信息變得可追蹤,使得整個離線訓練時的點擊率、預估的狀況與線上真實的點擊率相匹配,而不存在PCOPC準度偏高或偏低的狀況。
※整個算法體系的設計須要適應千億規模的特徵和萬億規模的樣本。
※模型須要能適應業務的動態性變化。例如阿里「雙十一」期間的各類業務須要進行動態調控,那麼就須要模型可以迅速的提供實時反饋,從而幫助「雙十一」取得更好的成交。
鑑於上述的三個設計理念,阿里團隊創建了有層次的模型體系。其中主要的內容是從XPS系統開發起始至今這一段時間內提出的四個創新的算法:
經過擴展線性算法FTRL並落地業務場景提出了XFTRL算法,該算法對於傳統的線性算法FTRL的各類參數進行了流式的衰減,而且經過指數衰減的方式引入了二正則以免參數忽然偏離的狀況。
經過擴展推薦領域著名的矩陣分解學派算法SVD,在其中引入了SLIM思想,提出了XSVD算法。XSVD算法使傳統的SVD算法可以進行大規模的流式計算。
提出了XLTR算法,而且在其中引入了自動作特徵的過程和多目標學習的特性。
深度優化了經典的神經網絡算法,提出了XNN算法。
下面重點介紹一下XNN算法的設計思想:
從下面的直觀圖中能夠看到整個XNN算法的體系結構。XNN算法的底層是一些離散特徵和組合特徵,造成了每一個特徵或長或短的embedding,長的embedding會分爲二維、四維、八維和十六維,這些特徵concatenate在一塊兒而且作group級別的Reduce_sum,而後再與其餘特徵組和連續特徵好比點擊率等concatenate在一塊兒作聯合訓練,結合在一塊兒的這些特徵會被傳入輸入層進行轉化,這種轉化的目的是將特徵均勻化和標準化,逐層上傳到最上層後通過sigmoid激活函數處理後輸出。另外會有一些blas特徵(用戶在翻頁時的頁面信息)放在上層,由於經過平常測試會發現此類特徵放於XNN算法的底層其效果並不理想。
用戶能夠經過不一樣的算子組件組合出適合不一樣業務場景的XNN變形算法,這種組合就用到了下面將要提到的XNN算子體系結構:
※XNN的初始化算子採用了正態分佈和均勻分佈,而且使用Lazy Initialization的初始化方式,即當用戶使用該特徵時纔會進行初始化,避免過早初始化對性能的沒必要要開銷。
※在優化算子方面,XNN使用了FTRL、AdaGrad、Adam和AmsGrad等算子,而且在原始基礎上作了不少適合多種業務場景的優化。
※因爲在分佈式問題上存在許多異步性的問題,因此XNN算法提出了二階梯度補償和梯度折扣等異步性算子。
※XNN的激活算子採用了ReLU、SeLU和Sigmoid
下圖中展現了XNN算法在Worker端和Server端的僞代碼:
2.XNN算法的優化技巧
(1)輸入層優化
特徵模型化:XNN模型可以自動統計每一個特徵長期、中期和短時間的session統計值,做爲連續值特徵加到輸入層。由於ABFS能統計的維度老是有限的,可是經過特徵模型化(Automatic Session)的方式能夠統計到任何維度的Session而無需打印日誌,你們能夠把它看作是對Session的動態建模。
特徵動態Embedding:在流式學習過程當中,隨着特徵重要性增大,Session的維度會動態增加,以此達到內存動態負載均衡的目的。
輸入層的優化對於整個神經網絡來講是十分重要的,簡單來講就是用好特徵Embedding向量的加減乘除。
(2)Server更新模式優化
Hot Update: 例如用戶登陸後在短期內瀏覽了大量的寶貝(瀑布流瀏覽),那麼此用戶的特徵則是週期性的大量彙集和更新,而後「消失」,在這個過程當中須要避免高頻特徵過分更新的問題。
Lazy Update:對於長尾的特徵,要累計到必定的曝光數再更新,目的是避免長尾特徵得到過多不置信權重而分走過多的長尾權重。
梯度修正:Pull和Push時根據權重值的差異進行梯度修正。
(3)算子優化
在算子優化方面,XNN算法會保持採用一些最新的算子如Adagrad、Adam和AmsGrad等,始終追隨學術界的步伐並對這些最新的算子進行更新優化以便於應用到實際業務場景中去。同時XNN算法還會採用最新的激活函數例如Sigmoid、ReLU、LeakyReLU和SeLU等。
而算子優化中最重要的是流式指數衰減,即每次更新時對全部參數乘以一個相應的衰減值,從而保證最新的樣本得到最大的權重。與此同時,對於點擊率波動較大的場景,能夠週期性地設置每一個分區的啓動學習速率以快速適應數據流的變化。XNN算法還提供了一些能夠靈活修改的算子,充分根據梯度、歷史梯度、歷史更新次數等聯合修正經典算子,其中歷史更新次數是一個很重要的指標,它表明了一個特徵在最近一段時間內的更新狀況,根據這些信息設置置信度和打折率等可以使算子更加適應當前的業務需求。
XNN算子優化遵循「如無必要,無需正則」的原則,因爲樣本分佈具備連續性,因此傳統的訓練集和測試集定義的「過擬合」不適應,對於相隔的樣本能夠看作近似「同分布」,所以適度過擬合效果更好。XNN利用參數指數衰減模式來替代2正則的做用,兼顧了數據的流式特色,同時利用特徵動態擦除模式來替代1正則的做用,保證了稀疏性。
3.XNN的落地實用技巧
(1)特徵的哈希化和動態擦除
在訓練的過程當中,特徵的序列化會耗費許多時間,而特徵的字符串化會佔用不少內存,因此最好採用特徵的哈希化。而訓練中的特徵變化較多,可使用動態擦除的方式來去除一些較弱(如曝光較低)的特徵,以此達到節約內存的目的。在訓練時要保留組合特徵,由於在數據挖掘和深度學習中的組合特徵很是重要,對於持續的長尾優化來講這一點更是如此。
(2)樣本和特徵處理
XNN訓練的樣本務必充分打散,由於未能充分打散的樣本會引起局部過擬合問題。對於特徵的離散化問題,無需過分離散化,只須要保留到小數點後幾位便可。而爲了加強模型的表達能力,則能夠用模型技術批量設計「新特徵」,如Automatic Session。
(3)調參技巧
強烈建議讀者使用Test-Future-Data評估模式,由於該模式能夠監控PCOPC走勢並及時調整訓練的過程,可以極大地加速調參過程。當訓練中不當心引入部分週期性特徵時,須要移除此類週期特徵以免形成PCOPC的波動。訓練時還能夠隨機打印百萬分之一特徵的梯度變化信息到Server端,以便於線上出現問題進行排查。
(4)快速一致性調試和分佈式預估
建議用戶將特徵明文和特徵哈希值均打印出來以便於進行調試,這與線上預估的設計存在必定聯繫。線上預估技術若採用標準分佈式,則模型表會同時保留特徵哈希值和分佈式分列信息,由於分佈式分列信息是動態變化的,因此增長了通訊和存儲的代價;比較快速的方法是基於Map-Reduce手工統計原始特徵和分到哪些組,而後再和產出模型的哈希值做結合後進行分佈式地上線。
(5)服務的動態性
因爲資源和時間有限,因此須要快速響應業務的需求。例如「雙十一」當天,其業務變化十分迅速,須要快速適應業務的變化。能夠經過調整衰減指數和打折力度來加強或者削弱當前樣本的重要性。當樣本因爲近期數據變化幅度較大(換血量過大)而出現「抖動」情況時,能夠經過逐步下降歷史梯度平方的最大值,加快機器學習的速率來適應業務的變化。
(6)快速迭代訓練的建議
用好特徵:如上文提到的分佈式特徵的重要性篩選,同時還須要移除週期特徵,防止引發PCOPC的抖動;加入一些組合特徵,這對於整個模型的點和邊的渲染是很是重要的。
在快速迭代的過程當中可使用模型熱啓動的思想,即老模型的特徵Embedding表達了複用,而新加的特徵對應的神經網絡的邊設置一些初始值,而後直接續跑,好比在短時間內運行新特徵模型,結果也是收斂的,這樣就能夠作到快速上線。
四.總結
XPS團隊打造的系列算法在集團內獲得的普遍的應用,咱們但願用技術去拓展商業的邊界。得益於XPS系列算法,天天數百億級別樣本的場景能夠進行全量不採樣地進行流式訓練,經過實時Session特徵維度拓展特徵體系,使得模型特徵達到千億規模。千億特徵的時代已經到來,讓咱們享受這數據的饕餮盛宴。