1. 程式人生 > 遊戲攻略 >《艾爾登法環》奧利緹斯魔法師塔進入方法 睿智獸物在哪

《艾爾登法環》奧利緹斯魔法師塔進入方法 睿智獸物在哪

嵌入(embedding)的想法來自於NLP(word2vec)

在這篇文章中,我們將討論機器學習中的兩個問題:第一個問題是關於深度學習如何在影象和文字上表現良好,並且我們如何在表格資料中使用它。第二個問題是你在構建機器學習模型時必須問自己的問題:在這個資料集中,我如何處理分類變數?

令人驚訝的是,我們可以用同樣的答案來回答兩個問題:實體嵌入(entity embeddings)。

在許多方面,深度學習的表現都優於其他機器學習方法:影象識別、音訊分類和自然語言處理只是其中的一些例子。這些研究領域都使用所謂的“非結構化資料”,即沒有預定義結構的資料。一般來說,這些資料也可以作為一個序列(畫素、使用者行為、文字)進行組織。在處理非結構化資料時,深度學習已經成為標準。最近的一個問題是,深度學習是否也能在結構化資料上表現最好。結構化資料是以表格形式組織的資料,其中列表示不同的特性,而行代表不同的資料樣本。這類似於如何在Excel表中表示資料。目前,結構化資料集的黃金標準是梯度提升樹模型(Chen & Guestrin, 2016)。在學術文獻中,它們總是表現得最好。最近,深度學習表明,它可以與結構化資料的這些提升樹模型的效能相匹配。實體嵌入在這方面起著重要的作用。

結構化和非結構化資料

實體嵌入

在將神經網路與結構化資料進行匹配時,實體嵌入已經被證明是成功的。例如,在Kaggle(大資料競賽平臺)的競賽中,預測出租車行駛距離的獲勝的解決方案使用實體嵌入來處理每一輛車的分類元資料。同樣,德國大型超市Rossmann預測商店銷售的第三解決方案使用了一種比第一和第二解決方案更復雜的方法。該團隊通過使用一個簡單的前饋神經網路和實體嵌入來實現這種成功。這包括超過1000個類別的變數,比如store id。

簡而言之,嵌入指的是向量的類別表示。讓我們來看看它是如何在短句中奏效的:

‘Deep learning is deep’

我們可以用一個向量來表示每個單詞,所以“deep”這個詞就變成了像是[0.20, 0.82, 0.45, 0.67]這樣的變數。在實踐中,一個人可以用像1 2 3 1這樣的整數替換單詞,並使用查詢表來查詢與每個整數相關的向量。這種做法在自然語言處理中非常常見,並且也被用於包括行為序列的資料。實體嵌入指的是在分類變數上使用這一原則,即一個分類變數的每一個類別都由一個向量表示。讓我們快速回顧一下在機器學習中處理分類變數的兩種常用方法。

  • 獨熱編碼:建立二進位制的子特性,如word_deep, word_learning, word_is。這些是屬於該資料點的類別為1,其他的則為0。因此,對於“deep”這個詞來說,特性word_deep將是1,特性word_learning和word_is等將是0。
  • 標籤編碼:像我們在前面的例子中那樣分配整數,所以deep變成1,learning變成2等等。這個方法適用於基於樹型結構的方法,但不適用於線性模型,因為它意味著所賦值的順序。

實體嵌入基本上是將標籤編碼方法提升到下一個級別,不只是將一個整數賦值給一個類別,而是整個向量。這個向量可以任意大小,必須由研究人員指定。下面列出了3個實體嵌入的優點。

1. 實體嵌入解決了獨熱編碼的缺點。具有多個類別的獨熱編碼變數會導致非常稀疏的向量,這在計算上效率很低,而且很難達到優化。標籤編碼也解決了這個問題,但是隻能被基於樹型結構的模型使用。

2. 嵌入式資料提供了不同類別之間距離的資訊。使用嵌入的美妙之處是,在神經網路訓練過程中,分配給每個類別的向量也被訓練。因此,在訓練過程的最後,我們會得到一個代表每一個類別的向量。這些經過訓練的嵌入式裝置可以被視覺化,從而為每個類別提供深入的見解。在Rossmann的銷售預測任務中,德國各州的視覺化嵌入顯示了類似的各州的地理位置的叢集。儘管這些地理資訊都沒有提供給模型。

3. 經過訓練的嵌入式裝置可以在非深度學習模型中被儲存和使用。例如,每個月都可以訓練分類特性的嵌入,並儲存嵌入的特性。這些嵌入可以被用來訓練一個隨機森林或者一個梯度提升樹模型,通過載入被學習的嵌入物來進行分類特性。

選擇嵌入的大小

嵌入大小指的是表示每個類別的向量的長度,並且可以為每個類別特性設定。與神經網路中超引數的優化過程類似,對於選擇嵌入的大小沒有嚴格的規則。在出租車距離預測任務中,研究人員使用了每個特性為10的嵌入大小。這些特性有非常不同的維度,範圍從7(每週的天數)到57106(客戶id)。為每個類別選擇相同的嵌入大小是一種簡單而透明的方法,但可能不是最優的方法。

對於Rossmann商店的銷售預測任務,研究人員選擇了1到M(類別的數量)-1的值,最大的嵌入大小為10。例如,每週的一天(7個值)的嵌入大小為6,而store id(1115個值)的嵌入大小為10。然而,沒有明確的規則來選擇1和m-1之間的大小。

Kaggle的前主席和首席科學家Jeremy Howard重建了Rossmann競爭的解決方案,並提出了以下解決方案來選擇嵌入尺寸:

# c is the amount of categories per feature
embedding_size = (c+1) // 2
if embedding_size > 50: 
    embedding_size = 50

視覺化嵌入

嵌入的優點是可以將所學到的嵌入進行視覺化,以顯示哪些類別是相似的。最流行的方法是t-SNE,它是一種用於維數減少的技術,可以很好地利用高維性來視覺化資料集。讓我們用兩個快速的視覺化嵌入例子來結束這篇文章。以下是家得寶(美國家居連鎖店)產品及其所屬類別的視覺化嵌入。類似的產品,如烤箱、冰箱和微波爐,彼此非常接近。對於像充電器、電池和鑽頭這樣的產品也是如此。

家得寶產品的嵌入

另一個例子是在這篇文章中提到的Rossmann銷售預測任務中,德國各州的狀態嵌入。在嵌入中這些相鄰的州接近於它們的地理位置。

德國各州嵌入的例子

本文為atyun出品,轉載請註明出處。更多內容關注微信公眾號atyun_com 或訪問網站www.atyun.com