51 序列模型【動(dòng)手學(xué)深度學(xué)習(xí)v2】

序列模型
序列數(shù)據(jù)
- 現(xiàn)實(shí)生活中很多數(shù)據(jù)都是有時(shí)序結(jié)構(gòu)的,比如電影的評(píng)分(既不是固定的也不是隨機(jī)的,會(huì)隨著時(shí)間的變化而變化)
- 在統(tǒng)計(jì)學(xué)中,對(duì)超出已知觀測(cè)范圍進(jìn)行預(yù)測(cè)稱為外推法(extrapolation),在現(xiàn)有的觀測(cè)值之間進(jìn)行估計(jì)稱為內(nèi)插法(interpolation)
統(tǒng)計(jì)工具
- 處理序列數(shù)據(jù)選用統(tǒng)計(jì)工具和新的深度神經(jīng)網(wǎng)絡(luò)架構(gòu)

- 不獨(dú)立的隨機(jī)變量:變量之間存在某種關(guān)聯(lián)(在此之前都是假設(shè)獨(dú)立的隨機(jī)變量,變量之間是沒(méi)有關(guān)聯(lián)的)

- 黃色表示從 x1 一直到 xT 的方向(xi 的概率依賴于 x1,...,x(i-1) 的概率,i >= 2 ),也就是說(shuō)如果想要知道一個(gè)時(shí)序序列 T 時(shí)刻發(fā)生的事情,則需要知道在 T 時(shí)刻之前所有時(shí)刻發(fā)生的事情
- 紅色表示先計(jì)算 xT 再依次算到 x1(也就是黃色的反方向,xi 的概率依賴于 x(i+1),...,xT 的概率,i <= T ),即反序,也就是已知未來(lái) T 時(shí)刻發(fā)生的事情,反推出過(guò)去所有時(shí)刻所發(fā)生的事情(這種情況在某些時(shí)候是成立的,但是在物理上不一定可行,對(duì)于真實(shí)的事件,無(wú)法從未來(lái)的事件反推過(guò)去的事件,因?yàn)槲磥?lái)所發(fā)生的事件是根據(jù)過(guò)去所發(fā)生的事件所產(chǎn)生的)
自回歸模型
- 為了實(shí)現(xiàn)對(duì) t 時(shí)刻的 x 值的預(yù)測(cè),可以使用回歸模型
問(wèn)題:輸入數(shù)據(jù)的數(shù)量,輸入 x(t-1) , ... , x1 本身因 t 而異,輸入數(shù)據(jù)的數(shù)量會(huì)隨著數(shù)據(jù)量的增加而增加
針對(duì)上述問(wèn)題提出了兩種策略:
1、自回歸模型(autoregressive models)
- 假設(shè)在現(xiàn)實(shí)情況下相當(dāng)長(zhǎng)的序列 x(t-1) , ... , x1 可能是不必要的,因此只需要考慮滿足某個(gè)長(zhǎng)度為 τ 的時(shí)間跨度即可,即使用觀測(cè)序列 x(t-1) , ... , x(t-τ)
- 這樣做的好處是保證了在 t > τ 時(shí),參數(shù)的數(shù)量是固定的
- 之所以叫做自回歸模型是因?yàn)樵撃P褪菍?duì)自己執(zhí)行回歸
2、隱變量自回歸模型(latent autoregressive models)

- 隱變量自回歸模型中保留了對(duì)過(guò)去觀測(cè)的總結(jié) ht ,并且同時(shí)更新預(yù)測(cè) xt_hat 和總結(jié) ht
- xt_hat = P( xt_hat | ht )
- ht = g( h(t - 1) , x(t - 1) )
- 因?yàn)?ht 從未被觀測(cè)到,所以這類模型也被稱為隱變量自回歸模型
以上兩種情況都存在一個(gè)問(wèn)題:如何生成訓(xùn)練數(shù)據(jù)?
經(jīng)典方法:使用歷史觀測(cè)預(yù)測(cè)下一個(gè)未來(lái)觀測(cè)
- 但是時(shí)間并不是停滯不前的,總會(huì)有未來(lái)的觀測(cè)所對(duì)應(yīng)的時(shí)間變成歷史時(shí)刻
常用假設(shè):雖然特定值 xt 可能會(huì)改變,但是序列本身的動(dòng)力學(xué)不會(huì)改變
- 新的動(dòng)力學(xué)一定受新的數(shù)據(jù)影響,不可能用目前所掌握的數(shù)據(jù)來(lái)預(yù)測(cè)新的動(dòng)力學(xué)(統(tǒng)計(jì)學(xué)家成不變的動(dòng)力學(xué)為靜止的( stationary ))
- 整個(gè)序列的估計(jì)值計(jì)算如下

