最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

R語(yǔ)言基于遞歸神經(jīng)網(wǎng)絡(luò)RNN的溫度時(shí)間序列預(yù)測(cè)

2021-04-06 14:23 作者:拓端tecdat  | 我要投稿

原文鏈接:http://tecdat.cn/?p=20335?

?

在本文中,我們將介紹三種提高循環(huán)神經(jīng)網(wǎng)絡(luò)性能和泛化能力的高級(jí)技術(shù)。我們演示有關(guān)溫度預(yù)測(cè)問(wèn)題的三個(gè)概念,我們使用建筑物屋頂上的傳感器的時(shí)間數(shù)據(jù)序列。

?

概述

在本文中,我們將介紹三種提高循環(huán)神經(jīng)網(wǎng)絡(luò)性能和泛化能力的高級(jí)技術(shù)。在最后,您將了解有關(guān)將循環(huán)網(wǎng)絡(luò)與Keras一起使用的大部分知識(shí)。您可以訪問(wèn)來(lái)自建筑物屋頂上的傳感器的時(shí)間數(shù)據(jù)序列,例如溫度,氣壓和濕度,這些數(shù)據(jù)點(diǎn)可用于預(yù)測(cè)最后一個(gè)數(shù)據(jù)點(diǎn)之后24小時(shí)的溫度。這是一個(gè)相當(dāng)具有挑戰(zhàn)性的問(wèn)題,它說(shuō)明了使用時(shí)間序列時(shí)遇到的許多常見(jiàn)困難。

我們將介紹以下技術(shù):

  • ?刪除層/每層的單位數(shù)(模型) 如L1或L2正則化所述,過(guò)度復(fù)雜的模型更有可能過(guò)度擬合,可以使用刪除來(lái)抵抗重復(fù)圖層的過(guò)擬合。

  • 堆疊循環(huán)層?—這增加了網(wǎng)絡(luò)的表示能力(以更高的計(jì)算負(fù)荷為代價(jià))。

  • 雙向循環(huán)層?—這些層以不同的方式向循環(huán)網(wǎng)絡(luò)提供相同的信息,從而提高準(zhǔn)確性。

溫度預(yù)測(cè)問(wèn)題

在本節(jié)的所有示例中,您將使用生物地球化學(xué)研究所的氣象站記錄的?天氣時(shí)間序列數(shù)據(jù)集。

在此數(shù)據(jù)集中,幾年中每10分鐘記錄14個(gè)不同的量(例如空氣溫度,大氣壓力,濕度,風(fēng)向等)。原始數(shù)據(jù)可追溯到2003年,但此示例僅限于2009-2016年的數(shù)據(jù)。該數(shù)據(jù)集非常適合學(xué)習(xí)使用數(shù)字時(shí)間序列。您將使用它來(lái)構(gòu)建一個(gè)模型,該模型將最近的一些數(shù)據(jù)(幾天的數(shù)據(jù)點(diǎn))作為輸入,并預(yù)測(cè)未來(lái)24小時(shí)的氣溫。

下載并解壓縮數(shù)據(jù),如下所示:


  1. unzip(

  2. "climate.csv.zip",

  3. exdir = "~/Downloads/climate"

  4. )

我們看一下數(shù)據(jù)。

  1. library(tibble)

  2. library(readr)


  3. glimpse(data)

這是溫度(攝氏度)隨時(shí)間變化的曲線圖。在此圖上,您可以清楚地看到溫度的年度周期。


  1. ggplot(data, aes(x = 1:nrow(data), y = `degC`)) + geom_line()

?

這是溫度數(shù)據(jù)的前10天變化圖。由于數(shù)據(jù)每10分鐘記錄一次,因此您每天可獲得144個(gè)數(shù)據(jù)點(diǎn)。

ggplot(data[1:1440,], aes(y = `degC`)) + geom_line()

?

?

如果您根據(jù)過(guò)去幾個(gè)月的數(shù)據(jù)來(lái)嘗試預(yù)測(cè)下個(gè)月的平均溫度,由于數(shù)據(jù)的年度周期性可靠,因此問(wèn)題很容易解決。但是從幾天的數(shù)據(jù)來(lái)看,溫度更加混亂。這個(gè)時(shí)間序列每天都可以預(yù)測(cè)嗎?

