神經網絡和深度學習技術是當今大多數高級智能應用的基礎。在本文中,來自阿里巴巴搜索部門的高級算法專家孫飛博士將簡要介紹神經網絡的發展,並討論該領域的最新方法。
文章主要圍繞以下五個方面展開:
- 神經網絡的演變
- 傳感器模型
- 前饋神經網絡
- 反向傳播
- 深度學習基礎知識
1、神經網絡的演變
在我們深入研究神經網絡的歷史發展之前,讓我們先介紹一下神經網絡的概念。神經網絡主要從信息處理角度對人腦神經元網絡進行抽象, 建立某種簡單模型,這種模型使用大量的計算神經元,這些神經元通過加權連接層連接。每一層神經元都能夠進行大規模的並行計算並在它們之間傳遞信息。
下面的時間軸顯示了神經網絡的演變:
神經網絡的起源甚至可以追溯到計算機本身的發展,第一個神經網絡出現在20世紀40年代。我們將回顧一下歷史,幫助大家更好地理解神經網絡的基礎知識。
第一代神經網絡神經元起著驗證作用。這些神經元的設計者只是想確認他們可以構建用於計算的神經網絡。這些網絡不能用於培訓或學習;它們只是作為邏輯門電路。它們的輸入和輸出是二進制的,權重是預定義的。
第二階段的神經網絡發展出現在20世紀50年代和60年代。這涉及到羅斯布拉特在傳感器模型和赫伯特學習原理方面的開創性工作。
2、傳感器模型
我們上面提到的傳感器模型和神經元模型是相似的,但是有一些關鍵的區別。傳感器模型中的激活算法可以是中斷算法,也可以是sigmoid算法,其輸入可以是實數向量,而不是神經元模型使用的二進制向量。與神經元模型不同,傳感器模型具有學習能力。
接下來,我們將討論傳感器模型的一些特殊特性。
我們可以考慮輸入值 (x1..., xn) 為N維空間中的座標,wTx-w0 = 0為N維空間中的超平面。顯然,如果wTx-w0 < 0,那麼點落在超平面以下,而如果wTx-w0 > 0,則點落在超平面上。
傳感器模型對應於分類器的超平面,能夠在N維空間中分離不同類型的點。看下圖,我們可以看到傳感器模型是一個線性分類器。
傳感器模型能夠方便地對基本的邏輯操作進行分類,如AND、OR和NOT。
我們可以通過傳感器模型對所有的邏輯操作進行分類嗎?答案當然是否定的。例如,通過單一的線性傳感器模型很難對Exclusive OR (異或)操作進行分類,這是神經網絡在第一個峰值之後很快進入發展的低點的主要原因之一。包括Minsky在內的幾位作者討論了傳感器模型的問題。然而,在這個問題上許多人誤解了他們的意思。
事實上,像Minsky這樣的作者指出,一個人可以通過多層傳感器模型實現異或操作;然而,由於學術界當時缺乏研究多層傳感器模型的有效方法,神經網絡的發展陷入了第一個低谷。
下圖直觀地展示了多層傳感器模型如何實現異或操作:
3、前饋神經網絡
進入20世紀80年代,由於傳感器模型神經網絡的表達能力侷限於線性分類任務,神經網絡的發展開始進入多層傳感器階段。經典的多層神經網絡是前饋神經網絡。
從下圖中我們可以看到,它涉及一個輸入層、一個包含未定義節點數量的隱藏層和一個輸出層。
我們可以用多層傳感器模型來表示任何邏輯運算,但這就引入了三層之間的加權學習問題。當xk從輸入層傳輸到隱藏層上的加權vkj,然後通過sigmoid這樣的激活算法,我們可以從隱藏層中檢索相應的值hj。同樣,我們可以使用類似的操作,使用hj值從輸出層派生yi節點值。為了學習,我們需要w和v矩陣的加權信息,這樣我們才能最終得到估計值y和實際值d。
如果你對機器學習有基本的瞭解,你就會明白為什麼我們要用梯度下降法來學習一個模型。對傳感器模型應用梯度下降的原理是相當簡單的,我們可以從下圖中看到。首先,我們要確定模型的損失。
示例使用一個平方根損失和試圖關閉之間的差距模擬值y和實際價值d。為了計算方便,在大多數情況下,我們使用根關係E = 1/2(dy)^ 2 = 1/2(d-f(x))^ 2。
根據梯度下降法原則,權重更新週期:wj←wi +α(d−f(x))f′(x),α是我們可以手動調整學習的速度。
4、反向傳播(Back-Propagation)
如何在多層前饋神經網絡中學習所有參數?頂層的參數很容易獲得。通過比較計算模型輸出的估計值與實測值的差值,利用梯度下降原理得到參數結果,可以得到參數。當我們試圖從隱藏層獲取參數時,問題就出現了。即使我們可以計算模型的輸出,我們也無法知道期望值是多少,因此我們也無法有效地訓練多層神經網絡。這個問題困擾了研究人員很長一段時間,導致神經網絡在20世紀60年代之後發展停滯不前。
後來,在70年代,一些科學家獨立地提出了反向傳播算法的想法。這種類型的算法背後的基本思想其實很簡單。雖然當時沒有辦法根據隱藏層的期望值來更新,但是可以通過隱藏層傳遞的錯誤來更新隱藏層和其他層之間的權重。當計算梯度時,由於隱藏層中的所有節點都與輸出層中的多個節點相關,所以前一層中的所有層都被聚集並一起處理。
反向傳播的另一個優點是我們可以同時在同一層上執行節點的梯度和加權,因為它們是不相關的。我們可以用偽代碼表示整個反向傳播過程如下:
接下來,我們來討論一下反向傳播神經網絡的其他特徵。反向傳播實際上是一個鏈式法則。它可以很容易地推廣任何具有映射的計算。根據梯度函數,我們可以使用反向傳播神經網絡生成局部優化解,而不是全局優化解。然而,從一般的角度來看,反向傳播算法產生的結果通常是一個令人滿意的優化解決方案。
下圖是反向傳播算法的直觀表示:
在大多數情況下,反向傳播神經網絡會找到範圍內最小的可能值;但是,如果我們離開這個範圍,我們可能會發現更好的價值。在實際應用中,有許多簡單有效的方法來解決這類問題,例如,我們可以嘗試不同的隨機初始化方法。此外,在實踐中,在現代深度學習領域中經常使用的模型中,初始化方法對最終結果有重要的影響。強迫模型離開優化範圍的另一種方法是在訓練過程中引入隨機噪聲,或者使用遺傳算法防止訓練模型在非理想優化位置停止。
反向傳播神經網絡是機器學習的一個很好的模型,當談到機器學習時,我們不得不注意到在機器學習過程中經常遇到的一個基本問題,那就是過擬合問題。過度擬合的一個常見表現是在訓練過程中,即使模型的損失不斷下降,測試組的損失和誤差也會增加。有兩種典型的避免過度擬合的方法:
- 早期停止:我們可以提前分離一個驗證組,並在培訓期間對這個已經驗證過的組運行它。我們可以觀察模型的損失,如果驗證組的損失已經停止下降,而培訓組的損失仍在下降,那麼我們可以提前停止培訓,防止過度擬合。
- 正則化:我們可以在神經網絡中增加規則。現在流行的drop方法是隨機刪除一些節點或邊。這種方法可以作為正則化的一種形式,在防止過擬合方面非常有效。
儘管神經網絡在20世紀80年代非常流行,但不幸的是,它們在20世紀90年代進入了發展的另一個低谷。許多因素促成了這一低點。例如,Support Vector Machines,在20世紀90年代是一個流行的模型,在各種大型會議上登臺,並在各種領域得到應用。Support Vector Machines具有優秀的統計學習理論,易於直觀理解。它們也非常有效,併產生接近理想的結果。
在這種轉變中,Support Vector Machines背後的統計學習理論的興起給神經網絡的發展帶來了不小的壓力。另一方面,從神經網絡本身的角度來看,即使你可以在理論上使用反向傳播網絡來訓練任何神經網絡,在實際應用中,我們注意到,隨著神經網絡中層數的增加,訓練神經網絡的難度也會成倍增加。例如,在20世紀90年代初,人們注意到在一個神經網絡中,有相當多的層,通常會出現梯度損失或梯度爆炸。
例如,一個簡單的梯度損失的例子是,神經網絡中的每一層都是一個乙基結構層,因此,它在反向傳播過程中的損失被鏈接到一個乙基結構梯度中。當一系列元素串在一起時,如果其中一個梯度非常小,那麼梯度就會變得越來越小。實際上,在傳播了一層或兩層之後,這個梯度就消失了。梯度損失導致深層參數停止變化,很難得到有意義的結果。這就是為什麼多層神經網絡很難訓練的原因之一。
學術界對這一問題進行了深入的研究,得出的結論是,最簡單的處理方法是改變激活算法。一開始我們嘗試使用修正的激活算法,因為sigmoid算法是一種很容易導致梯度損失的索引方法。另一方面,修正了sigmoid函數並替換了max (0,x)從下圖我們可以看到,在0以上的估計值的梯度是1,這就避免了梯度消失的問題。但是,當估計值小於0時,我們可以看到梯度又為0,所以ReLU算法必須是不完美的。後來,一些改進的算法出現了,包括Leaky ReLU和參數整流器(PReLU)。估計x小於0時,我們可以將它轉換成一個像0.01或α係數,以防止它實際上是0。
隨著神經網絡的發展,我們後來提出了許多方法來解決在結構層面上通過梯度的問題。例如,元模型、LSTM模型和現代圖像分析使用了許多跨層鏈接方法來更容易地傳播梯度。
接下來,我們將進一步深入學習,特別是卷積神經網絡(CNN)和遞歸神經網絡(RNN)。
5、深度學習基礎知識
從20世紀90年代的第二個發展低點到2006年,神經網絡再一次引起了大眾的關注,這一次比以往更加有力。在神經網絡興起的過程中,有一件大事發生了,那就是Hinton在包括Salahundinov在內的許多地方提交的兩篇關於多層神經網絡(現在被稱為“深度學習”)的論文。
其中一篇論文解決了神經網絡初始化值的設置問題。簡單地說,解決方案是將輸入值考慮為x,輸出值考慮為解碼後的x,然後通過這種方法找到更好的初始化點。另一篇論文提出了一種快速訓練深層神經網絡的方法。實際上,神經網絡的流行有很多因素,例如,計算資源的巨大增長和數據的可用性。在20世紀80年代,由於缺乏數據和計算資源,很難訓練出大規模的神經網絡。
神經網絡的早期興起是由三個不朽人物推動的,即 Hinton, Bengio, 和LeCun。Hinton的主要成就是在Restricted Boltzmann Machine和Deep Autoencoder(深自動編碼器)。Bengio的主要貢獻是在使用元模型進行深度學習方面取得了一系列突破。這也是深度學習經歷重大突破的第一個領域。
2013年,基於元模型的語言建模已經能夠超越當時最有效的方法——概率模型。LeCun的主要成就是與CNN相關的研究。深度學習的主要表現形式是在許多主要的高峰,如NIPS、ICML、CVPR、ACL,在那裡它吸引了大量的關注。這包括谷歌大腦的出現、Deep Mind和Facebook AI,這些都是他們在深度學習領域的研究中心。
深度學習吸引大眾關注後的第一個突破是語音識別領域。在我們開始使用深度學習之前,模型都是在之前定義的統計數據庫上訓練的。2010年,微軟使用了一個深度學習神經網絡進行語音識別。從下圖可以看出,兩個誤差指標都下降了2/3,有了明顯的改善。基於最新的ResNet技術,微軟已經將該指標降低到6.9%,並將逐年改進。
在圖像分類領域,CNN模型在2012年以ImageNet的形式取得了重大突破。在ImageNet中,使用大量的數據收集對圖像分類進行測試,然後將其分類為1000種類型。在深度學習應用之前,圖像分類系統的最佳錯誤率為25.8%(2011年),由於Hinton和他的學生在2012年使用CNN所做的工作,其錯誤率僅為10%。
從圖中可以看出,自2012年以來,該指標每年都有重大突破,都是利用CNN模型實現的。
這些巨大的成就在很大程度上歸功於現代系統的多層結構,因為它們允許獨立的學習和通過分層抽象結構表達數據的能力。抽象的特性可以應用到各種任務中,這對當前深度學習的流行有很大的幫助。
接下來,我們將介紹兩種經典的和常見的深度學習神經網絡類型:一種是卷積神經網絡(tional neural Network, CNN),另一種是遞歸神經網絡(Recurrent Neural Network,RNN)。
卷積神經網絡 Convolutional Neural Networks
卷積神經網絡有兩個核心概念。一個是卷積,另一個是pooling。在這一點上,有些人可能會問為什麼我們不簡單地使用前饋神經網絡而不是CNN。以1000x1000的圖像為例,一個神經網絡將在隱藏層上有100萬個節點。前饋神經網絡,將10 ^ 12個參數。此時,系統幾乎不可能學習,因為它需要大量的估計。
然而,很多圖片都有這樣的特點。如果我們使用CNN對圖像進行分類,那麼由於卷積的概念,隱藏層上的每個節點只需要連接和掃描圖像的一個位置的特徵。如果隱藏層上的每個節點連接到10*10的估計,則最終參數的數量為1億,如果可以共享多個隱藏層訪問的局部參數,則參數的數量顯著減少。
從下面的圖片來看,前饋神經網絡和CNN之間的差異是巨大的。圖像中的模型從左到右是完全連接的、正常的、前饋的、完全連接的前饋,CNN建模神經網絡。我們可以看到,CNN神經網絡的隱層節點的連接權值參數可以共享。
pooling是另一個操作。CNN將在卷積原理的基礎上,在中間形成一個隱藏層,即 pooling層。最常用的 pooling化方法是Max Pooling(最大化),其中隱藏層上的節點選擇最大的輸出值。由於多個內核是pooling的,所以在中間有多個隱藏層節點。
好處是什麼?首先,匯聚進一步減少了參數的數量,其次,它提供了一定數量的平移不變性。如圖所示,如果圖像中顯示的九個節點中有一個是經過翻譯的,那麼在pooling中生成的節點將保持不變。
CNN的這兩個特點使得它在圖像處理領域非常流行,成為圖像處理領域的標準。下面的可視化汽車示例是CNN在圖像分類領域的應用的一個很好的例子。在將汽車的原始圖像輸入到CNN模型後,我們可以通過卷積和ReLU激活層傳遞一些簡單粗糙的特徵,如邊緣和點。我們可以直觀地看到,它們越接近最上面輸出層的輸出圖像,它們就越接近汽車的輪廓。這個過程最終將檢索一個隱藏層表示,並將其連接到分類層,然後它將接收圖像的分類,如圖像中顯示的汽車、卡車、飛機、輪船和馬。
下面的圖片是萊昆和其他筆跡識別領域的研究人員早期使用的神經網絡。這個網絡在20世紀90年代被應用於美國郵政系統。有興趣的讀者可以登錄LeCun的網站查看手寫識別的動態過程。
雖然CNN在圖像識別領域非常受歡迎,但在過去的兩年裡,它也在文本識別方面發揮了重要作用。例如,CNN是目前文本分類最優解的基礎。在確定文本的類別時,我們真正需要做的是尋找文本中關鍵字的指示,這是一個非常適合CNN模型的任務。
CNN擁有廣泛的現實應用,例如在調查、自動駕駛汽車、分割和神經系統。神經類型是一個迷人的應用。例如,在應用商店裡有一個很受歡迎的應用程序叫Prisma,它允許用戶上傳一張圖片並將其轉換成另一種風格。例如,它可以轉換成Van Goh的星空風格。這個過程很大程度上依賴於CNN。
遞歸神經網絡 Recursive Neural Networks
至於遞歸神經網絡背後的基本原則,從下面的圖片我們可以看出這樣一個網絡的輸出不僅依賴於輸出x但隱層的狀態,這是更新根據先前輸入x。擴大圖像顯示整個過程。第一個輸入的隱藏層是S(t-1),它影響下一個輸入X(t)。遞歸神經網絡模型的主要優點是,我們可以在文本、語言和語音等序列數據操作中使用它,在這些操作中,當前數據的狀態受以前的數據狀態的影響。使用前饋神經網絡處理這類數據非常困難。
說到遞歸神經網絡,我們不應該提及我們前面提到的LSTM模型。LSTM實際上不是一個完整的神經網絡。簡單地說,它是經過複雜處理的RNN節點的結果。LSTM有三個門,即輸入門、遺忘門和輸出門。
每個這些門用於處理單元中的數據,並確定是否應該輸入、遺忘或輸出單元中的數據
最後,讓我們談一談神經網絡的跨學科應用,它正在得到廣泛的接受。此應用程序涉及將圖像轉換為圖像的文本描述或描述圖像的標題。我們可以先使用CNN模型來描述具體的實現過程,提取圖像的相關信息並生成矢量表示。稍後,我們可以將該向量作為輸入傳遞給已經訓練好的遞歸神經網絡,以生成圖像的描述。
總結
在本文中,我們討論了神經網絡的發展,並介紹了神經網絡的幾個基本概念和方法。以上文章是基於孫飛博士在一年一度的阿里巴巴雲計算大會上的演講。他目前正在研究推薦系統和文本生成方法。
閱讀更多 程序你好 的文章