摘要:在這篇博客文章中,我將討論使用深度學(xué)習(xí)的方法對(duì)時(shí)間序列數(shù)據(jù)進(jìn)行分類,而無(wú)需手動(dòng)設(shè)計(jì)特征。卷積神經(jīng)網(wǎng)絡(luò)第一步是將數(shù)據(jù)投射到具有一定形狀的數(shù)組中,其中是訓(xùn)練期間批次中的示例數(shù),是時(shí)間序列的長(zhǎng)度在我們的情況下為,并且是進(jìn)行測(cè)量的通道的數(shù)量。
摘要:2017年深度學(xué)習(xí)框架關(guān)注度排名tensorflow以絕對(duì)的優(yōu)勢(shì)占領(lǐng)榜首,本文通過(guò)使用tensorflow優(yōu)化過(guò)去一個(gè)使用特征提取方法的框架,證實(shí)了深度學(xué)習(xí)的優(yōu)秀性能。
時(shí)間序列分析是一種動(dòng)態(tài)數(shù)據(jù)處理的統(tǒng)計(jì)方法。根據(jù)對(duì)系統(tǒng)進(jìn)行觀測(cè)得到的時(shí)間序列數(shù)據(jù),用曲線擬合的方法對(duì)系統(tǒng)進(jìn)行客觀的描述。
如今,時(shí)間序列數(shù)據(jù)出現(xiàn)在金融,信號(hào)處理,語(yǔ)音識(shí)別和醫(yī)學(xué)等諸多領(lǐng)域。解決時(shí)間序列問(wèn)題的標(biāo)準(zhǔn)方法通常需要手動(dòng)提煉數(shù)據(jù)特征,然后才能將其輸入到機(jī)器學(xué)習(xí)算法中。這通常還要求開發(fā)設(shè)計(jì)人員掌握數(shù)據(jù)所屬學(xué)科領(lǐng)域的知識(shí)特征,以便在算法中加入特征過(guò)濾。例如,如果處理信號(hào)(即EEG信號(hào)的分類),則需要掌握的知識(shí)特征涉及各種頻帶的功率譜及Hjorth參數(shù)。對(duì)于認(rèn)真鉆研本領(lǐng)域的程序猿來(lái)說(shuō),這簡(jiǎn)直就是噩夢(mèng)。
那么是不是不掌握這些學(xué)科領(lǐng)域的知識(shí)特征,我們就沒(méi)有辦法進(jìn)行模型設(shè)計(jì)了呢?
其實(shí)答案不然,在圖像分類領(lǐng)域也出現(xiàn)了類似的情況。但是,隨著深度學(xué)習(xí)的出現(xiàn),卷積神經(jīng)網(wǎng)絡(luò)(CNN)的性能已經(jīng)可以勝過(guò)這種人工提取特征的方法。CNN不需要任何手動(dòng)設(shè)置任何的圖像特征。在訓(xùn)練過(guò)程中,隨著層次越來(lái)越深,CNN越來(lái)越復(fù)雜,進(jìn)而它自己會(huì)學(xué)習(xí)得到許多“過(guò)濾器”,并在最終的分類器中使用它們。
在這篇博客文章中,我將討論使用深度學(xué)習(xí)的方法對(duì)時(shí)間序列數(shù)據(jù)進(jìn)行分類,而無(wú)需手動(dòng)設(shè)計(jì)特征。我在本文中將使用到的例子是UCI存儲(chǔ)庫(kù)中經(jīng)典的人類活動(dòng)識(shí)別(HAR)數(shù)據(jù)集。該數(shù)據(jù)集包含原始時(shí)間序列數(shù)據(jù),以及具有561個(gè)預(yù)處理數(shù)據(jù)的工程特征。在博客中我會(huì)比較使用工程特征與深度學(xué)習(xí)這兩種方法(卷積和復(fù)現(xiàn)神經(jīng)網(wǎng)絡(luò)),并表明深度學(xué)習(xí)可以超越前者的性能。
在本文中我將使用Tensorflow來(lái)實(shí)現(xiàn)和訓(xùn)練博客中所用到的模型。在下面的討論中,提供了代碼片段來(lái)解釋實(shí)現(xiàn)過(guò)程。有關(guān)完整的代碼,請(qǐng)參閱我的Github資源庫(kù)。
卷積神經(jīng)網(wǎng)絡(luò)( CNN )第一步是將數(shù)據(jù)投射到具有一定形狀的numpy數(shù)組中:(batch_size, seq_len, n_channels),其中batch_size是訓(xùn)練期間批次中的示例數(shù),seq_len是時(shí)間序列的長(zhǎng)度(在我們的情況下n_channels為128),并且是進(jìn)行測(cè)量的通道的數(shù)量。在本文的小例子中,有9個(gè)通道,每3個(gè)坐標(biāo)軸包括3個(gè)不同的加速度測(cè)量。每次觀察有6類活動(dòng)LAYING, STANDING, SITTING, WALKING_DOWNSTAIRS, WALKING_UPSTAIRS, WALKING。
首先,我們?yōu)檩斎氲接?jì)算圖的數(shù)據(jù)創(chuàng)建占位符:
inputs是將輸入的張量饋送到計(jì)算圖,并將其數(shù)組第一個(gè)位置設(shè)置為None,以便允許可變的批量大小。labels_是要預(yù)測(cè)的一個(gè)熱編碼的標(biāo)簽,keep_prob的作用是在退出正則化中保持概率來(lái)防止過(guò)度擬合,并且learning_rate_是Adam優(yōu)化器中使用的學(xué)習(xí)率。
我們將通過(guò)使用移動(dòng)序列的一維內(nèi)核構(gòu)造卷積層(與使用2d卷積的圖像不同)來(lái)構(gòu)造卷積層,這些內(nèi)核作為在訓(xùn)練過(guò)程中的過(guò)濾器。像許多CNN架構(gòu)一樣,層越深,過(guò)濾器數(shù)越多。每個(gè)卷積之后是匯集層,以此減少序列長(zhǎng)度。下面是可能可以使用的CNN架構(gòu)的簡(jiǎn)單圖片:
上面描述的卷積層如下實(shí)現(xiàn):
一旦達(dá)到最后一層,我們需要張量平坦化并將其輸送到具有正確數(shù)量的神經(jīng)元的分類器中(上圖中的144個(gè))。模型功能:
計(jì)算softmax交叉熵,這是多類問(wèn)題中使用的標(biāo)準(zhǔn)損失度量。
從最大概率以及精度預(yù)測(cè)類標(biāo)簽。
功能實(shí)現(xiàn)代碼如下:
其余的實(shí)施部分涉及向圖表饋送批次的訓(xùn)練數(shù)據(jù)并評(píng)估驗(yàn)證集的性能。最后,對(duì)測(cè)試集進(jìn)行評(píng)估。采用上述架構(gòu)batch_size=600,learning_rate=0.001(默認(rèn)值),keep_prob=0.5,500訓(xùn)練次數(shù),我們得到98%的測(cè)試精度。下面的圖表顯示了訓(xùn)練/驗(yàn)證精度如何通過(guò)訓(xùn)練次數(shù)演變:
長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)LSTM在處理基于文本的數(shù)據(jù)方面非常受歡迎,在情感分析,語(yǔ)言翻譯和文本生成方面也相當(dāng)成功。今天我們就用LSTM來(lái)解決我們今天的問(wèn)題。
以下是可以在我們的問(wèn)題中使用的示例架構(gòu):
為了將數(shù)據(jù)傳送到網(wǎng)絡(luò)中,我們需要將數(shù)組分成128個(gè),每個(gè)的形狀我們定義為:(batch_size, n_channels)。然后,單層神經(jīng)元將把這些輸入轉(zhuǎn)換成LSTM細(xì)胞,每一個(gè)都具有維度lstm_size。該參數(shù)的大小選擇要大于通道數(shù)。這是一種類似于在文本應(yīng)用程序中嵌入圖層的方式。為了實(shí)現(xiàn),占位符與上述相同。以下代碼段實(shí)現(xiàn)了LSTM層:
上面的代碼段中有一個(gè)重要的技術(shù)細(xì)節(jié)。我將陣列重新整形(batch_size, seq_len, n_channels)到(seq_len, batch_size, n_channels),這樣tf.split就可以在每個(gè)步驟中將數(shù)據(jù)(由第零個(gè)索引)正確地分割成數(shù)組列表。其余的是LSTM實(shí)現(xiàn)的標(biāo)準(zhǔn),包括構(gòu)建層(包括正則化的退出),然后是定義初始狀態(tài)。
下一步是通過(guò)網(wǎng)絡(luò)實(shí)現(xiàn)前向傳遞和成本函數(shù)。一個(gè)重要的技術(shù)方面利用梯度剪輯,因?yàn)樗ㄟ^(guò)防止反向傳播期間的爆炸梯度來(lái)改善訓(xùn)練。
請(qǐng)注意,僅使用LSTM輸出頂部序列的最后一個(gè)成員,因?yàn)槲覀冋趪L試每個(gè)序列預(yù)測(cè)一個(gè)數(shù)字。其余的類似CNN,我們只需要將數(shù)據(jù)提供給圖表進(jìn)行訓(xùn)練。lstm_size=27,lstm_layers=2,batch_size=600,learning_rate=0.0005,和keep_prob=0.5,我獲得95%的準(zhǔn)確度的測(cè)試集。這比CNN的結(jié)果還差,但還是不錯(cuò)的。這些超參數(shù)的更好選擇會(huì)改進(jìn)的結(jié)果。
與工程特征進(jìn)行比較在此之前,我已經(jīng)使用561個(gè)預(yù)先設(shè)計(jì)的特征測(cè)試了一些關(guān)于這個(gè)問(wèn)題的機(jī)器學(xué)習(xí)方法。性能最好的模型之一是梯度提升樹(gradient booster)(樹形或線性),其結(jié)果是96%的精確度(您可以從這本筆記本中了解更多信息)。CNN架構(gòu)優(yōu)于梯度提升樹,但LSTM的性能相較于梯度提升樹(gradient booster)就稍差一些。
總結(jié):在這篇博客文章中,我已經(jīng)說(shuō)明了如何使用CNN和LSTM進(jìn)行時(shí)間序列分類,并證明深層架構(gòu)可以勝過(guò)預(yù)先設(shè)計(jì)的功能特征訓(xùn)練的模型。除了達(dá)到更好的準(zhǔn)確性外,深度學(xué)習(xí)模式還“培養(yǎng)”了自己的功能。這是非常可取的,因?yàn)槿藗儾恍枰哂衼?lái)自數(shù)據(jù)來(lái)源的領(lǐng)域?qū)iL(zhǎng),能夠訓(xùn)練準(zhǔn)確的模型。
我們?cè)谶@篇文章中使用的序列相當(dāng)小(128步)。人們可能會(huì)想,如果步驟數(shù)量很多,那么今天我討論的這些架構(gòu)的可訓(xùn)練性是否還有?如果有?會(huì)發(fā)生什么。我認(rèn)為一種可能的架構(gòu)將涉及LSTM和CNN的組合,其對(duì)于較大的序列(即> 1000,對(duì)于LSTM是有問(wèn)題的)可以更好地工作。因?yàn)樵谶@種情況下,具有匯集作用的幾個(gè)卷積就可以有效地減少前幾個(gè)層中的步數(shù),并且得到的較短的序列可以被反饋送到LSTM層。這種結(jié)構(gòu)的一個(gè)例子最近被用于從移動(dòng)設(shè)備記錄的心房顫動(dòng)檢測(cè)。如果你有興趣了解這種長(zhǎng)序列的方法可以去研究它。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/41881.html
摘要:在一個(gè)數(shù)據(jù)分析任務(wù)和任務(wù)混合的環(huán)境中,大數(shù)據(jù)分析任務(wù)也會(huì)消耗很多網(wǎng)絡(luò)帶寬如操作,網(wǎng)絡(luò)延遲會(huì)更加嚴(yán)重。本地更新更新更新目前,我們已經(jīng)復(fù)現(xiàn)中的實(shí)驗(yàn)結(jié)果,實(shí)現(xiàn)了多機(jī)并行的線性加速。 王佐,天數(shù)潤(rùn)科深度學(xué)習(xí)平臺(tái)負(fù)責(zé)人,曾擔(dān)任 Intel亞太研發(fā)中心Team Leader,萬(wàn)達(dá)人工智能研究院資深研究員,長(zhǎng)期從事分布式計(jì)算系統(tǒng)研究,在大規(guī)模分布式機(jī)器學(xué)習(xí)系統(tǒng)架構(gòu)、機(jī)器學(xué)習(xí)算法設(shè)計(jì)和應(yīng)用方面有深厚積累。在...
摘要:貢獻(xiàn)者飛龍版本最近總是有人問(wèn)我,把這些資料看完一遍要用多長(zhǎng)時(shí)間,如果你一本書一本書看的話,的確要用很長(zhǎng)時(shí)間。為了方便大家,我就把每本書的章節(jié)拆開,再按照知識(shí)點(diǎn)合并,手動(dòng)整理了這個(gè)知識(shí)樹。 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=200); 貢獻(xiàn)者:飛龍版...
閱讀 3527·2023-04-25 14:57
閱讀 2574·2021-11-22 14:56
閱讀 2097·2021-09-29 09:45
閱讀 1779·2021-09-22 15:53
閱讀 3327·2021-08-25 09:41
閱讀 908·2019-08-29 15:22
閱讀 3307·2019-08-29 13:22
閱讀 3132·2019-08-29 13:08