1. 程式人生 > >循環神經網絡 RNN

循環神經網絡 RNN

大戰 ogl 全部 傳統 Go AR 發展歷程 掛載 著名

隨著科學技術的發展以及硬件計算能力的大幅提升,人工智能已經從幾十年的幕後工作一下子躍入人們眼簾。人工智能的背後源自於大數據、高性能的硬件與優秀的算法的支持。2016年,深度學習已成為Google搜索的熱詞,隨著最近一兩年的圍棋人機大戰中,阿法狗完勝世界冠軍後,人們感覺到再也無法抵擋住AI的車輪的快速駛來。在2017年這一年中,AI已經突破天際,相關產品也出現在人們的生活中,比如智能機器人、無人駕駛以及語音搜索等。最近,世界智能大會在天津舉辦成功,大會上許多業內行家及企業家發表自己對未來的看法,可以了解到,大多數的科技公司及研究機構都非常看好人工智能的前景,比如百度公司將自己的全部身家壓在人工智能上,不管破釜沈舟後是一舉成名還是一敗塗地,只要不是一無所獲就行。為什麽突然之間深度學習會有這麽大的效應與熱潮呢?這是因為科技改變生活,很多的職業可能在今後的時間裏慢慢被人工智能所取代。全民都在熱議人工智能與深度學習,就連Yann LeCun大牛都感受到了人工智能在中國的火熱!

技術分享圖片

言歸正傳,人工智能的背後是大數據、優秀的算法以及強大運算能力的硬件支持。比如,英偉達公司憑借自己的強大的硬件研發能力以及對深度學習框架的支持奪得世全球最聰明的五十家公司榜首。另外優秀的深度學習算法有很多,時不時就會出現一個新的算法,真是令人眼花繚亂。但大多都是基於經典的算法改進而來,比如卷積神經網絡(CNN)、深度信念網絡(DBN)、循環神經網絡(RNN)等等。

本文將介紹經典的網絡之循環神經網絡(RNN),這一網絡也是時序數據的首選網絡。當涉及某些順序機器學習任務時,RNN可以達到很高的精度,沒有其他算法可以與之一較高下。這是由於傳統的神經網絡只是具有一種短期記憶,而RNN具有有限的短期記憶的優勢。然而,第一代RNNs網絡並沒有引起人們著重的註意,這是由於研究人員在利用反向傳播和梯度下降算法過程中遭受到了嚴重的梯度消失問題,阻礙了RNN幾十年的發展。最後,於90年代後期出現了重大突破,導致更加準確的新一代RNN的問世。基於這一突破的近二十年,直到Google Voice Search和Apple Siri等應用程序開始搶奪其關鍵流程,開發人員完善和優化了新一代的RNN。現在,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的發展;直到1997年,引入了一個基於LSTM的架構後,取得了大的突破。
  • 新的方法有效地將RNN網絡中的每個單元轉變成一個模擬計算機,大大提高了網絡精度。

作者信息

Jason Roell:軟件工程師,熱愛深度學習及其可改變技術的應用。

Linkedin:

循環神經網絡 RNN