- 注意處理的對(duì)象是離散對(duì)象,對(duì)于離散的對(duì)象,需要使用分類器來(lái)估計(jì) P( xt | x(t-1) , ... , x1 )
馬爾可夫模型
在自回歸模型的近似法中,使用 x(t-1) , ... , x(t-τ),而不是 x(t-1) , ... , x1 來(lái)估計(jì) xt ,如果這種假設(shè)是成立的,也就是近似是精確的,可以稱為滿足馬爾科夫條件( Markov condition )
特殊情況下,如果 τ = 1 就能得到一個(gè)一階馬爾可夫模型( first-order Markov model ), P(x) 計(jì)算公式如下

假設(shè) xt 作為離散值的時(shí)候,可以使用動(dòng)態(tài)規(guī)劃沿著馬爾科夫鏈計(jì)算結(jié)果
因果關(guān)系
原則上,將 P( x1 , ... , xT )倒序展開也沒(méi)有什么問(wèn)題,基于條件概率,所以可以得出

基于馬爾科夫模型,可以得到一個(gè)反向的條件概率分布。然而在許多情況下,數(shù)據(jù)存在一個(gè)自然的方向,即在時(shí)間上是前進(jìn)的。顯然,未來(lái)的事件不能影響過(guò)去,因此如果改變 xt ,可能會(huì)影響未來(lái)發(fā)生的事件 x(t+1) ,但是在改變 xt 之后,基于 t 時(shí)刻之前發(fā)生的事件所得到的分布是不會(huì)發(fā)生改變的
前向算法舉例(根據(jù)過(guò)去的事件推測(cè)未來(lái)的事件)

給定 t 時(shí)刻之前的數(shù)據(jù) x1,x2,...,x(t-1) ,然后求 p(xt)
- 可以對(duì) t 時(shí)刻之前的數(shù)據(jù)進(jìn)行建模(自回歸模型,給定一些數(shù)據(jù),預(yù)測(cè)數(shù)據(jù)的時(shí)候不是使用的另外一組數(shù)據(jù),而是使用的給定數(shù)據(jù)中的一部分),表示成一個(gè)函數(shù)(可以認(rèn)為是一個(gè)機(jī)器學(xué)習(xí)模型,在 t 時(shí)刻之前的數(shù)據(jù)上進(jìn)行訓(xùn)練,然后取預(yù)測(cè) t 時(shí)刻的數(shù)據(jù))
核心思想:
- 如何計(jì)算 f(x1,x2...x(t-1))
- 如何計(jì)算 p(xt|f(x1,x2...x(t-1)))
方案 A -馬爾科夫假設(shè)

