神經網絡能解決非線性的複雜的模型問題,並且經過增長網絡的層數將具有更增強大的學習能力,另外若是再改造改造層的結構則變成各種深度學習模型,例如CNN RNN之類的。mysql
神經網絡通常被用來捕捉複雜狀況下的特徵,好比說視頻圖像中的動物類別、一名做家的寫做風格等等。算法
人腦可能有1000多億個神經元,每一個神經元均可能在幾個方向上互相鏈接着,這麼大量的神經元及鏈接就造成了一個超級大型的網絡。咱們就是由於這些網絡而存在各類各樣的思想和意識。sql
大腦神經元便是腦神經細胞,主要包括細胞體、樹突、軸突、突觸等。網絡
神經網絡就是人們試圖對大腦內部運做的模擬形式,在計算機領域,這種模型的起源至關早,能夠追溯到20世紀40年代中期,當時計算機其實也剛出現不久。架構
1943年,麥卡洛克和皮茨發表了論文《神經活動內在概念的邏輯演算》,其中首次提出了表示人腦學習功能的一種數學方法。併發
如上圖中x相似軸突,其它神經元的輸出,通過突觸鏈接樹突,通過樹突後輸入到細胞體,細胞體執行必定運算後再通過激活函數最後輸出到軸突。機器學習
這個簡單的模型就是機器學習中神經網絡的基礎模型了,不經讓咱們驚呼咱們的大腦如此的簡單,但事實並非這樣,人類對大腦的認識是在太少,能夠說幾乎尚未什麼實質性進展。而用這種模型模擬的大腦,實際上比大腦差太多太多了,若是人類是上帝造的,那上帝確定不會讓你猜透他是怎麼造的。函數
這個階段雖然大腦的神經元已經被數學建模了,咱們也並不知道這個模型是否正確,並且當時也沒有明確權重參數的調整方法。性能
進入到20世紀50年代,一種最簡單的人工神經元模型被提出來了。感知機?一聽感受就像是一個實際存在的東西,就像計算機同樣,它應該是看得見摸得着的機器吧!的確,20世紀60年代第一個硬件實現出現,當時直接將整個硬件都叫感知機,但後來感知機被改爲是算法的名字了,因此它實際上是一個算法。學習
感知機之前輩的思想做爲基礎,基於此提出了一種反饋循環的學習機制,經過計算樣本輸出結果與正確結果之間的偏差來進行權重調整。
大體的流程以下:
與感知機的學習機制不一樣,ADALINE則是訓練神經網絡模型的另一種算法,因爲它引入了梯度降低,因此能夠說它比感知機更加先進。
大概流程爲:
咱們能夠看到感知機和ADALINE已經具有了神經網絡模型的基本要素,二者都是單層神經網絡,主要用於二分類問題,經過學習能實現二分類功能。
對於早期的神經模型,它其實具備很是大的侷限性,甚至某種意義上來講,它一點用處都沒有。明斯基和帕佩特於1969年出版了《感知機》一書,其中闡明瞭感知機只能處理線性可分的問題,對於其餘複雜問題徹底無能爲力。
好比對於XOR函數,不存在任何一條直線能將其正確分割,感知機就是存在這種尷尬的狀況,這種線性不可分的狀況,感知機無法正確將兩個類別分開。至此,神經網絡進入寒冬。
既然單個神經元的感知機沒法解決非線性問題,那麼是否是能夠推廣到多個神經元組成多個神經網絡層?因而將多組神經元鏈接起來,某個神經元的輸出可輸入到其它神經元中。
多層網絡的傳播,數據被輸入第一層後,將從每一個神經元流入到下一層中對應的神經元中。而後在隱含層中進行求和並傳遞,最後到達輸出層進行處理。而學習多層網絡則須要反向傳播算法來支持,多層網絡增長了學習的複雜程度,從輸入到最後的輸出組成了很長的函數嵌套,這就增長了學習的難度。不過,好在求到時有鏈式法則的幫忙,讓事情簡單了不少。
大概流程爲:
神經網絡可用於迴歸問題和分類問題。常見的結構差別在於輸出層,若是想要獲得一個實數結果,咱們就不該該使用標準化函數,好比sigmoid的函數。由於標準化函數會使咱們的輸出結果限定在某個範圍內,而有時咱們真正想要的是連續的數值結果。
21世紀第二個十年,深度學習成爲了人工智能最閃耀的研究。2011年穀歌X實驗室從youtube抽取1000萬圖片,把它餵給採用了深度學習的谷歌大腦,三天後這個大腦在沒有人類的幫助下本身發現了貓。2012年微軟使用深度學習,完成演講者實時語音識別、翻譯,也就是完成同聲翻譯。
雖然深度學習在20世紀80年代就出現了,但受限於當時的硬件能力和數據資源缺少,並無體現出效果。只有辛頓帶着學生在這個冷門領域堅持耕耘,直到2009年,辛頓他們纔得到了意外的成功,他們將深度學習用在語音識別領域,打破了世界紀錄,錯誤率比以前減小25%。深度學習開始火起來。
深度學習之因此有這麼大的性能提高,是由於它相似人腦同樣的深層神經網絡,它更好地模擬了人腦的工做。
卷積神經網絡的發展主要是爲了解決人類視覺問題,不過如今其它方向也都會使用。發展歷程主要從Lenet5->Alexnet->VGG->GooLenet->ResNet等。
上世界80年代發明了卷積層,但因爲硬件限制沒法構建複雜網絡,直到後面90年代纔開始有實踐。
1998年LeCun提出卷積層、池化層和徹底鏈接層組合,以此來解決手寫數字的識別問題。此時的效果已經很不錯了,能與其它經典的機器學習模型相比。架構以下,一個32 x 32的輸入,經過卷積提取特徵,而後進行下采樣,再一次卷積和下采樣,後面進行全鏈接和高斯鏈接。即Lenet5。
後來隨着可用的結構化數據和處理能力呈指數增加,使得模型能進一步加強,特別是Imagenet開源數據集的出現,數百萬張被標記分類的圖像。
2012年的LSVRC挑戰賽,Hinton和他學生Alex Krizhevsky開發了Alexnet深度卷積網絡,結構相似Lenet5,可是卷積層深度更深,參數總數達數千萬。多個卷積層且每一個網絡深度都達數百。即Alexnet。
2014年LSVRC挑戰賽強大的競爭者,由牛津大學視覺幾何組織提出的VGG模型。比起Alexnet,它主要是將卷積核縮小了,所有改用3x3。大致結構一致,但卷積配置能夠不一樣。激活函數使用ReLU,池化使用max pooling,最後使用softmax輸出各項機率。
2014年,GoogLenet網絡模型贏得LSVRC挑戰賽,該系列賽首次由大型公司參賽並得到成功,此後也一直由擁有鉅額預算的大公司贏得比賽。GoogLenet 主要由9個Inception模塊組合而成。GoogLenet參數數量降到了一千多萬,而且準確性比Alexnet提升,偏差從16.4%降到6.7%。
2015年隨着《從新思考計算機視覺的Inception架構》文章發表,google研究人員發佈新的Inception架構,主要解決協方差移位問題,其中將規範化應用於原始輸入及每層的輸出值。除此以外卷積核大小也有所變化,且增長了網絡整體深度及卷積的分解。
2015年ResNet被提出,由原來微軟研究院何愷明博士提出,現爲Facebook AI研究科學家。ResNet戰績輝煌,當年一下取得5項第一。
循環神經網絡即recurrent neural network,它的提出主要是爲了處理序列數據,序列數據是什麼?就是前面的輸入和後面的輸入是有關聯的,好比一句話,先後的詞都是有關係的,「我肚子餓了,準備去xx」,根據前面的輸入判斷「xx」很大可能就是「吃飯」。這個就是序列數據。
循環神經網絡有不少變種,好比LSTM、GRU等。
對於傳統的神經網絡,從輸入層到若干隱含層再到輸出層,層與層之間都是全鏈接的,並且層內之間的節點不相連。這種網絡模型對於序列數據的預測就基本無能爲力。
循環神經網絡則擅長處理序列數據,它會對前面的信息進行記憶而且參與當前輸出的計算,理論上循環神經網絡能處理任意長度的序列數據。
好比能夠作字符級別的預測,以下圖,假如這裏只有四種字符,樣本爲」hello」單詞,則輸入h預測下個字符爲e,e接着則輸出l,l則輸出l,最後輸入l則輸出o。
-------------推薦閱讀------------
個人開源項目彙總(機器&深度學習、NLP、網絡IO、AIML、mysql協議、chatbot)
跟我交流,向我提問:
歡迎關注: