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