- 假設(shè)當(dāng)前數(shù)據(jù)只跟 τ 個(gè)過(guò)去數(shù)據(jù)點(diǎn)相關(guān)(每一次預(yù)測(cè)一個(gè)新的數(shù)據(jù),只需要看過(guò)去 τ 個(gè)數(shù)據(jù)就可以了,τ 可以自由選擇,τ 越小模型越簡(jiǎn)單,τ 越大模型越復(fù)雜),這樣假設(shè)的好處是 τ 的值是固定的,不會(huì)隨著時(shí)間的增大而增大(這樣做也比較符合現(xiàn)實(shí)的邏輯,過(guò)去事件距離預(yù)測(cè)事件的時(shí)間越長(zhǎng),他們之間的關(guān)聯(lián)程度就越?。?/li>
- 可以在過(guò)去數(shù)據(jù)上訓(xùn)練一個(gè) MLP 模型就可以了:假設(shè) x 是一個(gè)標(biāo)量,f 的作用就是每次給定一個(gè) τ 層的特征(這個(gè)特征是一個(gè)向量),然后再去預(yù)測(cè)一個(gè)標(biāo)量
- 給定 τ ,使得數(shù)據(jù)由變長(zhǎng)數(shù)據(jù)變成了定長(zhǎng)數(shù)據(jù)
方案 B -潛變量模型

- 引入一個(gè)潛變量 ht 表示過(guò)去信息 ht = f( x1 , x2 , ... , x(t-1) ),這樣的話, xt = p( xt | ht )
- 一旦引入了潛變量 h ,h 是可以不斷更新的,h 與前一個(gè)時(shí)刻的潛變量和前一個(gè)時(shí)刻的 x 相關(guān),等價(jià)于建立了兩個(gè)模型:一個(gè)模型是根據(jù)前一個(gè)時(shí)刻的潛變量 h 和 x,計(jì)算新的潛變量 h' ;第二個(gè)模型是根據(jù)新的潛變量 h' 和前一個(gè)時(shí)刻的 x ,計(jì)算新的 x。這樣就拆分成了兩個(gè)新的模型,每個(gè)模型只和 1 個(gè) 或者 2 個(gè)模型相關(guān),使得計(jì)算更加容易
附
如果將一個(gè)序列轉(zhuǎn)換為模型的“特征-標(biāo)簽”(feature-label)對(duì),如果將時(shí)間跨度固定為 τ ,將數(shù)據(jù)映射為數(shù)據(jù)對(duì) yt = xt 和 xt = [ x(t-τ) , ... , x(t-1) ],這時(shí)候會(huì)發(fā)現(xiàn)原有的數(shù)據(jù)樣本少了 τ 個(gè)(因?yàn)榘凑者@種映射關(guān)系,序列中的前 τ 個(gè)樣本并沒(méi)有足夠的歷史數(shù)據(jù)作為 xt 中的元素),一般所采用的辦法有兩種:
1、在序列足夠長(zhǎng)的情況下,可以直接將前面的 τ 項(xiàng)丟棄(這里的丟棄指的是不再作為 yt ,也就是說(shuō) t > τ;這些項(xiàng)還是可以作為 xt 中的元素)
2、用零填充序列
總結(jié)
- 時(shí)序模型中,當(dāng)前數(shù)據(jù)跟之前觀察到的數(shù)據(jù)相關(guān)
- 自回歸模型使用自身過(guò)去數(shù)據(jù)來(lái)預(yù)測(cè)未來(lái)
- 馬爾科夫模型假設(shè)當(dāng)前只跟當(dāng)前少數(shù)數(shù)據(jù)相關(guān),每次都使用固定長(zhǎng)度的過(guò)去信息來(lái)預(yù)測(cè)現(xiàn)在,從而簡(jiǎn)化模型
- 潛變量模型使用潛變量來(lái)概括歷史信息,使得模型拆分成兩塊:一塊是根據(jù)現(xiàn)在觀測(cè)到的數(shù)據(jù)來(lái)更新潛變量;另一塊是根據(jù)更新后的潛變量和過(guò)去的數(shù)據(jù)來(lái)更新將來(lái)要觀測(cè)到的數(shù)據(jù)
- 內(nèi)插法(在現(xiàn)有觀測(cè)值之間進(jìn)行估計(jì))和外推法(對(duì)超出已知觀測(cè)范圍進(jìn)行預(yù)測(cè))在實(shí)踐的難度上差別很大。因此對(duì)于已有的序列數(shù)據(jù),在訓(xùn)練時(shí)始終要尊重其時(shí)間順序,最好不要基于未來(lái)的數(shù)據(jù)進(jìn)行訓(xùn)練
- 序列模型的估計(jì)需要專門的統(tǒng)計(jì)工具,兩種比較流行的是自回歸模型和隱變量自回歸模型
- 對(duì)于時(shí)間是向前推進(jìn)的因果模型,正向估計(jì)通常比反向估計(jì)更容易
- 對(duì)于直到時(shí)間步 t 的觀測(cè),其在時(shí)間步 t+k 的預(yù)測(cè)輸出是“ k 步預(yù)測(cè)”。隨著時(shí)間 k 值的增加,會(huì)造成誤差的快速累積和預(yù)測(cè)質(zhì)量的急速下降
Q&A
- 1、這里的圖和公式是不是不一致,公式的 x 只和 h 相關(guān),而圖里 x 和 h 以及 x(t-1) 相關(guān)?QA P3 - 00:00?
- 2、老師,潛變量是不是直接影響了 RNN 的創(chuàng)造,或者說(shuō) RNN 的隱單元也是一個(gè)潛變量單元?QA P3 - 01:07?
- 3、在常規(guī)范圍內(nèi) τ 是不是越大越好,剛才例子 τ = 5 是不是比4好??QA P3 - 03:35?
- 4、潛變量模型和隱馬爾科夫模型有什么區(qū)別??QA P3 - 04:39?
- 5、老師,若預(yù)測(cè)一個(gè)月,τ = 30;若預(yù)測(cè) 7 天,τ = 7,是否有這樣的關(guān)系,還是有其它的約定規(guī)則??QA P3 - 05:21?
- 6、圖上看這里當(dāng)前環(huán)境的影響只能從過(guò)去來(lái)嗎?感覺(jué)還可以加一個(gè)當(dāng)前環(huán)境因素?QA P3 - 06:59?
- 7、在預(yù)測(cè)未來(lái)方面,現(xiàn)在的 SOTA 模型能做到多好??QA P3 - 10:06?
- 8、可不可以認(rèn)為是 MLP 記住了過(guò)去數(shù)據(jù)的模式?然后去用這個(gè)模式去畫出未來(lái)的趨勢(shì)??QA P3 - 11:17?
- 9、請(qǐng)問(wèn)老師這里輸入特征和輸出關(guān)系是具體如何應(yīng)對(duì)的?輸入 feature.shape(T-tau,tau),但是每一列時(shí)間都錯(cuò)開一個(gè)時(shí)間。輸出 label 是從 tau:T.這里每一列的 feature 和我們的 label 的對(duì)應(yīng)關(guān)系都在改變?QA P3 - 13:06?
- 10、τ 能夠隨著 xt 的變化而變化嗎?這樣感覺(jué)更符合實(shí)際情況,比如 xt 與前 5 個(gè)變量相關(guān),x(t+1) 與前 6 個(gè)變量相關(guān)?QA P3 - 14:21?
- 11、發(fā)動(dòng)機(jī)或者電動(dòng)車電池上面有很多參數(shù)傳感器,在預(yù)測(cè)這些參數(shù)未來(lái)變化趨勢(shì)時(shí),采用馬爾科夫模型進(jìn)行單步預(yù)測(cè)還可以,但是長(zhǎng)步預(yù)測(cè)結(jié)果極差。請(qǐng)問(wèn)有其他的好辦法嗎??QA P3 - 15:38?
- 12、模型能學(xué)習(xí)多個(gè)連續(xù)輸入,比如 a 、 b 、 c ,以及他們之間的聯(lián)系嗎??QA P3 - 19:18?
- 13、李沐老師好!時(shí)間序列函數(shù),有一個(gè)很著名的例子,第谷觀測(cè)的太陽(yáng)系行星位置觀測(cè)數(shù)據(jù)。這個(gè)數(shù)據(jù)集是否是整理公開過(guò)?用這個(gè)數(shù)據(jù)集進(jìn)行時(shí)間序列模型預(yù)測(cè)是否有團(tuán)隊(duì)嘗試過(guò)??QA P3 - 20:04?
- 14、有個(gè)想法,對(duì)時(shí)序數(shù)據(jù)分類,可以看作一幅圖,然后使用 CNN 去做圖像分類嗎??QA P3 - 21:04?
----end----
其他參考
1、《動(dòng)手學(xué)深度學(xué)習(xí)》,課程安排,https://courses.d2l.ai/zh-v2/assets/pdfs/part-3_1.pdf
2、《動(dòng)手學(xué)深度學(xué)習(xí)》,https://zh-v2.d2l.ai/chapter_recurrent-neural-networks/sequence.html