黃賀
摘 要:在電商網(wǎng)站上,往往需要為賣家所銷售的物品提供一個可以參考的售價。基于深度學習技術構建了一個電商網(wǎng)站的商品自動定價模型。模型能夠根據(jù)賣家所提供的商品數(shù)據(jù),同時考慮其中的結構化和非結構化的數(shù)據(jù),來為商品生成建議的售價。使用日本最大的C2C二手交易平臺提供的數(shù)據(jù)來訓練模型,并使用RMSLE作為我們模型的評價指標,結果顯示模型能夠有效學習商品信息與真實售價的映射關系,具有很高的實用價值。
關鍵詞:深度學習;定價模型;循環(huán)神經(jīng)網(wǎng)絡
中圖分類號:TB 文獻標識碼:Adoi:10.19311/j.cnki.1672-3198.2019.09.095
1 深度學習的發(fā)展
人工神經(jīng)元網(wǎng)絡(Artificial Neural Network,ANN)是模擬生物神經(jīng)網(wǎng)絡進行定義的,是由大量神經(jīng)元彼此連接而構成的自適應非線性動態(tài)網(wǎng)絡系統(tǒng)。早在20世紀40年代心理學家Mc Culloch和數(shù)理邏輯學家Pitts提出的第1代模型——MP模型。為神經(jīng)元網(wǎng)絡的研究做了鋪墊。到了20世紀50至60年代,Rosenblatt在MP模型的基礎之上又繼續(xù)研究,增加了自動學習的功能,提出了單層感知器模型,第一次將神經(jīng)網(wǎng)絡的研究開始應用到現(xiàn)實生活中來。不過,處理方式相對單一,針對線性不可分問題沒法進行處理。直至20世紀80年代,誤差逆?zhèn)鞑ヴ叻聪騻鞑ゾW(wǎng)絡(Back Propagation Network,BP網(wǎng)絡)被科學家Rumelhar提出,此BP網(wǎng)絡的提出解決了原來單層感知器沒法解決的問題。再后來,各種淺層機器學習模型都先后被提出,再到21世紀初期,Hinton等人提出了多隱層的人工神經(jīng)網(wǎng)絡具有優(yōu)異的特征學習能力,而且可通過“逐層預訓練”來解決深層神經(jīng)網(wǎng)絡在訓練上的問題。
自此,深度學習(Deep learning)的研究成為最集中的研究方向,這使得人工神經(jīng)網(wǎng)絡得到了廣大人民的響應。結合深度學習的逐層預訓練算法中的自動學習應用于網(wǎng)絡每一層的預訓練,再加上有監(jiān)督學習(BP算法)微調(diào)預訓練好的網(wǎng)絡。
目前,帶自動學習的包含有深度置信網(wǎng)絡(DeepBelief Network,DBN)、卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)等。2016年初:谷歌旗下人工智能公司深靈(Deepmind)開發(fā)的AlphaGo以5:0戰(zhàn)勝了歐洲衛(wèi)冕冠軍,讓所有人為之震驚。AlphaGo主要采用價值網(wǎng)絡(value networks value)、策略網(wǎng)絡(policy network)來自動學習算法并同時選擇下棋步法,這兩種網(wǎng)絡均通過神經(jīng)網(wǎng)絡模型來實現(xiàn),AlphaGo的成功,標志著人工神經(jīng)網(wǎng)絡已經(jīng)具備高模仿、自動學習、自動處理并決定行為的潛能。
2 神經(jīng)網(wǎng)絡與人工神經(jīng)網(wǎng)絡
深度學習概括來說是一套基于ANN的學習算法,它可以通過從海量的數(shù)據(jù)中通過輸入項拆分并梳理出諸多隱性的元素,通過多維度標簽進行對數(shù)據(jù)分類,獲取有參考價值的匯總信息,來提供市場借鑒和決策。比如CNN算法是由圖片像素點RGB 值可以學習到圖片的內(nèi)部特征,這些特征包括圖片總的的實物、數(shù)字、顏色、數(shù)量等。深度學習的算法提高了人工的效率,之前需要人工手動完成的特征收集基本都可以通過深度學習的人工神經(jīng)網(wǎng)絡來完成。深度學習基本包括三個方面:人工神經(jīng)網(wǎng)絡、卷積神經(jīng)網(wǎng)絡和循環(huán)神經(jīng)網(wǎng)絡。
卷積神經(jīng)網(wǎng)絡(Convolutional Neural Networks) 的神經(jīng)網(wǎng)絡結構是多層的,最核心的部分包括卷積層、池化層;最終是有連接層將此兩層進行聯(lián)通的,每一層神經(jīng)網(wǎng)絡各自獨立。CNN的好處是算法中的各層局部相互獨立,同時參數(shù)共享,這樣大大減少了環(huán)節(jié)中的參數(shù)量,提高了處理效率。CNN最初是二維圖像處理算法,結合池化層,圖像的平移、傾斜、縮放、其輸出項不會發(fā)生變化。Lecun 等人最初提出CNN 神經(jīng)網(wǎng)絡也正是方便圖像處理,即圖像輸出項盡可能不受外在需求的改變而影響,處理過程更為高效而簡單。
3 商品自動定價模型
為什么需要商品自動定價模型(跟前面的內(nèi)容差不多)。
通常人們很難確定一件商品的具體售價是多少,特別是對于二手商品等一些難以有完全相同的商品可以參照的情況下。許多的因素都會對一個商品(特別是二手商品)的售價產(chǎn)生影響。例如,一個商品的品牌、產(chǎn)地、原材料、設計等眾所周知的特性。此外,如服裝等商品還會受到季節(jié)、時尚潮流等影響,而對于PlayStation等電子產(chǎn)品在不同的地區(qū)會有巨大的價格差異。除此之外,商品的新舊、賣家的描述也會對商品的實際賣出價格產(chǎn)生很大的影響。因此,對于一個電商網(wǎng)站的賣家而言,特別是二手交易平臺的賣家,很難確定自己想要賣出的商品的合理售價是多少。這時候一個能夠根據(jù)賣家商品信息為商品生成參考定價的價格模型就有其存在的合理性和必要性。而本文的主要工作,也著眼于利用二手交易平臺的商家提供的商品的信息來為商品提供指導價格。而一件商品的信息,往往包括了結構化和非結構化的數(shù)據(jù),如商品的品牌、新舊、品類等都屬于結構化數(shù)據(jù),而商品的標題、商品描述等數(shù)據(jù)則屬于非結構化數(shù)據(jù)。為了能夠更充分的利用商品的各項信息,我們的模型應當能夠同時考慮其中的結構化和非結構化數(shù)據(jù),特別是,實際情況中往往個人商家只會提供一些商品描述等非結構化信息,我們的模型還應該能夠從這樣的非結構化數(shù)據(jù)中抽取出前面所提到的一些結構化信息作為特征。我們的模型由人工神經(jīng)網(wǎng)絡、循環(huán)神經(jīng)網(wǎng)絡等網(wǎng)絡作為模塊組成整個商品的自動定價模型,下面我們將分別介紹人工神經(jīng)網(wǎng)絡、循環(huán)神經(jīng)網(wǎng)絡和我們的商品定價模型。
3.1 人工神經(jīng)網(wǎng)絡
人工神經(jīng)網(wǎng)絡是深度學習中常用的一種最簡單,也是最基本的模型結構,我們這里將講簡要介紹人工神經(jīng)網(wǎng)絡的基本原理。
一個常見的人工神經(jīng)網(wǎng)絡架構如圖所示,這個神經(jīng)網(wǎng)絡架構分為了輸入層、隱藏層和輸出層。顧名思義,在輸入層,我們?yōu)槿斯ど窠?jīng)網(wǎng)絡輸入數(shù)據(jù),這里的數(shù)據(jù)一般指的是結構化的數(shù)據(jù)。在隱藏層和輸出層,我們進行計算并輸出計算的結果。在神經(jīng)網(wǎng)絡的隱藏層上,存在著將輸入進行線性變換并使用激活函數(shù)進行激活的神經(jīng)元。這里假設我們由M個輸入的變量構成的向量x∈R1×M,神經(jīng)網(wǎng)絡由N個神經(jīng)元,最終只有一個輸出變量y∈R1×1。那么在輸入層的數(shù)據(jù)進入隱藏層的時候,神經(jīng)網(wǎng)絡是進行下述運算的:
其中,矩陣W連接著輸入層與隱藏層,這里做的是矩陣乘法,實際上也可以看作是一個對輸入進行的線性變換。之后,每個神經(jīng)元都會在線性變換的基礎之上加上一個常數(shù)b0,這個常數(shù)也被稱為偏置。在完成了這些運算之后,我們得到向量z,神經(jīng)元接下來使用激活函數(shù)進行激活運算:
σ(z)∈R1×N
這里面的σ(·)就是我們所說的激活函數(shù)。常見的激活函數(shù)由sigmoid函數(shù)、tanh函數(shù)和relu函數(shù)等,不同的激活函數(shù)會在不同的模型下表現(xiàn)不同的性能。使用何種激活函數(shù)往往是構建深度學習模型中需要調(diào)整的一項超參數(shù)。
在完成了前面的計算之后,我們得到了隱藏層的輸出,并進一步開始計算。在從隱藏層到輸入層的計算中,首先也是一個矩陣乘法,我么這里記做θ∈RN×1。然后,在完成如下計算后,加上偏置即得到了最后的輸出y:
上面的計算也可以寫成一個完整的運算:
其中各個矩陣的維度如下:
在我們的商品自動定價模型和其他很多實用的模型中,人工神經(jīng)網(wǎng)絡并不單獨使用,而是與其他的網(wǎng)絡結構相結合。
3.2 循環(huán)神經(jīng)網(wǎng)絡
20世紀80年代,Williams等人提出循環(huán)神經(jīng)網(wǎng)絡(Recurrent Neural Network,RNN)的概念。上面之前文章所講述到的神經(jīng)網(wǎng)絡為全連接的,即層與層是全連接的,每層是沒有連接的,這樣導致某些處理沒法完成。例如,在輸入句子詞匯過程中,后一個詞匯的出現(xiàn)往往依賴前面詞匯信息。RNN是能夠建模序列數(shù)據(jù)不同時刻之間的依賴關系,所以在機器翻譯、語音識別、圖標標注等方面,奠定了更為廣泛的使用價值。
由于RNN的最大特點在于神經(jīng)網(wǎng)絡各隱層之間的節(jié)點是具有連接和關聯(lián)的,它能夠獲取之前輸入項的隱層輸出從而判斷當前隱層的輸出,用大眾的理解說來說就是人工的記憶功能。RNN支持任意長度的序列數(shù)據(jù)建模,但隨著輸入項的歷史時間長度,往往RNN建模時只記錄最近幾次的歷史狀態(tài)來完成,來減少建模的復雜度,如圖2為典型的RNN結構。
將RNN 展開可以看到,它的特征是所有層共享相同權值、并且深度前饋。然而,實際研究中發(fā)現(xiàn),普通的RNN結構存在梯度消失問題,這樣的話,學習數(shù)據(jù)之間的長程依賴關系問題是沒法解決的。針對這個問題,經(jīng)過長期研究,一些為解決此問題的RNN的變種相繼出現(xiàn),其中最著名的包括:長短時記憶網(wǎng)絡(Long Short-TermMemory,LSTM)、門限循環(huán)單元(Gated Recurrent Unit,GRU)。LSTM和GRU采用了特殊的隱層結構,特殊的隱層單元的長期狀態(tài)被增加保存,從而長程依賴關系的問題被有效解決了,因此,此方法為廣泛的循環(huán)神經(jīng)網(wǎng)絡模型。
3.3 商品自動定價模型的網(wǎng)絡結構
我們的商品自動定價模型的模型架構圖如圖3所示,其中包含了大量的輸入數(shù)據(jù)和對于不同輸入數(shù)據(jù)的相應建模,我們將逐層介紹我們模型的計算過程。
輸入層:模型的輸入層包含多種商品的信息,包括:商品的標題,商品的描述、商品品牌、商品的成色、商品是否包郵、商品描述的文字長度、商品標題的文字長度、商品的一、二、三級分類。其中,商品的標題和商品的描述是賣家輸入的文本數(shù)據(jù),屬于非結構化數(shù)據(jù)。商品的品牌、成色、是否包郵、商品的三級分類都屬于結構化的數(shù)據(jù)。此外,我們還手工構造了商品的描述長度和標題長度作為額外的特征,并發(fā)現(xiàn)這兩個特征能幫助模型更有效的學習。這兩個特征也屬于結構化數(shù)據(jù)。
嵌入層:為了能夠統(tǒng)一處理不同類型的數(shù)據(jù),我們對于輸入的結構化和非結構化的數(shù)據(jù)都進行了嵌入操作。具體的說,對于商品描述和商品標題這樣的非結構化數(shù)據(jù),我們實際輸入的是數(shù)據(jù)分詞后每個單詞的索引,嵌入層能將每個單詞的索引轉化為對應的詞向量。而對于結構化數(shù)據(jù)我們也進行相同的操作,如對于是否包郵這一特征,會有0和1兩種取值,則嵌入層則分別將0和1轉化為兩個不同的嵌入向量。
雙向GRU:對于商品標題和商品描述,在每個單詞都轉化為具體的詞向量后,我們將詞向量序列依次送入雙向GRU來對其中的文本語義來進行建模。對于兩個雙向GRU的輸出,我們會去其他輸入數(shù)據(jù)的詞嵌入進行拼接得到一個完整的矩陣,并使用人工神經(jīng)網(wǎng)絡進行特征的提取和組合。
人工神經(jīng)網(wǎng)絡:我們使用深度人工神經(jīng)網(wǎng)絡對前面雙向GRU的輸出和其他輸入數(shù)據(jù)的嵌入矩陣進行特征的提取和組合。
4 實驗
4.1 數(shù)據(jù)集
我們使用的數(shù)據(jù)集來自Mercari,日本最大的C2C二手交易平臺。該數(shù)據(jù)集意在讓數(shù)據(jù)科學家們根據(jù)其中的成交記錄作為樣本訓練模型,并為其他的二手交易賣家提供商品的參考售價。數(shù)據(jù)會被我們劃分為訓練集和測試集。在測試集上,我們使用的評價標準是RMSLE(Root Mean Squared Logarithmic Error)。計算公式如下:
數(shù)據(jù)的樣本示例如圖4。
4.2 實驗細節(jié)與結論
對于商品標題和商品描述,我們設定了10和75作為截斷長度,少于截斷長度的將使用0作為填充,大于截斷長度的數(shù)據(jù)將會被截斷,它們對于的詞嵌入向量分別為20和60。對于商品品牌名、商品的三級分類使用長度為10的嵌入向量。對于商品描述長度和標題長度分別使用長度為5的嵌入向量。對商品名和商品描述的語義進行建模的雙向GRU的隱藏態(tài)長度分別為16和8,對于深度人工神經(jīng)網(wǎng)絡的神經(jīng)元數(shù)量分別為512、256、128、64和1。訓練模型使用的優(yōu)化器為sgd,使用均方差損失作為損失函數(shù)。模型共訓練2輪,batch為1536。
我們將數(shù)據(jù)分為訓練集和測試集兩個集合,訓練集有146萬條樣本,測試集由1萬4千條樣本。經(jīng)過測試,我們的模型能夠在測試集上RMSLE損失為0.45。
5 結論與展望
本文中我們根據(jù)電商網(wǎng)站提供的真實數(shù)據(jù)構建了一個商品自動定價模型,并在測試集上的RMSLE指標上取得了很好的結果。我們主要貢獻在于:
(1)使用真實數(shù)據(jù)構建了一個商品自動定價模型,由很高的實用性。
(2)模型能夠同時考慮商品信息中的結構化和非結構化的數(shù)據(jù),使用神經(jīng)網(wǎng)絡學習到其中的深層次映射關系。在接下來的工作中,我們會考慮更加復雜的模型,加入預訓練的詞向量方式來進一步提高我們模型的性能。
參考文獻
[1]黃立威,江碧濤,呂守業(yè),等.基于深度學習的推薦系統(tǒng)研究綜述[J].計算機學報,2018,41(07).