準(zhǔn)備數(shù)據(jù)

問(wèn)題的確切表達(dá)如下:給定的數(shù)據(jù)可以追溯到?lookback?時(shí)間步長(zhǎng)(一個(gè)時(shí)間步長(zhǎng)為10分鐘)并在每個(gè)steps?時(shí)間步長(zhǎng)處進(jìn)行采樣?,您可以預(yù)測(cè)該delay?時(shí)間步長(zhǎng)中的溫度?嗎?使用以下參數(shù)值:

  • lookback = 1440?—觀察將追溯到10天。

  • steps = 6?—觀測(cè)將在每小時(shí)一個(gè)數(shù)據(jù)點(diǎn)進(jìn)行采樣。

  • delay = 144?—目標(biāo)將是未來(lái)的24小時(shí)。

首先,您需要做兩件事:

  • 將數(shù)據(jù)預(yù)處理為神經(jīng)網(wǎng)絡(luò)可以使用格式。數(shù)據(jù)已經(jīng)是數(shù)字了,因此您無(wú)需進(jìn)行任何向量化。但是數(shù)據(jù)中的每個(gè)時(shí)間序列的度量尺度都不同(例如,溫度通常在-20至+30之間,但以毫巴為單位的大氣壓約為1,000)。您將獨(dú)立地標(biāo)準(zhǔn)化每個(gè)時(shí)間序列。

  • 編寫(xiě)一個(gè)生成器函數(shù),該函數(shù)將獲取當(dāng)前的浮點(diǎn)數(shù)據(jù)數(shù)組,并生成來(lái)自最近的過(guò)去以及將來(lái)的目標(biāo)溫度的成批數(shù)據(jù)。由于數(shù)據(jù)集中的樣本是高度冗余的(樣本?N?和樣本?N??+ 1將具有大多數(shù)相同的時(shí)間步長(zhǎng)),因此顯式分配每個(gè)樣本會(huì)很浪費(fèi)。相反,您將使用原始數(shù)據(jù)即時(shí)生成樣本。



生成器函數(shù)是一種特殊類(lèi)型的函數(shù),可以反復(fù)調(diào)用該函數(shù)以獲得一系列值。

例如,sequence_generator()?下面的函數(shù)返回一個(gè)生成器函數(shù),該?函數(shù)產(chǎn)生無(wú)限的數(shù)字序列:


  1. gen <- sequence_generator(10)

  2. gen()

[1] 10gen()[1] 11

生成器的當(dāng)前狀態(tài)value?是在函數(shù)外部定義的?變量。superassignment(<<-)用于從函數(shù)內(nèi)部更新此狀態(tài)。

生成器函數(shù)可以通過(guò)返回值NULL來(lái)指示完成?。

首先,將先前讀取的R數(shù)據(jù)幀轉(zhuǎn)換為浮點(diǎn)值矩陣(我們丟棄包含文本時(shí)間戳記的第一列):

data <- data.matrix(data[,-1])

然后,您可以通過(guò)減去每個(gè)時(shí)間序列的平均值并除以標(biāo)準(zhǔn)差來(lái)預(yù)處理數(shù)據(jù)。您將使用前200,000個(gè)時(shí)間步作為訓(xùn)練數(shù)據(jù),因此僅在這部分?jǐn)?shù)據(jù)上計(jì)算均值和標(biāo)準(zhǔn)差以進(jìn)行標(biāo)準(zhǔn)化。

  1. train_data <- data[1:200000,]

  2. data <- scale(data, center = mean, scale = std)

您將使用的數(shù)據(jù)生成器的代碼如下。它產(chǎn)生一個(gè)list??(samples, targets),其中?samples?是一批輸入數(shù)據(jù),并且?targets?是目標(biāo)溫度的對(duì)應(yīng)數(shù)組。它采用以下參數(shù):

  • data?—原始的浮點(diǎn)數(shù)據(jù)數(shù)組。

  • lookback?—是輸入數(shù)據(jù)應(yīng)該包括多少個(gè)時(shí)間步。

  • delay?—目標(biāo)應(yīng)該在未來(lái)多少步。

  • min_index?和?max_index?—data?數(shù)組中的索引,?用于定義從中提取時(shí)間步長(zhǎng)。保留一部分?jǐn)?shù)據(jù)用于驗(yàn)證和另一部分用于測(cè)試。

  • shuffle?—隨機(jī)整理樣本還是按時(shí)間順序繪制樣本。

  • batch_size?—每批樣品數(shù)。

  • step?—采樣數(shù)據(jù)的時(shí)間段(以時(shí)間為單位)。您將其設(shè)置為6,以便每小時(shí)繪制一個(gè)數(shù)據(jù)點(diǎn)。

