提升深度學習模型預測品質的秘密武器-情境感知數據

PHPz
發布: 2023-04-11 23:28:01
轉載
933 人瀏覽過

譯者 | 朱先忠

審校 | 孫淑娟

在本文中,我想和大家分享我優化深度學習模型輸入資料的方法。作為一名資料科學家和資料工程師,我已經成功地將這項技巧應用於自己的工作中。您將透過一些具體的實際開發案例來學習如何使用上下文資訊來豐富模型輸入資料。這將有助於您能夠設計出更穩健和更準確的深度學習模型。

提升深度學習模型預測品質的秘密武器-情境感知數據

深度學習模型非常強大,因為它們非常善於整合上下文資訊。我們可以透過在原始資料的維度中添加幾個上下文來提高神經網路的效能。我們可以透過一些巧妙的資料工程化來實現這種目標。

當你開發一個新的預測性深度學習演算法時,你可能會選擇一個完全適合你特定使用情境的模型架構。根據輸入資料和實際的預測任務,你可能已經想到了很多方法:如果是打算對圖像進行分類的話,那麼你很可能會選擇卷積神經網絡;如果是預測時間序列或者是分析文本,那麼LSTM網絡可能是個很有前途的選擇方案。通常,關於正確的模型架構的決策主要由流入模型的資料類型決定。

如此一來,找到正確的輸入資料結構(即定義模型的輸入層)就成為模型設計中最關鍵的步驟之一。我通常將更多的開發時間投入到輸入資料的形狀設計上,而不是其他任何事情。需要明確的是,我們不必處理給定的原始資料結構,只需找到合適的模型。神經網路在其內部處理特徵工程化和特徵選擇(「端對端建模」)的能力並不能使我們免於優化輸入資料的結構。我們應該以這樣一種方式為資料服務,即模型可以從中獲得最佳意義,並做出最明智的決策(即最準確的預測)。這裡的「秘密」因素正是上下文資訊。也就是說,我們應該用盡可能多的上下文來豐富原始資料。

什麼是上下文?

那麼,上面我具體說的「上下文」是什麼意思呢?不妨讓我們來舉個例子。瑪麗是一名資料科學家,她正在進行一項新的工作,為一家飲料零售公司開發銷售預測系統。簡而言之,她的任務是:給定特定的商店和特定的產品(檸檬水、柳橙汁、啤酒…),她的模型應該能夠預測該產品在特定商店的未來銷售量。預測將應用於數百家不同商店提供的數千種不同產品。到目前為止,系統一直都還運作得很好。瑪麗的第一天是去了銷售部,那裡的預測工作已經完成了,儘管是由經驗豐富的銷售會計彼得斯手動完成的。她的目標是了解這位領域專家基於什麼樣的基礎來決定未來某一特定產品的需求量。作為一名優秀的數據科學家,瑪麗預計彼得斯多年的經驗將非常有助於定義哪些數據可能對模型更有價值。為了找到答案,瑪莉問了彼得斯兩個問題。

第一個問題:「你是透過分析什麼數據來計算下個月我們將在柏林的商店裡銷售多少瓶特定品牌的檸檬水?你是如何解釋這些數據的?」

彼得斯回答:「隨著時間的推移,我們在柏林的檸檬水銷售上邁出了第一步」。隨後,他繪製了以下圖表來說明他的策略:

提升深度學習模型預測品質的秘密武器-情境感知數據

#在上圖中,我們看到有一條連續的曲線,在7月/8月(柏林夏季時間)出現高峰。夏季氣溫較高,人們更喜歡吃點心,所以產品的銷售量會增加,這一點很直觀。在較小的時間尺度上(大約一個月),我們看到銷售額在大約10件商品的範圍內波動,這可能是由於不可預測的事件(隨機雜訊)導致的。

彼得斯繼續說:「當我看到夏季銷售額增加而冬季銷售減少的重複模式時,我認為這也極有可能在未來發生,因此就根據這種可能性來估計銷售額。」這聽起來很有道理。

彼得斯是在時間上下文中解釋銷售數據的,其中兩個數據點的距離由它們的時間差定義。如果資料不按時間順序排列,那麼很難解釋。例如,如果我們只查看直方圖中的銷售分佈,則時間上下文將丟失,我們的最佳未來銷售估計值將是一些合計值,例如所有值的中位數。

當資料以某種方式排序時,上下文就會出現。

不用說,您應該在正確的時間順序為您的銷售預測模型提供歷史銷售數據,以保存來自資料庫的「免費」上下文。深度學習模型非常強大,因為它們非常善於整合上下文訊息,類似於我們的大腦(當然,在本例中是彼得斯的大腦)。

你有沒有想過:為什麼深度學習對於影像分類和影像物件偵測如此有效?因為普通的影像中已經存在著許多「自然」的上下文:影像基本上是光強度的資料點,依兩個背景維度排列,也就是x方向的空間距離和y方向的空間間距。而作為動畫形式的電影(圖像時間序列),它又添加了時間作為第三個上下文維度。

