閱讀927 返回首頁    go 阿裏雲 go 技術社區[雲棲]


深度學習技術的應用和思考

雲棲TechDay第33期,阿裏巴巴iDST 算法專家遼?帶來題為“深度學習技術的應用和思考”的演講。IDST有兩個比較重要的職能,一是賦能電商,二是利用創新技術來使一些不可能的事情變成可能。在賦能電商部分,本文主要介紹深度學習技術在搜索、推薦和廣告以及銷量預測上的一些應用,第二部分主要介紹了最近做的一些深度學習模型壓縮和加速的工作。

?

以下是精彩內容整理:

賦能電商

搜索推薦

深度學習的優勢在什麼地方?

  • 第一是特征的抽取能力,以圖像領域為例,我們很早之前做圖像分類,我們的做法是拿到一幅圖像,然後手工做它的feature,做好特征之後,再用分類器完成整個圖像的分類,而Deep learning技術來了之後,輸入的仍然是圖像,但是隻需要做好幾個標簽,而提取Feature或者抽象的過程是由Deep learning幫你完成的;
  • 第二是特征組合能力,因為Deep learning有更複雜的網絡結構,而且有很多的非線性部分,所以它的特征組合能力是比較強的。

針對以上的特點,我們利用Deep learning技術。首先在我們的主搜上做了一些應用,我們在這個場景下,設計了一套訓練框架,而針對的是最原始的行為數據,而最原始的行為數據應該就是用戶的點擊購買以及時序行為,然後自動的學習特征產生的對用戶商品和query的精確描述,從而提升GMV。

我們的項目叫representation learning,簡稱就是RepL。用戶搜索的過程,可以抽象成一個用戶然後在搜索框裏麵輸入一條query,然後產生一次點擊或者購買,而之前排序方法大多是基於手工的Feature,比方說用戶的年齡、購買力。

網絡架構

我們采用的方案是輸入全部是ID,對所有的用戶進行編碼,即輸入的是一個one-hot的向量,也就是說輸入的實際上是一個沒有實際意義的一個ID數據。在搜索的場景下,可能很容易會有一億的商品、兩億的用戶,我輸入的就是這樣一個超高維的一個稀疏向量。我們要對向量做一個簡單的處理,會把它做一個編碼,但是輸出仍然是一個非常稀疏的結構。編碼後的向量輸入一個sparse的全連階層,這一層過後,會緊接著有兩層全連接。把用戶、商品和query的全連階層輸出concat在一起,然後又通過了兩層全連接。而學習的目標就是用戶是否點擊和購買了這個商品。

編碼

coding解決的是輸入的超維問題,我們通過coding把輸入的ID做降維,我們有三種的編碼方式:

  • 首先是隨機編碼,比方說是一個2億維的輸入,紅色位置是1,其他位置都是0的,然後通過一個random的projection過程,把2億維編程1000萬維。但是降維向量與2億維向量的區別在於,它是有多個位置可以有值的,這就是隨機編碼的過程。
  • 其次是掛靠編碼,掛靠編碼跟搜索關係比較緊密,搜索裏麵有i2i,用戶同時購買了A商品和商品,那麼B商品的編碼和A商品的編碼應該盡可能的讓它們公用一部分key,就說它們兩個編碼的結果是相似的。
  • 第三是分詞編碼,例如紅色連衣裙,首先把它分詞,分成紅色和連衣裙兩部分,再針對這兩部分編碼。

Sparse full connection layer

輸入雖然也是有多個鍵值,但它還是非常稀疏,比方說它有2千萬維,但是其中可能隻有10個或者20個是有值的,其他大部分都是0,全部計算矩陣計算量是非常大的,我們隻計算有值的部分。通過這個簡單的處理,將原來多機多卡才能解決的問題,變成了一個單機單卡,然後參數規模就變成了原來的二十分之一,而且模型的收斂性是更好的。

Multi-task

模型上線後,我們發現一個問題,一個搜索過程是存在海選和精排的兩個過程的,什麼叫海選呢?比方說我要搜連衣裙,淘寶庫裏有2億的連衣裙,不可能把這2億連衣裙全部展現給用戶,所以我首先要做一個海選,比如把2億的連衣裙變成了一個5千的量級,再對5千的商品做精排。但是我們發現模型上線之後,一些優質商品在海選階段都被去除了,我們針對這種情況就做了一個多任務的結構,將海選分與我們之前點擊和購買的loss,兩個loss同時作用於整個網絡,相當於用一個網絡完成了兩個功能,同時輸出海選分和精排分。

Online learning