?

現(xiàn)在,讓我們使用abstract?generator?函數(shù)實(shí)例化三個(gè)生成器:一個(gè)用于訓(xùn)練,一個(gè)用于驗(yàn)證以及一個(gè)用于測(cè)試。每個(gè)人都將查看原始數(shù)據(jù)的不同時(shí)間段:訓(xùn)練生成器查看前200,000個(gè)時(shí)間步,驗(yàn)證生成器查看隨后的100,000個(gè)時(shí)間步,而測(cè)試生成器查看其余的時(shí)間步。

  1. lookback <- 1440

  2. step <- 6



  3. # 為了查看整個(gè)驗(yàn)證集,需要從valu gen中提取多少步驟

  4. val_steps <- (300000 - 200001 - lookback) / batch_size


  5. # 為了查看整個(gè)測(cè)試集,需要從test\u gen中提取多少步驟

  6. test_steps <- (nrow(data) - 300001 - lookback) / batch_size

常識(shí)性的非機(jī)器學(xué)習(xí)基準(zhǔn)

在開(kāi)始使用黑盒深度學(xué)習(xí)模型解決溫度預(yù)測(cè)問(wèn)題之前,讓我們嘗試一種簡(jiǎn)單的常識(shí)性方法。它將用作健全性檢查,并將建立一個(gè)基線,您必須超過(guò)它才能證明機(jī)器學(xué)習(xí)模型的有用性。當(dāng)您要解決尚無(wú)已知解決方案的新問(wèn)題時(shí),此類(lèi)常識(shí)性基準(zhǔn)可能會(huì)很有用。一個(gè)經(jīng)典的例子是不平衡的分類(lèi)任務(wù),其中某些類(lèi)比其他類(lèi)更為常見(jiàn)。如果您的數(shù)據(jù)集包含90%的A類(lèi)實(shí)例和10%的B類(lèi)實(shí)例,則分類(lèi)任務(wù)的常識(shí)性方法是在提供新樣本時(shí)始終預(yù)測(cè)“ A”。此類(lèi)分類(lèi)器的總體準(zhǔn)確度為90%,因此,任何基于學(xué)習(xí)的方法都應(yīng)超過(guò)90%的分?jǐn)?shù),以證明其有用性。

在這種情況下,可以安全地假定溫度時(shí)間序列是連續(xù)的(明天的溫度可能會(huì)接近今天的溫度)。因此,常識(shí)性的方法是始終預(yù)測(cè)從現(xiàn)在開(kāi)始24小時(shí)的溫度將等于現(xiàn)在的溫度。我們使用平均絕對(duì)誤差(MAE)指標(biāo)評(píng)估這種方法:

mean(abs(preds - targets))

評(píng)估循環(huán)。


  1. for (step in 1:val_steps) {


  2. preds <- samples[,dim(samples)[[2]],2]

  3. mae <- mean(abs(preds - targets))

  4. batch_maes <- c(batch_maes, mae)

  5. }

  6. print(mean(batch_maes))

MAE為0.29。由于溫度數(shù)據(jù)已標(biāo)準(zhǔn)化為以0為中心并且標(biāo)準(zhǔn)偏差為1。它的平均絕對(duì)誤差為0.29 x?temperature_std?攝氏度:2.57?C。

celsius_mae <- 0.29 * std[[2]]

那是一個(gè)相當(dāng)大的平均絕對(duì)誤差。

基本的機(jī)器學(xué)習(xí)方法

就像在嘗試機(jī)器學(xué)習(xí)方法之前建立常識(shí)性基準(zhǔn)很有用一樣,在研究復(fù)雜且計(jì)算量大的模型之前,嘗試簡(jiǎn)單的機(jī)器學(xué)習(xí)模型也很有用。