因為上下文對預測非常有利,所以我們可以透過添加更多的上下文維度來提高模型效能——儘管這些維度已經包含在原始資料中。我們透過一些巧妙的資料工程化方法實現了這一點,如接下來要介紹的。

我們應該以這樣一種方式來服務數據,即模型可以從中獲得最佳意義,並做出最明智的決策。我通常將更多的開發時間投入到輸入資料的形狀設計上,而不是其他任何事情。

設計上下文豐富的資料

讓我們再回到瑪莉與彼得斯的討論問題。瑪莉知道,在大多數情況下,真實數據看起來並不像上面的圖表那麼好,所以她稍微修改了一下圖表,如下所示:

提升深度學習模型預測品質的秘密武器-情境感知數據

##瑪莉問的第二個問題是:「如果最後一個銷售數據點高於平常的噪音水平怎麼辦?這可能是一種真實的情況。也許該產品正在進行一場成功的行銷活動。也許配方已經改變,現在味道更好了。在這些情況下,效果是持久的,並且未來的銷售將保持在相同的高水平。或者可能只是由於隨機事件而出現的異常。例如,一個參觀柏林的學校班級學生碰巧走進商店,所有的孩子都買了一瓶這種檸檬水品牌。在這種情況下,銷售增長額並不穩定,只能算是噪音數據。在這種情況下,你如何決定這是否會是真正的銷售效果呢?」

你可以看到彼得斯在回答之前不斷地撓頭:「在這種情況下,我關注的是與柏林類似的商店的銷售情況。例如我們在漢堡和慕尼黑的商店。這些商店具有可比性,因為它們也位於德國主要城市。我不會考慮在農村的商店,因為我期望那裡有不同口味和偏好的不同顧客。」

他將其他商店的銷售曲線與兩個可能的場景相加。 「如果我看到柏林的銷量成長,我認為這是噪音。但是,如果我看到漢堡和慕尼黑的檸檬水銷量也在增長,我希望這會是一個穩定的效果。」

提升深度學習模型預測品質的秘密武器-情境感知數據

因此,在一些相當困難的情況下,彼得斯會考慮更多的數據,以便做出更明智的決策。他在不同商店的上下文中添加了一個新的數據維度。如上所述,當資料以某種方式排序時,上下文就會出現。要建立一個商店上下文,我們首先必須定義一個距離度量值,以便相應地從不同的商店訂購資料。例如,彼得斯根據商店所在城市的大小來區分商店。

透過運用一些SQL和Numpy程式技巧,我們就可以為我們的模型提供類似的上下文。首先,我們要了解我們公司商店所在城市的人口規模;然後,我們根據人口差異來衡量所有商店之間的距離;最後,我們將所有的銷售數據組合在一個2D矩陣中,其中第一個維度是時間,第二個維度是我們的商店距離指標。

提升深度學習模型預測品質的秘密武器-情境感知數據

圖中的銷售矩陣提供了最近檸檬水銷售的良好概括,由此產生的模式也可以直觀地得到解釋。看看銷售矩陣左下角的數據點:這是柏林最近的銷售數據。注意,那個亮點很可能是一個例外,因為類似的商店(例如漢堡)不會重現銷售額的急劇增長。相較之下,7月份的銷售高峰是由類似的商店再現的。

因此,我們總是需要加入一個距離指標來建立上下文。

現在,我們將彼得斯的說法轉化為數學術語,可以根據產品所在城市的人口規模來建模。在新增的上下文維度時,我們必須非常仔細地考慮正確的距離指標。這取決於我們想要預測的實體受到影響的因素。影響因素完全取決於產品,必須相應地調整距離指標。例如,如果你看看德國的啤酒銷售,你會發現消費者很可能會從當地的啤酒廠購買產品(你可以在全國各地找到大約1300家不同的啤酒廠)。

來自科隆的人通常會喝庫爾施啤酒,但當你開車半小時向北前往杜塞爾多夫地區時,人們會避開庫爾施,轉而喝更黑、麥芽味更濃的阿爾特啤酒。因此,在德國啤酒銷售的情況下,透過地理距離來模擬商店距離可能是一個合理的選擇。然而,其他產品類別(檸檬水、柳橙汁、運動飲料…)的情況並非如此。

因為我們添加了一個額外的上下文維度,我們創建了一個上下文豐富的資料集,在該資料集中,潛在的預測模型可以獲得不同時間和不同商店的檸檬水銷售概況。這使得模型可以透過查看最近的銷售歷史並左右查看其他地點的類似商店,對柏林商店的未來銷售做出明智的決定。

從這裡開始,我們可以進一步新增產品類型作為附加的上下文維度。因此,我們使用其他產品的數據來豐富銷售矩陣,這些數據根據它們與檸檬水的相似性進行排序(我們的預測目標)。同樣,我們需要找到一個好的相似性指標。可樂比柳橙汁更像檸檬水嗎?我們可以根據什麼數據定義相似性排名?

