工程师如何解决穿衣搭配烦恼?
?
阿里妹導讀:作為一名工程師,每天與代碼打交道,往往沒有時間注意自己的打扮。試想,如果身邊出現(xiàn)一位有品味的搭配高手,為你量身打造形象,豈不美哉?
如今,阿里工程師們推出了一個滴搭平臺,基于千萬時尚達人的優(yōu)質(zhì)搭配,已經(jīng)學習出了一套比較成熟的算法,幫你找到最合適的穿搭。不信?下面一起來深入了解“滴搭”背后的算法。
前言
自從去年“鹿班”AI設(shè)計師完成了1秒8000張海報的壯舉,團隊的小伙伴們開始思考如何讓海報變得更加美觀豐富。其中一部分同學嘗試用AI產(chǎn)出更加豐富的圖文內(nèi)容,成為陳列師、內(nèi)容運營的好幫手,這部分工作,取名“滴搭”。
滴搭,是圖文算法平臺化運維的一次大膽嘗試和穩(wěn)定落地。它以深度學習網(wǎng)絡(luò)為基礎(chǔ),以開放式的生產(chǎn)平臺為載體,賦能運營、賦能達人,支撐以多商品搭配形式為主的圖文內(nèi)容生產(chǎn)。從2017年2月開始,滴搭的算法技術(shù)陸續(xù)在淘寶、天貓的多個業(yè)務(wù)上落地,橫跨多個行業(yè),并在大促中承擔使命;輔助數(shù)萬名達人生產(chǎn)搭配幾千萬套,覆蓋商品數(shù)百萬,服務(wù)商家數(shù)十萬。
滴搭在三個方面做出了貢獻:
下面,我們來詳細地介紹滴搭平臺。
一、滴搭平臺簡介
滴搭是運營前臺、算法平臺、合圖平臺、個性化投放等等多個平臺和算法的統(tǒng)一稱謂。
運營在前臺做完選品,經(jīng)過深度圖像處理和搭配算法,學習出可搭配商品的特征表示。當一件或多件商品作為觸發(fā)請求搭配時,可以從百萬級的商品庫中找出與之可搭配的、符合一定運營規(guī)則的其它商品,并根據(jù)觸發(fā)商品和產(chǎn)出商品的信息,生成描述性標題。最后經(jīng)過智能排版技術(shù),合成符合視覺審美的展現(xiàn)形式。生成好的搭配經(jīng)過推薦算法,個性化地投放給用戶。以下為滴搭后臺的部分效果展示:
?
滴搭平臺經(jīng)歷了幾次較大的算法改版,現(xiàn)在基于淘內(nèi)的優(yōu)質(zhì)搭配已經(jīng)學習出了一套比較成熟的算法。除了保證一套搭配中的個體風格、顏色、配飾等等做到貼合,滴搭還吸取了運營、達人的經(jīng)驗,嚴格按照成套規(guī)則進行產(chǎn)出,例如在服飾領(lǐng)域,上衣+下衣是合理的,但是下衣+裙裝是不合理的;在登山場景,帳篷+手電筒+登山服是一個合理的組合,而燒烤架不是必須。
接下來,我們將重點介紹滴搭的算法。由于我們涉及的行業(yè)很廣,圖文算法的應用業(yè)務(wù)非常多,為了更好地聚焦于算法本身,以下介紹若無特別說明,將以服飾行業(yè)的搭配業(yè)務(wù)為例。
二、滴搭算法
滴搭需要完成搭配圖片生成、搭配描述生成兩部分工作,因此我們分別在圖、文上設(shè)計算法框架。底層的數(shù)據(jù)是公用的,包括商品圖片、商品標題、運營輸入以及其他side information。在這個數(shù)據(jù)之上,我們先完成搭配圖片的生成,再對該搭配進行文本描述。
在圖搭配的算法中,我們用CNN(Convolutional Neural Networks)進行圖片預處理,以DSSM(Deep Semantic Similarity Model)作為基本框架,在此基礎(chǔ)上嘗試了兩種搭配邏輯算法:第一種是基于LSTM(Long Short Term Memory)的序列化搭配生產(chǎn),第二種是基于DAN(Deep Aggregated Network)的無序列化搭配生產(chǎn)。在產(chǎn)出圖搭配后,我們將產(chǎn)出結(jié)果結(jié)合文案輸入語料,輸入文案描述模型CPGN(Context aware Pointer-Generator Networks),產(chǎn)出文本描述。最終的結(jié)果里包含圖文內(nèi)容,是搭配的整體化描述。
?
以下我們將分別介紹圖文算法。
2.1 圖搭配算法
★ 2.1.1 相關(guān)工作
服飾類搭配在近些年的學術(shù)圈有了比較快速的發(fā)展。生成一套搭配,總體上有兩種思路:
在這些工作中,[1]試圖給一套搭配打分,使用基于深度學習的多模態(tài)、多實例作為特征,質(zhì)量分作為標簽。[2]用雙向LSTM網(wǎng)絡(luò)模擬搭配的序列化過程,可以生產(chǎn)搭配、或者給一套搭配打分。[3]雖然不是服務(wù)于搭配業(yè)務(wù),但它將圖像和文本結(jié)合起來,利用搭配里商品風格相近的原則,學習出商品的風格表示。[4]用到了蒸餾網(wǎng)絡(luò)的方法,將Teacher-Student網(wǎng)絡(luò)巧妙地嫁接在特征表示后,使得搭配能夠遵循知識圖譜規(guī)約。
這些文章在學術(shù)上都給予我們很多啟發(fā),但是目前,據(jù)我們所知,在電商平臺還沒有一個完全智能化的搭配平臺,可以在線實時地產(chǎn)出內(nèi)容并進行投放。線上生產(chǎn)的難點,一是數(shù)據(jù)量非常龐大,二是對于可投放的質(zhì)量要求極高。滴搭吸取了前人工作的優(yōu)點,并在網(wǎng)絡(luò)核心(DAN)和向量對齊(DSSM)兩方面做出了獨創(chuàng)性的工作。這兩個網(wǎng)絡(luò)在拿到更好效果的同時,也解決了數(shù)據(jù)龐大和線上效果保證兩大難題。
滴搭的整體框架是第二種方法。我們選擇深度學習方法作為模型基礎(chǔ)的原因是,深度學習的發(fā)展使得網(wǎng)絡(luò)的高層特征已經(jīng)能夠比較詳盡地涵蓋圖片的多種信息。比如我們對白底圖的CNN高維向量進行K-means聚類,會發(fā)現(xiàn)相同形狀和風格的圖片聚在一起。這使得我們有信心可以利用深度學習網(wǎng)絡(luò)的高層特征直接進行計算。另一方面,滴搭不是專門為某一行業(yè)定制的平臺,專家知識無法跨行業(yè)通用,且目前除了幾個大行業(yè)之外,很多行業(yè)并沒有開源出足夠豐富的知識圖譜。為了滿足線上業(yè)務(wù)要求,滴搭又融合了專家知識作為約束條件,因此對于結(jié)果具有部分解釋性。
★ 2.1.2 準備工作
數(shù)據(jù):我們最開始的訓練數(shù)據(jù)來源于Polyvore網(wǎng)站,該網(wǎng)站下有大量用戶提交的搭配樣例,并且提供其他用戶點贊和評論。在遷入淘內(nèi)業(yè)務(wù)后,我們收集了淘內(nèi)達人產(chǎn)出的幾十萬套優(yōu)質(zhì)搭配,對訓練數(shù)據(jù)進行了重新整理。
特征表示:首先,我們需要對商品進行表示化。最直接能展現(xiàn)一個商品信息的來源是其圖片,我們依靠鹿班千萬級的白底圖庫,對進入商品池的商品抽取特征。這里我們用的是CNN技術(shù),具體模型為inception v3。具體做法如下:
- 以類目作為label,對pre-trained模型進行fine-tune,抽取倒數(shù)第二層的向量表達作為該商品的圖片表征。
- 將第一步的所有圖片的向量表示進行帶類目約束的K-means聚類。考慮到搭配中的類目關(guān)系以及不同類目下商品數(shù)量分布的不同,我們針對性地對K-means做了優(yōu)化,使得聚類結(jié)果更加集中且分布平衡。一個類目下會有多個聚類結(jié)果,聚類結(jié)果用cluster表示。該步驟后,每個商品都被聚類到其中一個cluster下。
- 將第二步得到的cluster作為label,重新用inception v3進行fine-tune,抽取高維向量表達作為最終的圖片特征。
在CNN的基礎(chǔ)上增加K-means的原因在于,我們希望圖像上相似的圖片能在向量表示上有更加接近的距離。而CNN在K-means之后的分類結(jié)果也的確比最開始得到了提升,視覺上更加相似。聚類后結(jié)果部分展示如下:
?
此外,由于圖片有時候并不能涵蓋所有信息,我們加入了side information作為信息補充。目前加入的side information包括商品的類目和風格。
★ 2.1.3 模型一:基于LSTM的序列化搭配生產(chǎn)
?
首先,我們將準備工作中通過CNN得到的高維向量,和side information的向量,經(jīng)過embedding和stacking的變換,作為模型的輸入層。
其次,輸入向量經(jīng)過一層MLP,分成兩路:一路進入LSTM網(wǎng)絡(luò)進行序列化學習,一路進入進入DSSM網(wǎng)絡(luò)進行向量對齊。
?
?
DSSM網(wǎng)絡(luò):我們希望可搭配的商品在向量空間上具有更接近的距離,于是參考了DSSM網(wǎng)絡(luò)的方法。我們從線上日志和優(yōu)質(zhì)搭配兩方面獲取正向樣本,即收集日志里點擊率高的搭配和達人高質(zhì)量的搭配樣例,拆成pair對,作為DSSM網(wǎng)絡(luò)的正向樣本;同時將線上點擊率低的搭配作為負向樣本。
?
?
?
其中,sim函數(shù)采用的是cosine相似度,θ表示參數(shù),目標是最大化Δ。在GPU上,我們用mini-batch SGD來優(yōu)化θ。
★ 2.1.4 模型二:基于DAN的無序化搭配生產(chǎn)
我們在LSTM模型一的基礎(chǔ)上完成了第一版的投放,效果還是不錯的。在后續(xù)的研究中,我們發(fā)現(xiàn)了一個更好的模塊:DAN,在以上的框架圖中,它僅僅將LSTM模塊做了替換,其他部分保持不變。我們看到了更低的loss和更好的輸出結(jié)果。
DAN的核心在于,它將搭配看成一個組合模式,而不是序列模式。在日常生活中,我們會給上衣搭配褲子,也會給褲子搭配上衣,因此在訓練LSTM網(wǎng)絡(luò)的時候,我們其實需要構(gòu)造兩條不同順序的訓練數(shù)據(jù):上衣+褲子,褲子+上衣。而在DAN網(wǎng)絡(luò)中,上衣和褲子是無序列差別的輸入,它們以組合的形態(tài)輸入網(wǎng)絡(luò)中。
如下圖所示,同一套搭配的訓練數(shù)據(jù)在經(jīng)過CNN和side-information embedding之后,輸入到DAN網(wǎng)絡(luò)。首先經(jīng)過非線性變化,變化后的向量進入池化層。我們嘗試了sum-pooling和max-pooling,發(fā)現(xiàn)sum-pooling有更好的結(jié)果。
?
DAN網(wǎng)絡(luò)在訓練的過程中,獲得了比LSTM更低的loss。且在訓練數(shù)據(jù)構(gòu)造中,不再需要考慮全排列,而只需要組合數(shù)據(jù)就夠了。訓練數(shù)據(jù)的減少大大縮減了訓練時間,使得周期性迭代模型成為可能。
★ 2.1.5 基于context graph的預測過程
怎樣稱為一套搭配?運營往往有不同的定義。女裝的運營可能認為,上衣+下衣+鞋是一套完整搭配,裙裝+配飾+包是一套完整搭配,而連衣裙和牛仔褲是一定不能同時出現(xiàn)的。又或者,家居的運營希望,一個臥室的場景里需要有床、床頭柜、燈具、壁畫,缺了其中一個都不是一個合格的臥室搭配。實際上線過程中,運營往往還有場景氛圍的需求,對于風格、季節(jié)等等有額外的限制。如何將運營的訴求傳遞給搭配算法,我們設(shè)計了context graph來解決這個問題。
context graph是結(jié)構(gòu)化的運營規(guī)約,包括類目搭配的約束、風格的約束、季節(jié)的約束,等等。在搭配預測階段,所有商品池的商品和它們的side-information經(jīng)過Embedding、Stacking和全連接之后,存入商品池(item pool)。以DAN網(wǎng)絡(luò)為例,當一個活動發(fā)起請求時,作為觸發(fā)的商品經(jīng)過DAN網(wǎng)絡(luò),如果不考慮約束,則我們會將MLP的輸出結(jié)果到商品池中去做向量檢索(sim search),獲取下一個商品。如果考慮約束,則根據(jù)context graph的規(guī)約,先在向量檢索的基礎(chǔ)上做一層過濾,僅讓滿足運營規(guī)約的商品作為預測結(jié)果的候選集,再在候選集里挑出TopK。在每產(chǎn)出一個搭配商品之后,算法重新計算當前滿足的搭配約束情況,推動下一個商品的產(chǎn)生及圈定新的候選集。
我們將context graph打包到模型里,因此搭配的預測過程是完全實時的。context graph保證了成品率,即每一套產(chǎn)出的搭配都符合運營的輸入條件,降低了人工篩選的成本。
?
2.2 文本算法
★ 2.2.1 相關(guān)工作
隨著深度網(wǎng)絡(luò)的發(fā)展,文本應用在近兩年有著非常迅速的落地。在機器翻譯、閱讀理解、摘要生成等文本工作中,sequence-to-sequence的框架被廣泛應用,為不同應用目的而設(shè)計的attention網(wǎng)絡(luò)也蓬勃發(fā)展。
我們將文案生成看成一個摘要生成問題,原始輸入語料可以是商品原始標題、商品其他信息等等,而文案需要在原始語料中抽取出關(guān)鍵信息,進行總結(jié)甚至拓展描述。Pointer-Generator網(wǎng)絡(luò)(PGN)[6]做到了這一點。它本質(zhì)上是一個encoder-decoder加attention的混合模型,但通過一個平衡參數(shù),使得模型既可以從原始語料中抽取文字(pointing),也可以生成原始語料中沒有的新詞(generator)。[7]同樣采用了encoder-decode加attention的基本框架,但是通過蒙特卡洛采樣縮小了目標詞庫,提升效果的同時也加快了預測速度。
在我們的場景下,除了從原始語料中生成,運營往往還會增加一些額外需求。比如運營希望文案的描述中有偏向性,突出風格,突出顏色,或者突出利益點,我們稱為搭配tag。因此這部分我們也作為輸入,加入到attention網(wǎng)絡(luò)中。
★ 2.2.2 準備工作
數(shù)據(jù):我們用達人搭配的幾十萬搭配描述作為訓練數(shù)據(jù)。訓練數(shù)據(jù)的輸入為商品的標題、搭配tag,訓練數(shù)據(jù)的輸出為達人撰寫的標題。我們將詞作為基本單位。
★ 2.2.3 CPGN模型
在PGN的基礎(chǔ)上,我們加入了運營輸入信息,使得文案、商品、運營要求三者之間建立強關(guān)聯(lián),因此新方法命名為CPGN,其算法框架如下:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
三、滴搭工程平臺
3.1 算法平臺XTF
為了能讓整個滴搭平臺真正面向運營,我們需要一個穩(wěn)定、能支持快速迭代和實時計算的機器學習平臺來支撐我們訓練模型以及在線輸出。為此,我們參與了工程團隊的共建工作——基于Porsche blink的分布式Tensorflow訓練及在線打分平臺,我們稱該平臺為XTensorflow,簡稱XTF。在這個平臺上,滴搭涉及到的LSTM模型、CNN模型、CPGN模型、DAN模型天級別地訓練與更新,快速響應訓練數(shù)據(jù)的變化;在線預測過程中,共建了CNN的實時打分、context graph的實時查詢、DSSM的實時檢索,使得業(yè)務(wù)的實時響應成為可能。
?
3.2 智能排版平臺
算法生成的搭配最終投放給用戶,圖片的美觀非常重要。這里面急需解決多商品的排版問題,包括大小比例、順序、頁面留白等等。鹿班團隊在合圖工程上有著多年的經(jīng)驗,我們共建了搭配商品的排版工作,完成了成圖的最后一步。
滴搭布局算法支持設(shè)計師上傳模板,也可以根據(jù)積累的模板進行合圖匹配。
四、滴搭業(yè)務(wù)實例
滴搭的圖文算法本身是很底層且通用的,它可以應用于所有擁有多商品邏輯關(guān)系的行業(yè),可以投放于所有有場景定義的業(yè)務(wù)中。我們在日常業(yè)務(wù)和大促業(yè)務(wù)中都有過很多次的合作與嘗試,接下來將重點介紹幾個。
4.1 iFashion搭配
iFashion是一個以搭配為主要心智的場景。無論是在內(nèi)容質(zhì)量本身,還是視覺呈現(xiàn),iFashion都很好地承接了圖文算法的產(chǎn)出。我們周期性地為iFashion的選品產(chǎn)出圖搭配和文字描述,極大地補充了原僅有達人搭配的池子。算法搭配和達人搭配在瀑布流中混排,個性化地推薦給用戶。算法搭配參與生產(chǎn)的優(yōu)勢包括成本低、成品效果好、轉(zhuǎn)化數(shù)據(jù)高等等。
?
4.2 手淘首焦
手淘首焦是一個強運營需求區(qū)塊,一張焦點圖背后是一個活動頁,展現(xiàn)內(nèi)容包括該活動下的商品圖片以及文案。我們的推薦算法會給用戶千人千面的展現(xiàn),即在個性化投放中,我們會給每個用戶投放他感興趣活動下的感興趣內(nèi)容。在圖文算法產(chǎn)生之前,我們僅僅對活動下的單個商品做了個性化,而且文案還是固定不變的。
我們嘗試了服飾行業(yè)的多商品搭配,搭配的組合態(tài)使得首焦的圖片展示更加豐富,不再拘泥于單商品的模式。
?
我們也嘗試了多行業(yè)的文案生產(chǎn)。以下圖為例,傳統(tǒng)的做法,運營輸入固定文案,包括主文案:運動健身狂歡購,副文案:大牌精選好貨鉅惠,以及利益點:搶大額券。固定文案千篇一律,很容易被忽視。在我們的模型中,原始語料是商品標題、描述、屬性等等(該例中,是瑜伽磚頭的相關(guān)信息),運營輸入的是文案詞和利益點(該例中,運營輸入了精選好貨、大牌、狂歡購等等關(guān)鍵詞)。最后產(chǎn)出的智能文案,主文案:瑜伽磚頭精選好貨(分別從商品標題和運營輸入中抽詞),副文案:大牌鉅惠滿就減(從運營輸入中抽詞,并衍生出了“滿就減”)。由于我們產(chǎn)出的文案能夠和商品、活動一一對應,因此文案上也是千人千面的,不但描述了用戶感興趣的這個商品,還突出了活動的特點,使得個性化的效率得到了提升。
在首焦的圖文生產(chǎn)上,我們在CTR和UCTR上都拿到了超過兩位數(shù)的提升。
?
4.3 有好貨
有好貨是首頁流量主力頻道,其主打的“好貨”心智深入人心。目前的版本中,由于排版的限制,達人生產(chǎn)的標題有的太長,顯示不全,有的由于截斷,表述不清,非常影響用戶對商品的信息讀取。我們和有好貨合作,利用文案算法,對標題進行重新抽取,在限制長度的情況下提取重點信息,幫助用戶更好地決策。
?
五、未來工作
我們的算法工作、工程工作是緊跟著業(yè)務(wù)發(fā)展的,所以很多的想法也是深入了解業(yè)務(wù)之后思考建設(shè)起來的。接下來也有一些想要嘗試的方向:
歡迎與我們交流
阿里巴巴推薦算法團隊目前主要負責阿里電商平臺(包括淘寶、天貓、海外版淘寶、Lazada等)的商品及feeds流推薦,其中手機淘寶首圖個性化、猜你喜歡、購買鏈路等場景每天服務(wù)數(shù)億用戶,涉及流量效率提升、用戶體驗、提高商家及達人參與淘寶的積極性,優(yōu)化商業(yè)生態(tài)運行機制。
歡迎熱愛算法,對業(yè)務(wù)有好奇心,有合作精神的同學一起工作、成長。簡歷可投郵箱:pipei.hpp@alibaba-inc.com
參考文獻:
[1]Li Y, Cao L, Zhu J, et al. Mining fashion outfit composition using an end-to-end deep learning approach on set data[J]. IEEE Transactions on Multimedia, 2017, 19(8): 1946-1955.
[2]Han X, Wu Z, Jiang Y G, et al. Learning fashion compatibility with bidirectional lstms[C]//Proceedings of the 2017 ACM on Multimedia Conference. ACM, 2017: 1078-1086.
[3]Tautkute I, Trzcinski T, Skorupa A, et al. DeepStyle: Multimodal Search Engine for Fashion and Interior Design[J]. arXiv preprint arXiv:1801.03002, 2018.
[4]Song X, Feng F, Han X, et al. Neural Compatibility Modeling with Attentive Knowledge Distillation[J]. arXiv preprint arXiv:1805.00313, 2018.
[5]Gardner A, Kanno J, Duncan C A, et al. Classifying Unordered Feature Sets with Convolutional Deep Averaging Networks[J]. arXiv preprint arXiv:1709.03019, 2017.
[6]See A, Liu P J, Manning C D. Get to the point: Summarization with
pointer-generator networks[J]. arXiv preprint arXiv:1704.04368, 2017.
[7]Wu Y, Wu W, Yang D, et al. Neural Response Generati
on with Dynamic Vocabularies[J]. arXiv preprint arXiv:1711.11191, 2017.
?
每天一篇技術(shù)文章,
看不過癮?
關(guān)注“阿里巴巴機器智能”微信公眾號
發(fā)現(xiàn)更多AI干貨。
總結(jié)
以上是生活随笔為你收集整理的工程师如何解决穿衣搭配烦恼?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 疫苗事件发生后,阿里工程师连夜做了一件小
- 下一篇: 因为阿里,他们成了“杭漂”