下面的清單顯示了一個(gè)全連接的模型,該模型首先將數(shù)據(jù)展平,然后在兩個(gè)密集層中運(yùn)行它。請(qǐng)注意,最后一個(gè)致密層上缺少激活函數(shù),這對(duì)于回歸問(wèn)題是很典型的。您將MAE用作損失函數(shù)。由于您評(píng)估的數(shù)據(jù)與通常方法完全相同,而且度量標(biāo)準(zhǔn)完全相同,因此結(jié)果可以直接比較。

  1. model_sequential() %>%

  2. layer_flatten(input_shape = c(lookback / step, dim(data)[-1])) %>%


  3. history <- model %>% fit_generator(

  4. train_gen,

  5. steps_per_epoch = 500,

  6. epochs = 20,

  7. validation_data = val_gen,

  8. validation_steps = val_steps

  9. )

讓我們顯示驗(yàn)證和訓(xùn)練的損失曲線。

?

某些驗(yàn)證損失接近無(wú)學(xué)習(xí)基準(zhǔn),但不可靠。這首先顯示了具有此基準(zhǔn)的優(yōu)點(diǎn):事實(shí)證明,要實(shí)現(xiàn)這一目標(biāo)并不容易。您的常識(shí)包含很多機(jī)器學(xué)習(xí)模型無(wú)法訪問(wèn)的有價(jià)值的信息。

您可能想知道,如果存在一個(gè)簡(jiǎn)單的,性能良好的模型,為什么您正在訓(xùn)練的模型找不到并對(duì)其進(jìn)行改進(jìn)?因?yàn)檫@種簡(jiǎn)單的解決方案不是您的訓(xùn)練設(shè)置所需要的。您要在其中尋找解決方案的模型的空間已經(jīng)相當(dāng)復(fù)雜。當(dāng)您正在尋找具有兩層網(wǎng)絡(luò)空間的復(fù)雜模型解決方案時(shí),即使在技術(shù)上是假設(shè)簡(jiǎn)單,性能良好的基準(zhǔn)模型也可能無(wú)法學(xué)習(xí)。通常,這是機(jī)器學(xué)習(xí)的一個(gè)相當(dāng)大的局限性:除非對(duì)學(xué)習(xí)算法進(jìn)行硬編碼來(lái)尋找特定類(lèi)型的簡(jiǎn)單模型,

基準(zhǔn)模型

第一種全連接的方法效果不好,但這并不意味著機(jī)器學(xué)習(xí)不適用于此問(wèn)題。先前的方法首先使時(shí)間序列平坦化,從而從輸入數(shù)據(jù)中刪除了時(shí)間概念。我們將嘗試一個(gè)遞歸序列處理模型-它應(yīng)該非常適合此類(lèi)序列數(shù)據(jù),因?yàn)榕c第一種方法不同,正是因?yàn)樗昧藬?shù)據(jù)點(diǎn)的時(shí)間順序。

