大腦神經元
人腦可能有1000多億個神經元,每個神經元都可能在幾個方向上互相連接着,這麼大量的神經元及連接就形成了一個超級大型的網絡。我們就是因為這些網絡而存在各種各樣的思想和意識。
image
大腦神經元即是腦神經細胞,主要包括細胞體、樹突、軸突、突觸等。
image
模拟大腦
神經網絡就是人們試圖對大腦内部運作的模拟形式,在計算機領域,這種模型的起源相當早,可以追溯到20世紀40年代中期,當時計算機其實也剛出現不久。
1943年,麥卡洛克和皮茨發表了論文《神經活動内在概念的邏輯演算》,其中首次提出了表示人腦學習功能的一種數學方法。
image
如上圖中x類似軸突,其它神經元的輸出,經過突觸連接樹突,經過樹突後輸入到細胞體,細胞體執行一定運算後再經過激活函數最後輸出到軸突。
這個簡單的模型就是機器學習中神經網絡的基礎模型了,不經讓我們驚呼我們的大腦如此的簡單,但事實并不是這樣,人類對大腦的認識是在太少,可以說幾乎還沒有什麼實質性進展。而用這種模型模拟的大腦,實際上比大腦差太多太多了,如果人類是上帝造的,那上帝肯定不會讓你猜透他是怎麼造的。
這個階段雖然大腦的神經元已經被數學建模了,我們也并不知道這個模型是否正确,而且當時也沒有明确權重參數的調整方法。
感知機模型
進入到20世紀50年代,一種最簡單的人工神經元模型被提出來了。感知機?一聽感覺就像是一個實際存在的東西,就像計算機一樣,它應該是看得見摸得着的機器吧!的确,20世紀60年代第一個硬件實現出現,當時直接将整個硬件都叫感知機,但後來感知機被改成是算法的名字了,所以它其實是一個算法。
image
感知機以前輩的思想作為基礎,基于此提出了一種反饋循環的學習機制,通過計算樣本輸出結果與正确結果之間的誤差來進行權重調整。
大緻的流程如下:
image
引入梯度下降
與感知機的學習機制不同,ADALINE則是訓練神經網絡模型的另外一種算法,由于它引入了梯度下降,所以可以說它比感知機更加先進。
image
大概流程為:
早期模型的局限
我們可以看到感知機和ADALINE已經具備了神經網絡模型的基本要素,兩者都是單層神經網絡,主要用于二分類問題,通過學習能實現二分類功能。
對于早期的神經模型,它其實具有非常大的局限性,甚至某種意義上來說,它一點用處都沒有。明斯基和帕佩特于1969年出版了《感知機》一書,其中闡明了感知機隻能處理線性可分的問題,對于其他複雜問題完全無能為力。
image
比如對于XOR函數,不存在任何一條直線能将其正确分割,感知機就是存在這種尴尬的情況,這種線性不可分的情況,感知機沒法正确将兩個類别分開。至此,神經網絡進入寒冬。
多層感知機
既然單個神經元的感知機無法解決非線性問題,那麼是不是可以推廣到多個神經元組成多個神經網絡層?于是将多組神經元連接起來,某個神經元的輸出可輸入到其它神經元中。
多層網絡的傳播,數據被輸入第一層後,将從每個神經元流入到下一層中對應的神經元中。然後在隐含層中進行求和并傳遞,最後到達輸出層進行處理。而學習多層網絡則需要反向傳播算法來支持,多層網絡增加了學習的複雜程度,從輸入到最後的輸出組成了很長的函數嵌套,這就增加了學習的難度。不過,好在求到時有鍊式法則的幫忙,讓事情簡單了很多。
image
大概流程為:
image
問題類型
神經網絡可用于回歸問題和分類問題。常見的結構差異在于輸出層,如果想要得到一個實數結果,我們就不應該使用标準化函數,比如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等。
對于傳統的神經網絡,從輸入層到若幹隐含層再到輸出層,層與層之間都是全連接的,而且層内之間的節點不相連。這種網絡模型對于序列數據的預測就基本無能為力。
循環神經網絡則擅長處理序列數據,它會對前面的信息進行記憶并且參與當前輸出的計算,理論上循環神經網絡能處理任意長度的序列數據。
image
image
比如可以做字符級别的預測,如下圖,假如這裡隻有四種字符,樣本為”hello”單詞,則輸入h預測下個字符為e,e接着則輸出l,l則輸出l,最後輸入l則輸出o。
image
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!