在商店的情況下,我們有一個連續的衡量標準,那就是城市的人口。現在我們正在處理商品類別。我們真正想找到的是與檸檬水有類似銷售行為的產品。與檸檬水相比,我們可以對所有產品的時間分辨銷售數據進行互相關分析。透過這種方式,我們獲得了每個產品的皮爾森相關係數,它告訴我們銷售模式有多相似。可樂等軟性飲料的銷售模式可能與檸檬水相似,夏季銷售量會增加。其他產品的行為將完全不同。例如Gühwein,這是一種在聖誕市場上供應的溫暖甜美的葡萄酒,在12月可能會有強勁的銷售高峰,而在今年餘下的時間裡幾乎沒有銷售。

【譯者註】時間分辨(time-resolved):物理或統計名稱。與之相關的另一些常用詞是時間分辨診斷測量(time-resolved diagnosis)、時間分辨光譜(time-resolvedspectrum)等。

提升深度學習模型預測品質的秘密武器-情境感知數據

交叉相關分析將顯示Glühwein葡萄酒的皮爾森係數較低(實際上是負的),而可樂的皮爾森係數較高。

儘管在銷售矩陣中添加了第三個維度,但我們可以透過將第二個維度以相反的方向連接起來來包含產品上下文。這樣就將最重要的銷售數據(柏林檸檬水銷售)放在了中心位置:

提升深度學習模型預測品質的秘密武器-情境感知數據

#添加更多特徵

提升深度學習模型預測品質的秘密武器-情境感知數據

########################### #雖然我們現在有一個資訊非常豐富的資料結構,但到目前為止,我們只有一個特徵:在特定的時間特定的商店中為特定產品銷售的產品數量。這可能已經足以進行穩健和精確的預測,但是我們還可以從其他資料來源添加額外的有用資訊。 ######例如,飲料購買行為很可能取決於天氣。例如,在非常炎熱的夏天,對檸檬水的需求可能會增加。我們可以提供天氣資料(如氣溫)作為矩陣的第二層。天氣資料將在與銷售資料相同的上下文(商店位置和產品)中訂購。對於不同的產品,我們將獲得相同的空氣溫度數據。但是,對於不同的時間和商店位置,我們將看到還是存在差異的,這可能會為數據提供有用的信息。 ##################

如此一來,我們就擁有了一個進一步包含銷售額和溫度資料的三維矩陣。需要注意的是,我們沒有透過包含溫度資料來添加額外的上下文維度。正如我之前指出的,當資料以某種方式排序時,上下文就會出現。對於我們建立的資料上下文,我們根據時間、產品相似性和商店相似性對資料進行排序。然而,特徵的順序(在我們的例子中,是指沿著矩陣的第三個維度)是不相關的。其實,我們的資料結構與RGB彩色影像相當。在RGB影像中,我們有兩個上下文維度(空間維度x和y)和三個顏色層(紅、綠、藍)。為了正確解釋影像,顏色通道的順序是任意的。一旦你定義了它,你就必須保持它的順序。但是對於在特定上下文中組織的數據,我們沒有距離指標。

總之,輸入資料的結構並不是預先能夠決定的。因此,我們應該充分發揮自己的創造力和直覺來挖掘新的可行性指標了。

總結

透過向時間分辨的銷售資料添加兩個附加上下文和一個附加的特徵層,我們獲得了具有兩個「通道」(銷售和溫度)的二維“圖片」。此資料結構提供了特定商店最近檸檬水銷售的綜合視圖,以及來自類似商店和類似產品的銷售和天氣資訊。到目前為止,我們創建的資料結構非常適合由深度神經網路進行解釋——例如,包含多個卷積層和LSTM單元。但限於篇幅,我不打算討論如何以此為基礎開始設計一個合適的神經網路。這可能是我的後續文章的主題了。

我希望你能夠擁有自己的想法,雖然你的輸入資料的結構可能不是預先決定的,但你可以(應該)發揮你所有的創造力和直覺來擴展它。

一般來說,情境豐富的資料結構可不是免費提供的。為了預測公司所有門市的各種產品,我們需要產生數千個上下文豐富的銷售概況資訊(每個門市產品組合一個矩陣)。您必須投入大量的額外工作來設計有效的處理和緩衝措施,以使資料成為您需要的形式,並為後續的神經網路快速訓練和預測週期提供所需的資料。當然,這樣一來,你會得到一個期望的深度學習模型,它可以做出準確的預測,即使在高噪聲數據下也能表現得非常穩健,因為它可以看起來能夠“打破常規”,並做出非常明智的決定。

譯者介紹

朱先忠,51CTO社群編輯,51CTO專家部落格、講師,濰坊一所大學電腦教師,自由程式設計界老兵一枚。

原文標題:Context-Enriched Data: The Secret Superpower for Your Deep Learning Model,作者: Christoph Möhl

以上是提升深度學習模型預測品質的秘密武器-情境感知數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:51cto.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!