您將使用Chung等人開(kāi)發(fā)的?GRU層。在2014年。GRU層使用與LSTM相同的原理工作,但是它們有所簡(jiǎn)化,因此運(yùn)行起來(lái)更高效。在機(jī)器學(xué)習(xí)中到處都可以看到計(jì)算復(fù)雜度和效率之間的折衷。

  1. model_sequential() %>%

  2. layer_gru(units = 32, input_shape = list(NULL, dim(data)[[-1]])) %>%

  3. layer_dense(units = 1)


  4. model %>% fit_generator(

  5. train_gen,

  6. steps_per_epoch = 500,

  7. epochs = 20,

結(jié)果如下圖所示。您可以超越基線模型,證明了機(jī)器學(xué)習(xí)的價(jià)值以及循環(huán)網(wǎng)絡(luò)的優(yōu)越性。

?

驗(yàn)證MAE轉(zhuǎn)化為非標(biāo)準(zhǔn)化后的平均絕對(duì)誤差為2.35?C。

丟棄(dropout)對(duì)抗過(guò)度擬合

從訓(xùn)練和驗(yàn)證曲線可以明顯看出該模型是過(guò)擬合的:訓(xùn)練和驗(yàn)證損失在經(jīng)過(guò)幾個(gè)時(shí)期后開(kāi)始出現(xiàn)較大差異。您已經(jīng)熟悉了應(yīng)對(duì)這種現(xiàn)象的經(jīng)典技術(shù):丟棄(dropout),它隨機(jī)將圖層的輸入單元清零,以便打破該圖層所暴露的訓(xùn)練數(shù)據(jù)中的偶然相關(guān)性。但是,如何在循環(huán)網(wǎng)絡(luò)中正確應(yīng)用dropout并不是一個(gè)簡(jiǎn)單的問(wèn)題。道在遞歸層之前應(yīng)用dropout會(huì)阻礙學(xué)習(xí),而不是幫助進(jìn)行正則化。2015年,Yarin Gal作為其博士學(xué)位論文的一部分??在貝葉斯深度學(xué)習(xí)中,確定了使用遞歸網(wǎng)絡(luò)進(jìn)行dropout的正確方法:應(yīng)在每個(gè)時(shí)間步上應(yīng)用相同的dropout模式,而不是隨時(shí)間步長(zhǎng)隨機(jī)變化的dropout模式。

Yarin Gal使用Keras進(jìn)行了研究,并幫助將這種模型直接構(gòu)建到Keras循環(huán)層中。Keras中的每個(gè)循環(huán)圖層都有兩個(gè)與dropout相關(guān)的參數(shù):??dropout,一個(gè)浮點(diǎn)數(shù),用于指定圖層輸入單元的dropout率;以及?recurrent_dropout,用于指定循環(huán)單元的dropout率。由于使用丟失dropout進(jìn)行正則化的網(wǎng)絡(luò)始終需要更長(zhǎng)的時(shí)間才能完全收斂,因此您需要兩倍的時(shí)間訓(xùn)練網(wǎng)絡(luò)。

  1. model_sequential() %>%

  2. layer_gru(units = 32, dropout = 0.2, recurrent_dropout = 0.2,

下圖顯示了結(jié)果。在前20個(gè)時(shí)期中,您不再過(guò)度擬合。但是,盡管您的評(píng)估分?jǐn)?shù)較為穩(wěn)定,但您的最佳分?jǐn)?shù)并沒(méi)有比以前低很多。

?

堆疊循環(huán)圖層

因?yàn)槟辉傩枰紤]過(guò)度擬合的問(wèn)題,而是似乎遇到了性能瓶頸,所以您應(yīng)該考慮增加網(wǎng)絡(luò)的容量?;叵胍幌峦ㄓ脵C(jī)器學(xué)習(xí)工作流程的描述:在過(guò)擬合成為主要障礙之前,最好增加網(wǎng)絡(luò)容量,這通常是個(gè)好主意(假設(shè)您已經(jīng)采取了基本步驟來(lái)減輕過(guò)擬合的情況,例如使用丟棄)。只要您的擬合度不會(huì)太差,就很可能會(huì)出現(xiàn)容量不足的情況。

通常,通過(guò)增加層中的單元數(shù)或添加更多層來(lái)增加網(wǎng)絡(luò)容量。遞歸層堆疊是構(gòu)建功能更強(qiáng)大的遞歸網(wǎng)絡(luò)的經(jīng)典方法:例如,當(dāng)前為Google Translate算法提供動(dòng)力的是七個(gè)大型LSTM層的堆疊。

為了在Keras中將遞歸層堆疊在一起,所有中間層都應(yīng)返回其完整的輸出序列(3D張量),而不是最后一個(gè)時(shí)間步的輸出。

  1. model_sequential() %>%

  2. layer_gru(units = 32,

  3. dropout = 0.1,

  4. recurrent_dropout = 0.5,

  5. return_sequences = TRUE,

  6. input_shape = list(NULL, dim(data)[[-1]])) %>%

  7. layer_gru(units = 64, activation = "relu",

  8. dropout = 0.1,

  9. recurrent_dropout = 0.5) %>%

下圖顯示了結(jié)果。您可以看到,添加的圖層確實(shí)改善了結(jié)果,盡管效果不明顯。您可以得出兩個(gè)結(jié)論:

  • 因?yàn)椴恍枰^(guò)度擬合的問(wèn)題,所以可以安全地增加圖層大小以尋求驗(yàn)證損失的改善。但是,這具有不可忽略的計(jì)算成本。

  • 添加層并沒(méi)有很大的幫助,因此此時(shí)您可能會(huì)看到網(wǎng)絡(luò)容量增加帶來(lái)的收益遞減。

?

使用雙向RNN

