時間序列資料的首選神經網路

2021-08-03 19:46:28 字數 2996 閱讀 3625

本文簡單介紹迴圈神經網路rnn的發展過程,分析了梯度下降演算法、反向傳播及lstm過程。

言歸正傳,人工智慧的背後是大資料、優秀的演算法以及強大運算能力的硬體支援。比如,英偉達公司憑藉自己的強大的硬體研發能力以及對深度學習框架的支援奪得世全球最聰明的五十家公司榜首。另外優秀的深度學習演算法有很多,時不時就會出現乙個新的演算法,真是令人眼花繚亂。但大多都是基於經典的演算法改進而來,比如卷積神經網路(cnn)、深度信念網路(dbn)、迴圈神經網路(rnn)等等。

與過去有關的神經網路(rnn)

大多數人造神經網路,如前饋神經網路,都沒有記憶它們剛剛收到的輸入。例如,如果提供前饋神經網路的字元「wisdom」,當它到達字元「d」時,它已經忘記了它剛剛讀過字元「s」,這是乙個大問題。無論訓練該網路是多麼的辛苦,總是很難猜出下乙個最有可能的字元「o」。這使得它成為某些任務的乙個相當無用的候選人,例如在語音識別中,識別的好壞在很大程度上受益於**下乙個字元的能力。另一方面,rnn網路確實記住了之前的輸入,但是處於乙個非常複雜的水平。

我們再次輸入「wisdom」,並將其應用到乙個**性網路中。rnn網路中的單元或人造神經元在接收到「d」時也將其之前接收到的字元「s」作為其輸入。換句話說,就是把剛剛過去的事情聯合現在的事情作為輸入,來**接下來會發生的事情,這給了它有限的短期記憶的優勢。當訓練時,提供足夠的背景下,可以猜測下乙個字元最有可能是「o」。

調整和重新調整

像所有人工神經網路一樣,rnn的單元為其多個輸入分配乙個權重矩陣,這些權重代表各個輸入在網路層中所佔的比重;然後對這些權重應用乙個函式來確定單個輸出,這個函式一般被稱為損失函式(代價函式),限定實際輸出與目標輸出之間的誤差。然而,迴圈神經網路不僅對當前輸入分配權重,而且還從對過去時刻輸入分配權重。然後,通過使得損失函式最下來動態的調整分配給當前輸入和過去輸入的權重,這個過程涉及到兩個關鍵概念:梯度下降和反向傳播(bptt)。

梯度下降

機器學習中最著名的演算法之一就是梯度下降演算法。它的主要優點在於它顯著的迴避了「維數災難」。什麼是「維數災難」呢,就是說在涉及到向量的計算問題中,隨著維數的增加,計算量會呈指數倍增長。這個問題困擾著諸多神經網路系統,因為太多的變數需要計算來達到最小的損失函式。然而,梯度下降演算法通過放大多維誤差或代價函式的區域性最小值來打破維數災難。這有助於系統調整分配給各個單元的權重值,以使網路變得更加精確。

通過時間的反向傳播

rnn通過反向推理微調其權重來訓練其單元。簡單的說,就是根據單元計算出的總輸出與目標輸出之間的誤差,從網路的最終輸出端反向逐層回歸,利用損失函式的偏導調整每個單元的權重。這就是著名的bp演算法,關於bp演算法可以看本博主之前的相關部落格。而rnn網路使用的是類似的乙個版本,稱為通過時間的反向傳播(bptt)。該版本擴充套件了調整過程,包括負責前一時刻(t-1)輸入值對應的每個單元的記憶的權重。

yikes:梯度消失問題

儘管在梯度下降演算法和bptt的幫助下享有一些初步的成功,但是許多人造神經網路(包括第一代rnns網路),最終都遭受了嚴重的挫折——梯度消失問題。什麼是梯度消失問題呢,其基本思想其實很簡單。首先,來看乙個梯度的概念,將梯度視為斜率。在訓練深層神經網路的背景中,梯度值越大代表坡度越陡峭,系統能夠越快地下滑到終點線並完成訓練。但這也是研究者陷入困境的地方——當斜坡太平坦時,無法進行快速的訓練。這對於深層網路中的第一層而言特別關鍵,因為若第一層的梯度值為零,說明沒有了調整方向,無法調整相關的權重值來最下化損失函式,這一現象就是「消梯度失」。隨著梯度越來越小,訓練時間也會越來越長,類似於物理學中的沿直線運動,光滑表面,小球會一直運動下去。

大的突破:長短期記憶(lstm)

在九十年代後期,乙個重大的突破解決了上述梯度消失問題,給rnn網路發展帶來了第二次研究熱潮。這種大突破的中心思想是引入了單元長短期記憶(lstm)。

lstm的引入給ai領域創造了乙個不同的世界。這是由於這些新單元或人造神經元(如rnn的標準短期記憶單元)從一開始就記住了它們的輸入。然而,與標準的rnn單元不同,lstm可以掛載在它們的儲存器上,這些儲存器具有類似於常規計算機中的儲存器暫存器的讀/寫屬性。另外lstm是模擬的,而不是數字,使得它們的特徵可以區分。換句話說,它們的曲線是連續的,可以找到它們的斜坡的陡度。因此,lstm特別適合於反向傳播和梯度下降中所涉及的偏微積分。

總而言之,lstm不僅可以調整其權重,還可以根據訓練的梯度來保留、刪除、轉換和控制其儲存資料的流入和流出。最重要的是,lstm可以長時間儲存重要的錯誤資訊,以使梯度相對陡峭,從而網路的訓練時間相對較短。這解決了梯度消失的問題,並大大提高了當今基於lstm的rnn網路的準確性。由於rnn架構的顯著改進,谷歌、蘋果及許多其他先進的公司現在正在使用rnn為其業務中心的應用提供推動力。

總結

迴圈神經網路(rnn)可以記住其以前的輸入,當涉及到連續的、與上下文相關的任務(如語音識別)時,它比其他人造神經網路具有更大的優勢。

關於rnn網路的發展歷程:第一代rnns通過反向傳播和梯度下降演算法達到了糾正錯誤的能力。但梯度消失問題阻止了rnn的發展;直到2023年,引入了乙個基於lstm的架構後,取得了大的突破。

新的方法有效地將rnn網路中的每個單元轉變成乙個模擬計算機,大大提高了網路精度。

迴圈神經網路文字與時間序列感想

使用pip install quandl獲得google股價資料集,該資料集包含3424行12列。列使用其中5個屬性,訓練集選用前2850行,測試集選用後624行。假設視窗長度或者timestep為50,以長度為1滾動構建訓練集,則獲得的網路輸入向量為 2800,50,5 即滾動次數,時間步長,一行...

時間序列資料

出生 gdp溫度 時間要素 年 季度 月 周 日 數值要素 長期變動趨勢 相當長的一段時間,受長期趨勢影響 持續上公升 下降 不規則變動 隨機擾動項 含白噪音 迴圈變動 市場經濟的商業週期 或者整個國家的經濟週期 1 資料具有週期性才能使用時間序列分解,例如資料是月份資料,季度資料,如果是年份資料則...

神經網路的認識(二)深層神經網路

損失函式 神經網路優化演算法 神經網路進一步優化 深層學習有兩個非常重要的特性 多層和非線性 線性模型的侷限性,就是任意線性模型的組合仍然還是線性模型。所以引出啟用函式,經過啟用函式變換完的輸出就不再是線性的了。如果將每乙個神經元 也就是神經網路中的節點 的輸出通過乙個非線性函式,那麼整個神經網路的...