我們與搜索的同學一起,針對雙十一大促場景做了針對性優化。雙十一當天的情況是瞬息萬變的,如果不能實時的調整排序策略,這對用戶體驗是比較大的傷害,為了解決這個問題,我們首先引用了一些手工的實時feature,另外我們最後一層網絡是實時更新的,按秒量級的更新模型,實時feature和實時更新模型共同來保證雙十一的效果。

時序模型

我們對於點擊序列也做了一些工作,深度學習當中有一個對時序建模比較好的工具叫ST&M,我們把用戶的行為想象成是一個點擊序列,通過用戶之前的點擊序列來預測用戶下一次的點擊。

綜上所述,通過deep learning算法,主搜的成交額、轉化率、成交筆數在日常和雙十一都有非常顯著的提升,更值得一提是冷門商品提升更加的明顯。

推薦場景

我們與推薦同學一起,在淘寶的詳情頁看了又看做了嚐試。看了又看是手淘所有推薦場景中非常重要的一個大場景,它每天的引導成交額是破億的,其特點是它有一個主商品,而且隻能推薦同店中的其他商品,這就導致它的侯選集實際上是比較小的,所以說優化難度一直以來是比較大的。推薦行為跟搜索差別在什麼地方?在Deep learning看來,搜索和推薦的唯一區別可能就是搜索多了一個query,就是搜索詞,而推薦是沒有的。所以我整個的建模過程就是輸入一個用戶ID和商品ID,然後我就會預測這個用戶要點或者不點這個商品。模型上線之後我們就會發現,無論是客單價還有千次展現的成交金額,都有一個比較好的提升。

我們這套框架可以很好的用在搜索推薦,甚至於用在廣告的場景,因此我們就想把RepL做一些產品化的東西。我們首先用全量的電商數據,基本上包含手機淘寶或者PC淘寶所有的點擊和購買,用這些數據訓練一個模型,產生的是用戶和商品的特征。然後把用戶和商品的特征輸出到各個場景,我們就可以采用常規的機器學習的方法對目標進行優化。這個計算複雜度高的Deep learning隻需要訓練一次,所以說它極大的節省了訓練資源。同時,它能輸出用戶和商品的特征,降低了技術門檻,並不是每個人都需要去搞複雜的Deep learning,你隻做LR或者GPDT就可以利用特征把Deep learning的結果用起來。我們利用這套框架目前對接了主搜索,天貓搜索,店鋪內搜索,以及推薦方麵又接了詳情頁,看了又看,天貓國際,當然,目前我們也是在推廣階段,後麵可能會有更多的業務和場景接入。

?

模型壓縮與加速

深度學習的網絡現在是越來越大,計算複雜度也越來越高,嚴重影響了在手機等智能設備上的應用。

下麵是GoogleNet和一個34層的殘差網絡,你可能覺得這兩個網絡好像都比較複雜,實際上在圖像領域,基本上是一個中等的網絡規模。首先我們要解決模型的大小,第二是模型的計算問題。我們嚐試了一個二值網絡,會把Deep learning所有的參數限製為1或負1,這樣用1BIT就可以存儲原來32BIT需要存儲的東西,它的存儲空間是變成了原來的32分之一。同時,整個網絡的計算完全沒有了乘法,隻有加減,這樣計算速度也非常有明顯加快。如公式所示,我們把它看成了一個優化問題,F(W)就是原始神經網絡的優化目標,可以是你的圖像分類,可以是你的CTR,然後後麵有一個約束,參數必須是1跟負1。

為了解決這個問題,我們利用了ADMM算法,他是解決分布式優化常用的算法。利用上述解法,完成網絡的binary化。無論是圖像、視頻場景,還是電商的多種場景,總體來講效果還是不錯的。這是我們在圖像上做的一些結果,ImageNet是一個標準的圖像分類集,可以看到網絡基本無損。這是另外一個標準的檢測公開集,可以看到我們的算法也基本可以做到無損。速度方麵,無論是手機還是各種嵌入式的平台上,做到了20倍左右的加速,PC機上正在做優化。我們一直覺得,模型壓縮雖然現在還沒有太多的大的落地場景,但這是非常有前景的一個方向,通過我們的努力使得Deep learning網絡在嵌入設備上成為了可能。

?

遼?:阿裏巴巴iDST 算法專家,畢業於中科院,擁有工學博士學位,iDST深度學習組負責人。致力於深度學習技術在商品搜索、推薦、銷量預測、圖像搜索等電商場景的應用和研究。

?

最後更新:2017-05-09 23:31:22

  上一篇:go Redis入門一
  下一篇:go 如何使用OSS更省錢!