本節(jié)介紹的最后一種技術(shù)稱(chēng)為?雙向RNN。雙向RNN是常見(jiàn)的RNN變體,在某些任務(wù)上可以提供比常規(guī)RNN更高的性能。它在自然語(yǔ)言處理中經(jīng)常使用-您可以將其稱(chēng)為用于深度語(yǔ)言處理的深度學(xué)習(xí)“瑞士軍刀”。

RNN特別依賴(lài)于順序或時(shí)間的:它們按順序處理輸入序列的時(shí)間步長(zhǎng),重新排列時(shí)間步長(zhǎng)可以完全改變RNN從序列中提取的表示形式。這正是它們?cè)谛蛄袉?wèn)題(例如溫度預(yù)測(cè)問(wèn)題)上表現(xiàn)良好的原因。雙向RNN利用RNN的序列敏感性:它包含使用兩個(gè)常規(guī)RNN(例如?layer_gru?和?layer_lstm?),每個(gè)RNN都沿一個(gè)方向(按時(shí)間順序)處理輸入序列,然后合并它們的表示形式。通過(guò)雙向處理序列,雙向RNN可以捕獲被單向RNN忽略的模式。

值得注意的是,本節(jié)中的RNN層已按時(shí)間順序處理了序列。訓(xùn)練與本節(jié)第一個(gè)實(shí)驗(yàn)中使用相同的單GRU層網(wǎng)絡(luò),您將獲得如下所示的結(jié)果。

?

結(jié)果表明在這種情況下,按時(shí)間順序進(jìn)行的處理至關(guān)重要。因?yàn)椋旱讓拥腉RU層通常更容易記住最近的過(guò)去,自然地,較新的天氣數(shù)據(jù)點(diǎn)比舊數(shù)據(jù)點(diǎn)對(duì)問(wèn)題的預(yù)測(cè)能力強(qiáng)。因此,該層的時(shí)間順序版本必將勝過(guò)逆序版本。對(duì)于包括自然語(yǔ)言在內(nèi)的許多其他問(wèn)題,情況并非如此:從直覺(jué)上講,單詞在理解句子中的重要性通常并不取決于其在句子中的位置。讓我們?cè)贚STM IMDB示例中嘗試相同的技巧。

  1. # 作為特征考慮的單詞數(shù)量

  2. max_features <- 10000




  3. c(c(x_train, y_train), c(x_test, y_test)) %<-% imdb


  4. # 反轉(zhuǎn)序列

  5. x_train <- lapply(x_train, rev)

  6. x_test <- lapply(x_test, rev)



  7. model <- keras_model_sequential() %>%

  8. layer_embedding(input_dim = max_features, output_dim = 128) %>%

  9. layer_lstm(units = 32) %>%

您獲得的性能幾乎與按時(shí)間順序排列的LSTM相同。值得注意的是,在這樣的文本數(shù)據(jù)集上,逆序處理與按時(shí)間順序處理一樣有效,這證實(shí)了以下假設(shè):盡管單詞順序??在理解語(yǔ)言中確實(shí)很重要,?但?您使用的順序并不重要。重要的是,經(jīng)過(guò)逆向序列訓(xùn)練的RNN將學(xué)習(xí)與原始序列訓(xùn)練的RNN不同的表達(dá)方式。在機(jī)器學(xué)習(xí)中,?不同?的表示?總是值得開(kāi)發(fā)的:它們提供了一個(gè)新的視角來(lái)查看您的數(shù)據(jù),捕獲了其他方法遺漏的數(shù)據(jù)方面,因此可以幫助提高任務(wù)的性能。

雙向RNN利用此思想來(lái)改進(jìn)按時(shí)間順序排列的RNN的性能。

在Keras中實(shí)例化雙向RNN。讓我們?cè)贗MDB情緒分析任務(wù)上嘗試一下。

  1. model <- keras_model_sequential() %>%

  2. layer_embedding(input_dim = max_features, output_dim = 32) %>%

  3. bidirectional(

  4. layer_lstm(units = 32)



  5. model %>% compile(

  6. optimizer = "rmsprop",

  7. loss = "binary_crossentropy",


它的性能比您在上一節(jié)中嘗試過(guò)的常規(guī)LSTM稍好,達(dá)到了89%以上的驗(yàn)證精度。它似乎也可以更快地過(guò)擬合,這并不奇怪,因?yàn)殡p向?qū)拥膮?shù)是按時(shí)間順序排列的LSTM的兩倍。通過(guò)一些正則化,雙向方法可能會(huì)在此任務(wù)上表現(xiàn)出色。

