在機(jī)器學(xué)習(xí)的廣闊前景中,transformers 就像建筑奇跡一樣高高聳立,以其復(fù)雜的設(shè)計(jì)和捕獲復(fù)雜關(guān)系的能力重塑了我們處理和理解大量數(shù)據(jù)的方式。
自 2017 年創(chuàng)建第一個(gè) Transformer 以來,Transformer 類型呈爆炸式增長,其中包括 ChatGPT 和 DALL-E 等強(qiáng)大的生成式 AI 模型。雖然transformers 在文本到文本或文本到圖像模型中非常有效,但將transformers 應(yīng)用于時(shí)間序列時(shí)存在一些挑戰(zhàn)。在 2023 年北美開源峰會(huì) 上,Ezequiel Lanza 分享了 transformers 模型的問題,并介紹了新的 transformers ,這些 transformers 開始在時(shí)間序列方面顯示出有希望的結(jié)果。
這篇文章[1]不會(huì)深入探討技術(shù)方面的內(nèi)容,但如果您想閱讀更多內(nèi)容,我們將在全文中提供重要論文的鏈接。
讓我們看看 Transformer 在 Stable Diffusion 中的作用,這是一種深度學(xué)習(xí)模型,可以將短語(例如“戴眼鏡的狗”)轉(zhuǎn)換為圖像。轉(zhuǎn)換器接收用戶輸入的文本并生成文本嵌入。文本嵌入是可以由卷積神經(jīng)網(wǎng)絡(luò) (CNN)(在本例中為 U-NET)讀取的文本表示。雖然穩(wěn)定擴(kuò)散模型使用嵌入來生成圖像,但嵌入可用于生成對(duì)時(shí)間序列模型有用的附加輸出。
為了理解如何將 Transformer 應(yīng)用到時(shí)間序列模型中,我們需要關(guān)注 Transformer 架構(gòu)的三個(gè)關(guān)鍵部分:
嵌入和位置編碼
編碼器:計(jì)算多頭自注意力
解碼器:計(jì)算多頭自注意力
作為一個(gè)例子,我們將解釋普通Transformer 是如何工作的,這是一種將簡單短語從一種語言翻譯成另一種語言的Transformer 。
嵌入和位置編碼:如何表示輸入數(shù)據(jù)
當(dāng)您將短語“我愛狗”輸入普通轉(zhuǎn)換器時(shí),一種名為 Word2Vec 的算法會(huì)將每個(gè)單詞轉(zhuǎn)換為數(shù)字列表(稱為向量)。每個(gè)向量都包含有關(guān)單詞含義以及它與其他單詞如何相關(guān)的信息,例如同義詞和反義詞。
模型還必須理解短語中每個(gè)單詞的位置。例如,“我愛狗”與“我愛狗”的含義不同。第二種算法稱為位置向量,它使用復(fù)雜的數(shù)學(xué)方程來幫助您的模型理解句子順序。將 Word2Vec 和位置向量算法提供的信息打包在一起,就是所謂的文本嵌入,或者以機(jī)器可以讀取的方式表示的原始短語。
編碼器級(jí)別的多頭自注意力
接下來,編碼器接收文本嵌入并將其轉(zhuǎn)換為新的向量,添加信息以幫助模型辨別短語中單詞之間的關(guān)系。例如,在短語“孩子們?cè)诠珗@里玩?!敝?,編碼器會(huì)將最大權(quán)重分配給“孩子”、“玩?!焙汀肮珗@”。我們稱這個(gè)過程為自注意力,因?yàn)樗鼪Q定了模型應(yīng)該最關(guān)注哪些單詞。
為了計(jì)算自注意力,編碼器為每個(gè)單詞創(chuàng)建三個(gè)向量——查詢向量、鍵向量和值向量。通過將短語乘以三個(gè)矩陣來創(chuàng)建向量。這是一個(gè)復(fù)雜的算法,但需要理解的重要部分是短語中的每個(gè)單詞都會(huì)與短語中的每個(gè)其他單詞相乘,并且可能需要大量時(shí)間來計(jì)算長短語的注意力。
為了更好地理解單詞之間的關(guān)系,自注意力層可以同時(shí)運(yùn)行多個(gè)頭。這個(gè)過程稱為多頭注意力,它允許模型同時(shí)關(guān)注短語的不同部分,例如當(dāng)存在短期和長期依賴性時(shí)。例如,在短語“動(dòng)物沒有過馬路,因?yàn)樗哿恕敝校囝^注意力告訴模型“動(dòng)物”和“它”指的是同一個(gè)想法。
解碼器級(jí)別的多頭自注意力
解碼器的工作方式與編碼器相同,只是它是使用不同的數(shù)據(jù)集進(jìn)行訓(xùn)練的。例如,在普通 Transformer 中,如果編碼器接受過英語數(shù)據(jù)訓(xùn)練,解碼器接受過法語數(shù)據(jù)訓(xùn)練,則解碼器將運(yùn)行相同的多頭自注意力算法,將原始短語翻譯成法語。
為什么這種Transformer 架構(gòu)不適用于時(shí)間序列?時(shí)間序列在某些方面就像一種語言,但它與傳統(tǒng)語言不同。在語言中,您可以使用截然不同的單詞或句子順序來表達(dá)相同的想法。一旦基于語言的轉(zhuǎn)換器(例如 vanilla)接受了某種語言的訓(xùn)練,它就可以理解單詞之間的關(guān)系,因此當(dāng)您用兩個(gè)不同的輸入表示一個(gè)想法時(shí),轉(zhuǎn)換器仍然會(huì)得出大致相同的含義。然而,時(shí)間序列需要嚴(yán)格的順序——數(shù)據(jù)點(diǎn)的順序更重要。這對(duì)使用時(shí)間序列轉(zhuǎn)換器提出了挑戰(zhàn)。
讓我們看看我們目前如何解決這個(gè)問題以及為什么這些模型存在不足。
目前的方法
自回歸積分移動(dòng)平均 (ARIMA) 模型適用于某些時(shí)間序列,但需要深入了解相關(guān)趨勢、季節(jié)性變化和殘差值,即使如此,它也僅適用于線性相關(guān)性。在許多具有多元問題特征的時(shí)間序列中,依賴關(guān)系之間的關(guān)系不是線性的,ARIMA 不起作用。
還有幾種使用神經(jīng)網(wǎng)絡(luò)的方法。
前饋神經(jīng)網(wǎng)絡(luò) (FNN) 模型使用系列中任何前六個(gè)數(shù)據(jù)點(diǎn)來預(yù)測接下來的六個(gè)數(shù)據(jù)點(diǎn)。盡管 FNN 支持非線性依賴性,但它們要求您手工制作一個(gè)專注于非常具體的問題或數(shù)據(jù)子集的模型,這使得為大型數(shù)據(jù)集構(gòu)建該模型過于耗時(shí)。
在循環(huán)神經(jīng)網(wǎng)絡(luò) (RNN) 模型中,您可以向模型提供與時(shí)間序列相關(guān)的一小部分?jǐn)?shù)據(jù)點(diǎn),RNN 中的單元將記住哪些數(shù)據(jù)點(diǎn)很重要以及它們的權(quán)重是多少。然而,當(dāng)您處理具有長期依賴性的數(shù)據(jù)集時(shí),權(quán)重變得不那么相關(guān),并且模型的準(zhǔn)確性隨著時(shí)間的推移而降低。
長短期記憶 (LSTM) 模型與 RNN 類似,不同之處在于每個(gè)單元都有一個(gè)記憶,允許您在長序列期間更頻繁地更新權(quán)重。這使得 LSTM 成為某些用例的良好解決方案。
Seq2seq 是一種提高 LSTM 性能的方法。您可以將數(shù)據(jù)輸入編碼器,而不是直接輸入網(wǎng)絡(luò),編碼器會(huì)生成輸入的特征并輸入解碼器。
Transformer 如何改進(jìn)時(shí)間序列?
使用 Transformer 啟用的多頭注意力可以幫助改進(jìn)時(shí)間序列模型處理長期依賴性的方式,從而提供優(yōu)于當(dāng)前方法的優(yōu)勢。為了讓您了解變壓器對(duì)于長依賴關(guān)系的工作效果如何,請(qǐng)考慮 ChatGPT 可以在基于語言的模型中生成的長而詳細(xì)的響應(yīng)。通過允許一個(gè)頭專注于長期依賴性,而另一個(gè)頭專注于短期依賴性,將多頭注意力應(yīng)用于時(shí)間序列可以產(chǎn)生類似的好處。我們相信 Transformer 可以讓時(shí)間序列模型預(yù)測未來多達(dá) 1,000 個(gè)數(shù)據(jù)點(diǎn),甚至更多。
二次復(fù)雜度問題
Transformer 計(jì)算多頭自注意力的方式對(duì)于時(shí)間序列來說是有問題的。由于系列中的數(shù)據(jù)點(diǎn)必須乘以系列中的每個(gè)其他數(shù)據(jù)點(diǎn),因此添加到輸入中的每個(gè)數(shù)據(jù)點(diǎn)都會(huì)以指數(shù)方式增加計(jì)算注意力所需的時(shí)間。這稱為二次復(fù)雜度,在處理長序列時(shí)會(huì)產(chǎn)生計(jì)算瓶頸。
今年早些時(shí)候發(fā)布的一項(xiàng)調(diào)查確定了在將 Transformer 應(yīng)用于時(shí)間序列之前需要解決的兩項(xiàng)重要網(wǎng)絡(luò)修改:
位置編碼:我們?nèi)绾伪硎据斎霐?shù)據(jù)
注意力模塊:降低時(shí)間復(fù)雜度的方法
下一部分將介紹主要要點(diǎn),但您可以閱讀調(diào)查以了解有關(guān)修改及其結(jié)果的更多詳細(xì)信息。
網(wǎng)絡(luò)修改1:位置編碼
2019 年,我們嘗試在普通 Transformer 中應(yīng)用 Word2Vec 編碼過程,但該模型無法充分利用時(shí)間序列的重要特征。 Vanilla Transformer 擅長辨別單詞之間的關(guān)系,但不擅長遵循數(shù)據(jù)序列中的嚴(yán)格順序。閱讀更多。
2021 年,我們創(chuàng)建了可學(xué)習(xí)的文本嵌入,使我們能夠在輸入中包含額外的位置編碼信息。與普通 Transformer 中的固定編碼相比,可學(xué)習(xí)的位置編碼允許 Transformer 更加靈活并更好地利用順序排序信息。這有助于 Transformer 了解有關(guān)時(shí)間序列的更重要的上下文,例如季節(jié)信息。
網(wǎng)絡(luò)修改2:注意力模塊
為了降低注意力層的二次復(fù)雜度,新的 Transformer 引入了 ProbSparse Attention 的概念。通過使注意力層僅使用最重要的數(shù)據(jù)點(diǎn)而不是所有數(shù)據(jù)點(diǎn)來計(jì)算權(quán)重和概率,ProbSparse 有助于大大減少計(jì)算注意力所需的時(shí)間。
雖然 LogTrans、Pyraformer和 FEDformer 等許多新 Transformer 都納入了這些網(wǎng)絡(luò)修改,但這里我們重點(diǎn)關(guān)注 Informer 和 Spacetimeformer,因?yàn)樗鼈兪情_源的。 GitHub存儲(chǔ)庫提供參考文檔和示例,讓您可以輕松根據(jù)數(shù)據(jù)微調(diào)模型,而無需了解關(guān)注層的每個(gè)細(xì)節(jié)。
讓我們看看 Informer 和 Spacetimeformer 如何利用這些網(wǎng)絡(luò)修改,看看它們會(huì)生成什么樣的結(jié)果。
「Informer」架構(gòu)
Informer Transformer 使您能夠向它們提供有關(guān)季節(jié)性、每月或假期趨勢的重要信息,以幫助模型了解一年中數(shù)據(jù)行為方式的細(xì)微差異。例如,您的數(shù)據(jù)集在夏季的表現(xiàn)可能與冬季不同。通過位置編碼,您可以告訴模型在一年中的不同時(shí)間使用不同的權(quán)重,從而使您可以更好地控制輸入的質(zhì)量。
通過結(jié)合 ProbSparse 注意力模型和位置編碼,Informer 比 LSTM 等傳統(tǒng) Transformer 具有性能優(yōu)勢。當(dāng)預(yù)測未來 24 個(gè)數(shù)據(jù)點(diǎn)時(shí),Informer 產(chǎn)生的均方誤差 (MSE) 為 0.577,比 LSTM 的 MSE 0.650 稍好一些。當(dāng)預(yù)測 720 個(gè)數(shù)據(jù)點(diǎn)時(shí),性能差異更大,Informer 的 MSE 為 1.215,而 LSTM 的 MSE 為 1.960。我們可以得出的結(jié)論是,Informer 在長序列中提供了稍微更好的結(jié)果,但 LSTM 對(duì)于某些短期用例仍然可能產(chǎn)生良好的結(jié)果。
Spacetimeformer 提出了一種表示輸入的新方法。像 Informer 這樣的時(shí)間注意力模型表示單個(gè)輸入標(biāo)記中每個(gè)時(shí)間步長的多個(gè)變量的值,它沒有考慮特征之間的空間關(guān)系。圖注意力模型允許您手動(dòng)表示特征之間的關(guān)系,但依賴于不能隨時(shí)間變化的硬編碼圖。
Spacetimeformer 結(jié)合了時(shí)間和空間注意力方法,創(chuàng)建一個(gè)輸入標(biāo)記來表示給定時(shí)間單個(gè)特征的值。這有助于模型更多地了解空間、時(shí)間和價(jià)值信息之間的關(guān)系。
與 Informer 一樣,Spacetimeformer 提供的結(jié)果比 LSTM 稍好一些。在預(yù)測未來 40 小時(shí)時(shí),Spacetimeformer 的 MSE 為 12.49,略好于 LSTM 的 MSE 14.29。雖然對(duì)于較長的序列,這一裕度會(huì)變大,但 Spacetimeformer 尚未為每個(gè)用例提供比 LSTM 更好的結(jié)果。
讓我們將時(shí)間序列模型應(yīng)用于在線精品店。該商店有 11 個(gè)微服務(wù),包括允許用戶添加和刪除商品的購物車服務(wù)以及允許用戶搜索單個(gè)產(chǎn)品的目錄服務(wù)。
為了演示對(duì)最終用戶的影響,我們將預(yù)測用戶必須等待每個(gè)微服務(wù)處理請(qǐng)求的時(shí)間?;诿總€(gè)服務(wù)之前 360 個(gè)數(shù)據(jù)點(diǎn)的模型,我們對(duì)未來的 36 個(gè)數(shù)據(jù)點(diǎn)進(jìn)行了短期預(yù)測,并對(duì)未來的 120 個(gè)數(shù)據(jù)點(diǎn)進(jìn)行了長期預(yù)測。
在預(yù)測接下來的 36 個(gè)數(shù)據(jù)點(diǎn)時(shí),Informer 產(chǎn)生的 MSE 為 0.6,略優(yōu)于 LSTM。然而,Informer 需要更多時(shí)間來處理。長模型的結(jié)果也是如此:Informer 的預(yù)測更準(zhǔn)確,但處理時(shí)間更長。
image-20230917230120011
時(shí)間序列的復(fù)雜性各不相同,因此測試模型以找到最適合您的用例的模型非常重要。雖然 LSTM 等傳統(tǒng)模型是某些短期時(shí)間序列的有力選擇,但 Informer 和 Spacetimeformer 可以為長期序列提供更準(zhǔn)確的預(yù)測。隨著我們繼續(xù)對(duì)注意力層以及輸入數(shù)據(jù)的表示方式進(jìn)行優(yōu)化,我們預(yù)計(jì)性能將會(huì)提高。此外,作為開源框架,Informer 和 Spacetimeformer 使安裝模型并開始使用數(shù)據(jù)進(jìn)行測試變得更加容易。
[1]Source: https://medium.com/intel-tech/how-to-apply-transformers-to-time-series-models-spacetimeformer-e452f2825d2e
聯(lián)系客服