① c神經網路中間層的層數對神經網路的性能有何影響
神經網路中間層數目越多,計算精度越高,但是計算量也越大。所以適當的中間層數目選擇很重要,既要滿足計算精度要求,又要保證網路結構盡可能緊湊,計算量不至於太大。而且中間層數目增加到一定程度,計算精度的提高幾乎可以忽略不計,甚至精度會下降。
② 神經網路的關鍵是什麼
神經網路的關鍵是什麼
相對於傳統的線性和非線性方法,為什麼神經網路會如此強大?
當你有一個線性模型,每一個功能要麼對你有幫助,要麼對你有傷害,這種假設是線性模型中固有的。因此線性模型要麼功能異常強大,用類1表示;要麼則毫無用處,用類2表示。所有的解決方案,要麼導致該功能獲得巨大的價值;要麼價值變得微不足道。你永遠不會有這么一個狀態說,在這個區間,該功能就是代表類1;但是在另一個區間,它代表類2。
線性和非線性方法局限性很大。也就是說,如果你分析圖片,舉個例子,尋找狗狗的照片,它很可能會進入到一個特定的子集裡面,比如只顯示有一隻狗的照片,或是顯示某一像素和其他類型的圖片。在線性模式裡面,你無法確定復雜的關系集。相比於線性模型,非線性模型可能會顯得更強大一些,但是這種模式同樣難以訓練。我們會再一次進入到所謂最優化理論的問題之中,這也是我們在很長一段時間里認為神經網路還不是足夠好的原因之一,因為他們會「過擬合」,通俗的說,就是太過強大。我們無法做預測,也無法確保最優化方案。或許,這可能就是為什麼神經網路從當下暫時消失的原因吧。
在神經網路理論中,機器學習有很多分支和方法,你能總結一些關鍵方法嗎?
到目前為止,最成功的方法是監督學習方法,它使用了一個比較老的演算法,稱為反向傳播,構建了一個擁有許多不同輸出的神經網路。
讓我們看下一個神經網路構建,這個網路已經非常流行了,叫做卷積神經網路。這個理念是機器學習研究人員構建了一個多層架構的模型,每一層都可以用不同的方法處理之前一層的連接。
在第一層,你有一個窗口,上面會給圖像分配權值,它也變成了該層的輸入。由於權值「卷積」,該層也被稱為卷積層,它會自我重疊。接著後面會有若干個不同類型的層,每層都有不同的屬性,絕大多數都是非線性的。
最後一層會有1萬個潛在神經元輸入,那些激活的神經輸出,每一個都對應了一個特殊的標簽,可以用來識別圖像。第一類可能是一隻貓,第二類可能是一輛車,以此推到所有一萬個類,這樣一張「圖像網」就出來了。如果第一個神經元(一隻貓)與1萬個神經元中絕大多數都匹配,那麼這張圖像就能被識別出來,是一張貓的圖像。
這種監督學習方法的缺點是,在訓練的時候,你必須要在圖像上應用標簽,這是一輛車,這是一個動物園等。
沒錯,那麼無監督學習方法呢?
無監督學習方法還不是那麼受歡迎,它涉及到「自編碼器」。這種神經網路不會用來分類圖像,但是可以壓縮圖像。同我剛才提及的方法來讀取圖像,識別一個權值,並在一個卷積層內用像素填滿。其他若干層也這樣,包括相比於其它層小的多的中間層。這樣做的話,相關的神經元會變得很少,基本上,你讀取圖像時會進入到一個瓶頸,之後從另一邊走出來,並嘗試重新構建該圖像。
在無監督學習訓練下,不需要打標簽,因為你所做的就是把圖像放入到神經網路的兩端,然後訓練網路適應圖像,特別是訓練中間層。一旦你這么做了,那麼就擁有了一個知道如何壓縮圖像的神經網路。無監督學習方法可以給你提供能應用在其他分類器的功能,因此如果你有哪怕一點點標簽訓練數據,沒問題,它一樣可以為你提供大量圖像。你可以把這些圖像看做是無標簽訓練數據,並使用這些圖像構建一個「自編輯器」,然後從這個自編輯器中導出一些功能,這些功能適合使用一些訓練數據,以此找到對特殊模型敏感的自動編碼神經網路中的神經元。
③ 有人可以介紹一下什麼是"神經網路"嗎
由於神經網路是多學科交叉的產物,各個相關的學科領域對神經網路
都有各自的看法,因此,關於神經網路的定義,在科學界存在許多不同的
見解。目前使用得最廣泛的是T.Koholen的定義,即"神經網路是由具有適
應性的簡單單元組成的廣泛並行互連的網路,它的組織能夠模擬生物神經
系統對真實世界物體所作出的交互反應。"
如果我們將人腦神經信息活動的特點與現行馮·諾依曼計算機的工作方
式進行比較,就可以看出人腦具有以下鮮明特徵:
1. 巨量並行性。
在馮·諾依曼機中,信息處理的方式是集中、串列的,即所有的程序指
令都必須調到CPU中後再一條一條地執行。而人在識別一幅圖像或作出一項
決策時,存在於腦中的多方面的知識和經驗會同時並發作用以迅速作出解答。
據研究,人腦中約有多達10^(10)~10^(11)數量級的神經元,每一個神經元
具有103數量級的連接,這就提供了巨大的存儲容量,在需要時能以很高的
反應速度作出判斷。
2. 信息處理和存儲單元結合在一起。
在馮·諾依曼機中,存儲內容和存儲地址是分開的,必須先找出存儲器的
地址,然後才能查出所存儲的內容。一旦存儲器發生了硬體故障,存儲器中
存儲的所有信息就都將受到毀壞。而人腦神經元既有信息處理能力又有存儲
功能,所以它在進行回憶時不僅不用先找存儲地址再調出所存內容,而且可
以由一部分內容恢復全部內容。當發生"硬體"故障(例如頭部受傷)時,並
不是所有存儲的信息都失效,而是僅有被損壞得最嚴重的那部分信息丟失。
3. 自組織自學習功能。
馮·諾依曼機沒有主動學習能力和自適應能力,它只能不折不扣地按照
人們已經編制好的程序步驟來進行相應的數值計算或邏輯計算。而人腦能夠
通過內部自組織、自學習的能力,不斷地適應外界環境,從而可以有效地處
理各種模擬的、模糊的或隨機的問題。
神經網路研究的主要發展過程大致可分為四個階段:
1. 第一階段是在五十年代中期之前。
西班牙解剖學家Cajal於十九世紀末創立了神經元學說,該學說認為神經
元的形狀呈兩極,其細胞體和樹突從其他神經元接受沖動,而軸索則將信號
向遠離細胞體的方向傳遞。在他之後發明的各種染色技術和微電極技術不斷
提供了有關神經元的主要特徵及其電學性質。
1943年,美國的心理學家W.S.McCulloch和數學家W.A.Pitts在論文《神經
活動中所蘊含思想的邏輯活動》中,提出了一個非常簡單的神經元模型,即
M-P模型。該模型將神經元當作一個功能邏輯器件來對待,從而開創了神經
網路模型的理論研究。
1949年,心理學家D.O. Hebb寫了一本題為《行為的組織》的書,在這本
書中他提出了神經元之間連接強度變化的規則,即後來所謂的Hebb學習法則。
Hebb寫道:"當神經細胞A的軸突足夠靠近細胞B並能使之興奮時,如果A重
復或持續地激發B,那麼這兩個細胞或其中一個細胞上必然有某種生長或代
謝過程上的變化,這種變化使A激活B的效率有所增加。"簡單地說,就是
如果兩個神經元都處於興奮狀態,那麼它們之間的突觸連接強度將會得到增
強。
五十年代初,生理學家Hodykin和數學家Huxley在研究神經細胞膜等效電
路時,將膜上離子的遷移變化分別等效為可變的Na+電阻和K+電阻,從而建
立了著名的Hodykin-Huxley方程。
這些先驅者的工作激發了許多學者從事這一領域的研究,從而為神經計
算的出現打下了基礎。
2. 第二階段從五十年代中期到六十年代末。
1958年,F.Rosenblatt等人研製出了歷史上第一個具有學習型神經網路
特點的模式識別裝置,即代號為Mark I的感知機(Perceptron),這一重
大事件是神經網路研究進入第二階段的標志。對於最簡單的沒有中間層的
感知機,Rosenblatt證明了一種學習演算法的收斂性,這種學習演算法通過迭代
地改變連接權來使網路執行預期的計算。
稍後於Rosenblatt,B.Widrow等人創造出了一種不同類型的會學習的神經
網路處理單元,即自適應線性元件Adaline,並且還為Adaline找出了一種有
力的學習規則,這個規則至今仍被廣泛應用。Widrow還建立了第一家神經計
算機硬體公司,並在六十年代中期實際生產商用神經計算機和神經計算機軟
件。
除Rosenblatt和Widrow外,在這個階段還有許多人在神經計算的結構和
實現思想方面作出了很大的貢獻。例如,K.Steinbuch研究了稱為學習矩陣
的一種二進制聯想網路結構及其硬體實現。N.Nilsson於1965年出版的
《機器學習》一書對這一時期的活動作了總結。
3. 第三階段從六十年代末到八十年代初。
第三階段開始的標志是1969年M.Minsky和S.Papert所著的《感知機》一書
的出版。該書對單層神經網路進行了深入分析,並且從數學上證明了這種網
絡功能有限,甚至不能解決象"異或"這樣的簡單邏輯運算問題。同時,他們
還發現有許多模式是不能用單層網路訓練的,而多層網路是否可行還很值得
懷疑。
由於M.Minsky在人工智慧領域中的巨大威望,他在論著中作出的悲觀結論
給當時神經網路沿感知機方向的研究潑了一盆冷水。在《感知機》一書出版
後,美國聯邦基金有15年之久沒有資助神經網路方面的研究工作,前蘇聯也
取消了幾項有前途的研究計劃。
但是,即使在這個低潮期里,仍有一些研究者繼續從事神經網路的研究工
作,如美國波士頓大學的S.Grossberg、芬蘭赫爾辛基技術大學的T.Kohonen
以及日本東京大學的甘利俊一等人。他們堅持不懈的工作為神經網路研究的
復興開辟了道路。
4. 第四階段從八十年代初至今。
1982年,美國加州理工學院的生物物理學家J.J.Hopfield採用全互連型
神經網路模型,利用所定義的計算能量函數,成功地求解了計算復雜度為
NP完全型的旅行商問題(Travelling Salesman Problem,簡稱TSP)。這
項突破性進展標志著神經網路方面的研究進入了第四階段,也是蓬勃發展
的階段。
Hopfield模型提出後,許多研究者力圖擴展該模型,使之更接近人腦的
功能特性。1983年,T.Sejnowski和G.Hinton提出了"隱單元"的概念,並且
研製出了Boltzmann機。日本的福島邦房在Rosenblatt的感知機的基礎上,
增加隱層單元,構造出了可以實現聯想學習的"認知機"。Kohonen應用3000
個閾器件構造神經網路實現了二維網路的聯想式學習功能。1986年,
D.Rumelhart和J.McClelland出版了具有轟動性的著作《並行分布處理-認知
微結構的探索》,該書的問世宣告神經網路的研究進入了高潮。
1987年,首屆國際神經網路大會在聖地亞哥召開,國際神經網路聯合會
(INNS)成立。隨後INNS創辦了刊物《Journal Neural Networks》,其他
專業雜志如《Neural Computation》,《IEEE Transactions on Neural
Networks》,《International Journal of Neural Systems》等也紛紛
問世。世界上許多著名大學相繼宣布成立神經計算研究所並制訂有關教育
計劃,許多國家也陸續成立了神經網路學會,並召開了多種地區性、國際性
會議,優秀論著、重大成果不斷涌現。
今天,在經過多年的准備與探索之後,神經網路的研究工作已進入了決
定性的階段。日本、美國及西歐各國均制訂了有關的研究規劃。
日本制訂了一個"人類前沿科學計劃"。這項計劃為期15-20年,僅
初期投資就超過了1萬億日元。在該計劃中,神經網路和腦功能的研究佔有
重要地位,因為所謂"人類前沿科學"首先指的就是有關人類大腦以及通過
借鑒人腦而研製新一代計算機的科學領域。
在美國,神經網路的研究得到了軍方的強有力的支持。美國國防部投資
4億美元,由國防部高級研究計劃局(DAPRA)制訂了一個8年研究計劃,
並成立了相應的組織和指導委員會。同時,海軍研究辦公室(ONR)、空軍
科研辦公室(AFOSR)等也紛紛投入巨額資金進行神經網路的研究。DARPA認
為神經網路"看來是解決機器智能的唯一希望",並認為"這是一項比原子彈
工程更重要的技術"。美國國家科學基金會(NSF)、國家航空航天局(NASA)
等政府機構對神經網路的發展也都非常重視,它們以不同的形式支持了眾多
的研究課題。
歐共體也制訂了相應的研究計劃。在其ESPRIT計劃中,就有一個項目是
"神經網路在歐洲工業中的應用",除了英、德兩國的原子能機構外,還有多
個歐洲大公司卷進這個研究項目,如英國航天航空公司、德國西門子公司等。
此外,西歐一些國家還有自己的研究計劃,如德國從1988年就開始進行一個
叫作"神經資訊理論"的研究計劃。
我國從1986年開始,先後召開了多次非正式的神經網路研討會。1990年
12月,由中國計算機學會、電子學會、人工智慧學會、自動化學會、通信學
會、物理學會、生物物理學會和心理學會等八個學會聯合在北京召開了"中
國神經網路首屆學術會議",從而開創了我國神經網路研究的新紀元。
④ 深度學習入門課程筆記 神經網路
深度學習入門課程筆記 神經網路
神經網路:
首先咱們先來回顧一下之前課程所講前向傳播和反向傳播知識點,前往傳播就是從輸入X到最終得到LOSS值的過程,反向傳播是從最終的LOSS值經過梯度的傳播最終計算出權重矩陣W中所有參數對於最終的LOSS值影響大小,更新參數就是通過不同權重參數對終LOSS值的影響來調節參數,使得咱們的參數矩陣W能夠更擬合咱們的數據,也就是使得最終的LOSS值能夠降低。這一系列的過程就是相當於完成了一次迭代
神經網路本質
下面咱們就來看看神經網路跟傳統的線性分類到底有什麼區別,從公式中我們可以看出,一個最明顯的區別就是神經網路函數多了一個MAX()計算也就是說我們咱們現在的函數公式變成了一個非線性的操作,也正是這種非線性的函數使得神經網路相比於傳統的線性分類更強大,因為非線性可以使得咱們的函數去擬合更復雜的數據。
神經網路結構
接下來咱們就來看一下神經網路的結構,從途中可以看出,神經網路是一個層次的結構
輸入層也就是代表著數據源
隱層這個大家理解起來可能有些費勁,咱們可以把隱層當成是中間層也就是在這里對輸入數據進行了非線性的變換
激活函數它是跟隱層在一起的,比如這個MAX()函數就是一個激活函數,正是因為激活函數的存在才使得整個神經網路呈現出一種非線性的模式。
輸出層這個就是最終得到的結果了,比如一個分類任務,最終的輸出就是每個類別的概率值了
我們可以看到對應於多層的網路也就是有多個隱層,相當於咱們又加了一層非線性函數MAX(),這個理解起來很簡單了吧,對於深層網路來說,它具有更好的非線性也就是說網路的層數越深就更能夠去擬合更復雜的數據。
生物學上的結構
看過很多講解都提高了把神經網路和人類的腦結構相對比,我覺得這有些增加了游戲難度,因為很多同學本身對生物學結構就不是很清楚,又搞了這多名詞出來,理解起來好像更費勁了,這里咱們就不說生物學結構了,直接看右半部分,和之前的線性分類最大的區別就是我們多了一個activation function也就是咱們剛才所說的激活函數,可以說正是激活函數的存在使得整個神經網路變得強大起來。
神經元
那麼神經網路能表達多復雜的數據信息是由什麼決定的呢?這個例子給了咱們很好的解釋,神經網路是表達能力是由神經元的個數,也就是每一個隱層所函數神經元的個數來決定的,神經元越多,層數越深表達的能力也就越強,理論上我們認為神經元越多越好!
防止過擬合
咱們剛才說了神經網路具有很強的表達能力,但是也很危險的,就是說神經網路很容易發成過擬合現象,因為咱們有大量的神經元也就是導致了我們需要的參數是極其多的,那麼該怎麼辦呢?最直接的方法就是加上正則化項,它可以使得咱們的神經網路不至於過擬合很嚴重也是咱們訓練神經網路必做的一項,圖中顯示了正則化的作用!
⑤ 神經網路演算法原理
4.2.1 概述
人工神經網路的研究與計算機的研究幾乎是同步發展的。1943年心理學家McCulloch和數學家Pitts合作提出了形式神經元的數學模型,20世紀50年代末,Rosenblatt提出了感知器模型,1982年,Hopfiled引入了能量函數的概念提出了神經網路的一種數學模型,1986年,Rumelhart及LeCun等學者提出了多層感知器的反向傳播演算法等。
神經網路技術在眾多研究者的努力下,理論上日趨完善,演算法種類不斷增加。目前,有關神經網路的理論研究成果很多,出版了不少有關基礎理論的著作,並且現在仍是全球非線性科學研究的熱點之一。
神經網路是一種通過模擬人的大腦神經結構去實現人腦智能活動功能的信息處理系統,它具有人腦的基本功能,但又不是人腦的真實寫照。它是人腦的一種抽象、簡化和模擬模型,故稱之為人工神經網路(邊肇祺,2000)。
人工神經元是神經網路的節點,是神經網路的最重要組成部分之一。目前,有關神經元的模型種類繁多,最常用最簡單的模型是由閾值函數、Sigmoid 函數構成的模型(圖 4-3)。
儲層特徵研究與預測
以上演算法是對每個樣本作權值修正,也可以對各個樣本計算δj後求和,按總誤差修正權值。
⑥ bp神經網路分類預測邊界約束條件如何確定
輸入向量維數=輸入層節點數 輸出向量維數=輸出層節點數 看來你是做三層網路,只有一個隱藏層。隱藏層節點數,傳遞函數選擇都是開放課題。看你要解決什麼問題。如果簡單做demo,就自己嘗試就可以了。
如果你認可我的回答,敬請及時採納,
~如果你認可我的回答,請及時點擊【採納為滿意回答】按鈕
~~手機提問的朋友在客戶端右上角評價點【滿意】即可。
~你的採納是我前進的動力
~~O(∩_∩)O,記得好評和採納,互相幫助。
⑦ 神經網路問題,什麼閾值是2,中間層到輸出層權值為什麼是{2,1}
net.IW 屬性定義了從網路輸入向量到網路層的權值向量(即輸入層的權值向量)結構。其值為Nl*Ni的細胞矩陣,Nl為網路層數(net.numLayers),Ni為輸入向量數(net.numInputs)。通過訪問net.IW{i,j},可以獲得第i 個網路層來自第j 個輸入向量的權值向量值。 所以一般情況下net,iw{1,1}就是輸入層和隱含層之間的權值。
net.LW定義了從一個網路層到另一個網路層的權值向量結構。其值為Nl*Nl的細胞矩陣,Nl為網路層數(net.numLayers)。通過訪問net.LW{i,j},可以獲得第i 個網路層來自第j 個網路層的權值向量值。 因此,如果網路是單隱含層,net.lw{2,1}就是輸出層和隱含層之間的權值。
最需要理解的就是:這都是元胞數組。
⑧ BP神經網路的原理的BP什麼意思
原文鏈接:http://tecdat.cn/?p=19936
在本教程中,您將學習如何在R語言中創建神經網路模型。
神經網路(或人工神經網路)具有通過樣本進行學習的能力。人工神經網路是一種受生物神經元系統啟發的信息處理模型。它由大量高度互連的處理元件(稱為神經元)組成,以解決問題。它遵循非線性路徑,並在整個節點中並行處理信息。神經網路是一個復雜的自適應系統。自適應意味著它可以通過調整輸入權重來更改其內部結構。
該神經網路旨在解決人類容易遇到的問題和機器難以解決的問題,例如識別貓和狗的圖片,識別編號的圖片。這些問題通常稱為模式識別。它的應用范圍從光學字元識別到目標檢測。
本教程將涵蓋以下主題:
神經網路概論
正向傳播和反向傳播
激活函數
R中神經網路的實現
案例
利弊
結論
神經網路概論
神經網路是受人腦啟發執行特定任務的演算法。它是一組連接的輸入/輸出單元,其中每個連接都具有與之關聯的權重。在學習階段,網路通過調整權重進行學習,來預測給定輸入的正確類別標簽。
人腦由數十億個處理信息的神經細胞組成。每個神經細胞都認為是一個簡單的處理系統。被稱為生物神經網路的神經元通過電信號傳輸信息。這種並行的交互系統使大腦能夠思考和處理信息。一個神經元的樹突接收來自另一個神經元的輸入信號,並根據這些輸入將輸出響應到某個其他神經元的軸突。
創建測試數據集
創建測試數據集:專業知識得分和溝通技能得分
預測測試集的結果
使用計算函數預測測試數據的概率得分。
現在,將概率轉換為二進制類。
預測結果為1,0和1。
利弊
神經網路更靈活,可以用於回歸和分類問題。神經網路非常適合具有大量輸入(例如圖像)的非線性數據集,可以使用任意數量的輸入和層,可以並行執行工作。
還有更多可供選擇的演算法,例如SVM,決策樹和回歸演算法,這些演算法簡單,快速,易於訓練並提供更好的性能。神經網路更多的是黑盒子,需要更多的開發時間和更多的計算能力。與其他機器學習演算法相比,神經網路需要更多的數據。NN僅可用於數字輸入和非缺失值數據集。一位著名的神經網路研究人員說:「神經網路是解決任何問題的第二好的方法。最好的方法是真正理解問題。」
神經網路的用途
神經網路的特性提供了許多應用方面,例如:
模式識別:神經網路非常適合模式識別問題,例如面部識別,物體檢測,指紋識別等。
異常檢測:神經網路擅長異常檢測,它們可以輕松檢測出不適合常規模式的異常模式。
時間序列預測:神經網路可用於預測時間序列問題,例如股票價格,天氣預報。
自然語言處理:神經網路在自然語言處理任務中提供了廣泛的應用,例如文本分類,命名實體識別(NER),詞性標記,語音識別和拼寫檢查。
最受歡迎的見解
1.r語言用神經網路改進nelson-siegel模型擬合收益率曲線分析
2.r語言實現擬合神經網路預測和結果可視化
3.python用遺傳演算法-神經網路-模糊邏輯控制演算法對樂透分析
4.用於nlp的python:使用keras的多標簽文本lstm神經網路分類
5.用r語言實現神經網路預測股票實例
6.R語言基於Keras的小數據集深度學習圖像分類
7.用於NLP的seq2seq模型實例用Keras實現神經機器翻譯
8.python中基於網格搜索演算法優化的深度學習模型分析糖
9.matlab使用貝葉斯優化的深度學習
⑨ 神經網路有哪些主要分類規則並如何分類
神經網路模型的分類
人工神經網路的模型很多,可以按照不同的方法進行分類。其中,常見的兩種分類方法是,按照網路連接的拓樸結構分類和按照網路內部的信息流向分類。
1
按照網路拓樸結構分類
網路的拓樸結構,即神經元之間的連接方式。按此劃分,可將神經網路結構分為兩大類:層次型結構和互聯型結構。
層次型結構的神經網路將神經元按功能和順序的不同分為輸出層、中間層(隱層)、輸出層。輸出層各神經元負責接收來自外界的輸入信息,並傳給中間各隱層神經元;隱層是神經網路的內部信息處理層,負責信息變換。根據需要可設計為一層或多層;最後一個隱層將信息傳遞給輸出層神經元經進一步處理後向外界輸出信息處理結果。
而互連型網路結構中,任意兩個節點之間都可能存在連接路徑,因此可以根據網路中節點的連接程度將互連型網路細分為三種情況:全互連型、局部互連型和稀疏連接型
2
按照網路信息流向分類
從神經網路內部信息傳遞方向來看,可以分為兩種類型:前饋型網路和反饋型網路。
單純前饋網路的結構與分層網路結構相同,前饋是因網路信息處理的方向是從輸入層到各隱層再到輸出層逐層進行而得名的。前饋型網路中前一層的輸出是下一層的輸入,信息的處理具有逐層傳遞進行的方向性,一般不存在反饋環路。因此這類網路很容易串聯起來建立多層前饋網路。
反饋型網路的結構與單層全互連結構網路相同。在反饋型網路中的所有節點都具有信息處理功能,而且每個節點既可以從外界接受輸入,同時又可以向外界輸出。
⑩ 深度神經網路dnn怎麼調節參數
深度神經網路(DNN)目前是許多現代AI應用的基礎。
自從DNN在語音識別和圖像識別任務中展現出突破性的成果,使用DNN的應用數量呈爆炸式增加。這些DNN方法被大量應用在無人駕駛汽車,癌症檢測,游戲AI等方面。
在許多領域中,DNN目前的准確性已經超過人類。與早期的專家手動提取特徵或制定規則不同,DNN的優越性能來自於在大量數據上使用統計學習方法,從原始數據中提取高級特徵的能力,從而對輸入空間進行有效的表示。
然而,DNN超高的准確性是以超高的計算復雜度為代價的。
通常意義下的計算引擎,尤其是GPU,是DNN的基礎。因此,能夠在不犧牲准確性和增加硬體成本的前提下,提高深度神經網路的能量效率和吞吐量的方法,對於DNN在AI系統中更廣泛的應用是至關重要的。研究人員目前已經更多的將關注點放在針對DNN計算開發專用的加速方法。
鑒於篇幅,本文主要針對論文中的如下幾部分詳細介紹:
DNN的背景,歷史和應用
DNN的組成部分,以及常見的DNN模型
簡介如何使用硬體加速DNN運算
DNN的背景
人工智慧與深度神經網路
深度神經網路,也被稱為深度學習,是人工智慧領域的重要分支,根據麥卡錫(人工智慧之父)的定義,人工智慧是創造像人一樣的智能機械的科學工程。深度學習與人工智慧的關系如圖1所示:
圖1:深度神經網路與人工智慧的關系
人工智慧領域內,一個大的子領域是機器學習,由Arthur Samuel在1959年定義為:讓計算機擁有不需要明確編程即可學習的能力。
這意味著創建一個程序,這個程序可以被訓練去學習如何去做一些智能的行為,然後這個程序就可以自己完成任務。而傳統的人工啟發式方法,需要對每個新問題重新設計程序。
高效的機器學習演算法的優點是顯而易見的。一個機器學習演算法,只需通過訓練,就可以解決某一領域中每一個新問題,而不是對每個新問題特定地進行編程。
在機器學習領域,有一個部分被稱作brain-inspired computation。因為人類大腦是目前學習和解決問題最好的「機器」,很自然的,人們會從中尋找機器學習的方法。
盡管科學家們仍在探索大腦工作的細節,但是有一點被公認的是:神經元是大腦的主要計算單元。
人類大腦平均有860億個神經元。神經元相互連接,通過樹突接受其他神經元的信號,對這些信號進行計算之後,通過軸突將信號傳遞給下一個神經元。一個神經元的軸突分支出來並連接到許多其他神經元的樹突上,軸突分支和樹突之間的連接被稱為突觸。據估計,人類大腦平均有1014-1015個突觸。
突觸的一個關鍵特性是它可以縮放通過它的信號大小。這個比例因子可以被稱為權重(weight),普遍認為,大腦學習的方式是通過改變突觸的權重實現的。因此,不同的權重導致對輸入產生不同的響應。注意,學習過程是學習刺激導致的權重調整,而大腦組織(可以被認為是程序)並不改變。
大腦的這個特徵對機器學習演算法有很好的啟示。
神經網路與深度神經網路
神經元的計算是輸入值的加權和這個概念啟發了神經網路的研究。這些加權和對應於突觸的縮放值以及神經元所接收的值的組合。此外,神經元並不僅僅是輸入信號的加權和,如果是這樣的話,級聯的神經元的計算將是一種簡單的線性代數運算。
相反的是,神經元組合輸入的操作似乎是一種非線性函數,只有輸入達到某個閾值的時候,神經元才會生成輸出。因此,通過類比,我們可以知道神經網路在輸入值的加權和的基礎上應用了非線性函數。
圖2(a)展示了計算神經網路的示意圖,圖的最左邊是接受數值的「輸入層」。這些值被傳播到中間層神經元,通常也叫做網路的「隱藏層」。通過一個或更多隱藏層的加權和最終被傳播到「輸出層」,將神經網路的最終結果輸出給用戶。
圖2:神經網路示意圖
在神經網路領域,一個子領域被稱為深度學習。最初的神經網路通常只有幾層的網路。而深度網路通常有更多的層數,今天的網路一般在五層以上,甚至達到一千多層。
目前在視覺應用中使用深度神經網路的解釋是:將圖像所有像素輸入到網路的第一層之後,該層的加權和可以被解釋為表示圖像不同的低階特徵。隨著層數的加深,這些特徵被組合,從而代表更高階的圖像特徵。
例如,線可以被組合成形狀,再進一步,可以被組合成一系列形狀的集合。最後,再訓練好這些信息之後,針對各個圖像類別,網路給出由這些高階特徵組成各個對象的概率,即分類結果。
推理(Inference)與訓練(Training)
既然DNN是機器學習演算法中的一員,那麼它的基本編程思想仍然是學習。DNN的學習即確定網路的權重值。通常,學習過程被稱為訓練網路(training)。一旦訓練完成,程序可以使用由訓練確定的權值進行計算,這個使用網路完成任務的操作被被稱為推斷(inference)。
接下來,如圖3所示,我們用圖像分類作為例子來展示如何訓練一個深度神經網路。當我們使用一個DNN的時候,我們輸入一幅圖片,DNN輸出一個得分向量,每一個分數對應一個物體分類;得到最高分數的分類意味著這幅圖片最有可能屬於這個分類。
訓練DNN的首要目標就是確定如何設置權重,使得正確分類的得分最高(圖片所對應的正確分類在訓練數據集中標出),而使其他不正確分類的得分盡可能低。理想的正確分類得分與目前的權重所計算出的得分之間的差距被稱為損失函數(loss)。
因此訓練DNN的目標即找到一組權重,使得對一個較大規模數據集的loss最小。
圖3:圖像分類
權重(weight)的優化過程類似爬山的過程,這種方法被稱為梯度下降(gradient decent)。損失函數對每個權值的梯度,即損失函數對每個權值求偏導數,被用來更新權值(例:第t到t+1次迭代:,其中α被稱為學習率(Learning rate)。梯度值表明權值應該如何變化以減小loss。這個減小loss值的過程是重復迭代進行的。
梯度可以通過反向傳播(Back-Propagation)過程很高效地進行計算,loss的影響反向通過網路來計算loss是如何被每個權重影響的。
訓練權重有很多種方法。前面提到的是最常見的方法,被稱為監督學習,其中所有的訓練樣本是有標簽的。
無監督學習是另一種方法,其中所有訓練樣本都沒有標簽,最終目標是在數據中查找結構或聚類。半監督學習結合了兩種方法,只有訓練數據的一小部分被標記(例如,使用未標記的數據來定義集群邊界,並使用少量的標記數據來標記集群)。
最後,強化學習可以用來訓練一個DNN作為一個策略網路,對策略網路給出一個輸入,它可以做出一個決定,使得下一步的行動得到相應的獎勵;訓練這個網路的過程是使網路能夠做出使獎勵(即獎勵函數)最大化的決策,並且訓練過程必須平衡嘗試新行為(Exploration)和使用已知能給予高回報的行為(Exploitation)兩種方法。
用於確定權重的另一種常用方法是fine-tune,使用預先訓練好的模型的權重用作初始化,然後針對新的數據集(例如,傳遞學習)或新的約束(例如,降低的精度)調整權重。與從隨機初始化開始相比,能夠更快的訓練,並且有時會有更好的准確性。