現(xiàn)在讓我們?cè)跍囟阮A(yù)測(cè)任務(wù)上嘗試相同的方法。

  1. model_sequential() %>%

  2. bidirectional(

  3. layer_gru(units = 32), input_shape = list(NULL, dim(data)[[-1]])


  4. model %>% fit_generator(

  5. train_gen,

  6. steps_per_epoch = 500,

  7. epochs = 40,

這和常規(guī)的layer_gru一樣好?。原因很容易理解:所有預(yù)測(cè)能力都必須來(lái)自網(wǎng)絡(luò)中按時(shí)間順序排列的部分,因?yàn)楸娝苤?,按時(shí)間順序排列的部分在此任務(wù)上的表現(xiàn)嚴(yán)重不足,在這種情況下,最近的樣本比過(guò)去的樣本重要得多。

更進(jìn)一步

為了提高溫度預(yù)測(cè)問(wèn)題的性能,您可以嘗試其他許多方法:

  • 調(diào)整堆疊設(shè)置中每個(gè)循環(huán)圖層的單位數(shù)。

  • 調(diào)整RMSprop?優(yōu)化器使用的學(xué)習(xí)率?。

  • 嘗試使用?layer_lstm?代替?layer_gru。

  • 嘗試在循環(huán)層的頂部使用更大的緊密連接的回歸變量:即,更大的密集層,甚至一疊密集層。

  • 不要忘記最終在測(cè)試集上運(yùn)行性能最佳的模型(就驗(yàn)證MAE而言),否則,您將開(kāi)發(fā)過(guò)度擬合驗(yàn)證集的結(jié)構(gòu)。

我們可以提供一些準(zhǔn)則,建議在給定問(wèn)題上可能起作用或不起作用的因素,但是最終,每個(gè)問(wèn)題都是唯一的;您必須憑經(jīng)驗(yàn)評(píng)估不同的策略。當(dāng)前沒(méi)有理論可以提前準(zhǔn)確地告訴您應(yīng)該如何最佳地解決問(wèn)題。您必須迭代。

最受歡迎的見(jiàn)解

1.用于NLP的Python:使用Keras的多標(biāo)簽文本LSTM神經(jīng)網(wǎng)絡(luò)分類(lèi)

2.Python中利用長(zhǎng)短期記憶模型LSTM進(jìn)行時(shí)間序列預(yù)測(cè)分析 – 預(yù)測(cè)電力消耗數(shù)據(jù)

3.python在Keras中使用LSTM解決序列問(wèn)題

4.Python中用PyTorch機(jī)器學(xué)習(xí)分類(lèi)預(yù)測(cè)銀行客戶流失模型

5.R語(yǔ)言多元Copula GARCH 模型時(shí)間序列預(yù)測(cè)

6.在r語(yǔ)言中使用GAM(廣義相加模型)進(jìn)行電力負(fù)荷時(shí)間序列分析

7.R語(yǔ)言中ARMA,ARIMA(Box-Jenkins),SARIMA和ARIMAX模型用于預(yù)測(cè)時(shí)間序列數(shù)

8.R語(yǔ)言估計(jì)時(shí)變VAR模型時(shí)間序列的實(shí)證研究分析案例

9.用廣義加性模型GAM進(jìn)行時(shí)間序列分析


R語(yǔ)言基于遞歸神經(jīng)網(wǎng)絡(luò)RNN的溫度時(shí)間序列預(yù)測(cè)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
漠河县| 丰原市| 罗源县| 壤塘县| 延长县| 西城区| 集贤县| 甘洛县| 堆龙德庆县| 墨竹工卡县| 八宿县| 临海市| 秀山| 鹤峰县| 赫章县| 越西县| 鹰潭市| 阿合奇县| 彭泽县| 阿克苏市| 通海县| 安塞县| 梁河县| 射洪县| 田林县| 金门县| 吴堡县| 滁州市| 卓尼县| 海林市| 昌图县| 黔南| 闵行区| 大渡口区| 监利县| 宿州市| 张家界市| 灌南县| 东阿县| 大厂| 藁城市|