摘要:解決辦法是多層神經(jīng)網(wǎng)絡(luò),底層神經(jīng)元的輸出是高層神經(jīng)元的輸入。這個例子中特征的形狀稱為異或,這種情況一個神經(jīng)元搞不定,但是兩層神經(jīng)元就能正確對其進行分類。年多倫多大學的等人構(gòu)造了一個超大型卷積神經(jīng)網(wǎng)絡(luò),有層,共萬個神經(jīng)元,千萬個參數(shù)。
0. 分類
神經(jīng)網(wǎng)絡(luò)最重要的用途是分類,為了讓大家對分類有個直觀的認識,咱們先看幾個例子:
垃圾郵件識別:現(xiàn)在有一封電子郵件,把出現(xiàn)在里面的所有詞匯提取出來,送進一個機器里,機器需要判斷這封郵件是否是垃圾郵件。
疾病判斷:病人到醫(yī)院去做了一大堆肝功、尿檢測驗,把測驗結(jié)果送進一個機器里,機器需要判斷這個病人是否得病,得的什么病。
貓狗分類:有一大堆貓、狗照片,把每一張照片送進一個機器里,機器需要判斷這幅照片里的東西是貓還是狗。
這種能自動對輸入的東西進行分類的機器,就叫做分類器。
分類器的輸入是一個數(shù)值向量,叫做特征(向量)。在第一個例子里,分類器的輸入是一堆0、1值,表示字典里的每一個詞是否在郵件中出現(xiàn),比如向量(1,1,0,0,0......)就表示這封郵件里只出現(xiàn)了兩個詞abandon和abnormal;第二個例子里,分類器的輸入是一堆化驗指標;第三個例子里,分類器的輸入是照片,假如每一張照片都是320*240像素的紅綠藍三通道彩色照片,那么分類器的輸入就是一個長度為320*240*3=230400的向量。
分類器的輸出也是數(shù)值。第一個例子中,輸出1表示郵件是垃圾郵件,輸出0則說明郵件是正常郵件;第二個例子中,輸出0表示健康,輸出1表示有甲肝,輸出2表示有乙肝,輸出3表示有餅干等等;第三個例子中,輸出0表示圖片中是狗,輸出1表示是貓。
分類器的目標就是讓正確分類的比例盡可能高。一般我們需要首先收集一些樣本,人為標記上正確分類結(jié)果,然后用這些標記好的數(shù)據(jù)訓(xùn)練分類器,訓(xùn)練好的分類器就可以在新來的特征向量上工作了。
1. 神經(jīng)元
咱們假設(shè)分類器的輸入是通過某種途徑獲得的兩個值,輸出是0和1,比如分別代表貓和狗。現(xiàn)在有一些樣本:
大家想想,最簡單地把這兩組特征向量分開的方法是啥?當然是在兩組數(shù)據(jù)中間畫一條豎直線,直線左邊是狗,右邊是貓,分類器就完成了。以后來了新的向量,凡是落在直線左邊的都是狗,落在右邊的都是貓。
一條直線把平面一分為二,一個平面把三維空間一分為二,一個n-1維超平面把n維空間一分為二,兩邊分屬不同的兩類,這種分類器就叫做神經(jīng)元。
大家都知道平面上的直線方程是,等式左邊大于零和小于零分別表示點在直線的一側(cè)還是另一側(cè),把這個式子推廣到n維空間里,直線的高維形式稱為超平面,它的方程是:
神經(jīng)元就是當h大于0時輸出1,h小于0時輸出0這么一個模型,它的實質(zhì)就是把特征空間一切兩半,認為兩瓣分別屬兩個類。你恐怕再也想不到比這更簡單的分類器了,它是McCulloch和Pitts在1943年想出來了。
這個模型有點像人腦中的神經(jīng)元:從多個感受器接受電信號,進行處理(加權(quán)相加再偏移一點,即判斷輸入是否在某條直線的一側(cè)),發(fā)出電信號(在正確的那側(cè)發(fā)出1,否則不發(fā)信號,可以認為是發(fā)出0),這就是它叫神經(jīng)元的原因。
當然,上面那幅圖我們是開了上帝視角才知道“一條豎直線能分開兩類”,在實際訓(xùn)練神經(jīng)元時,我們并不知道特征是怎么抱團的。神經(jīng)元模型的一種學習方法稱為Hebb算法:
先隨機選一條直線/平面/超平面,然后把樣本一個個拿過來,如果這條直線分錯了,說明這個點分錯邊了,就稍微把直線移動一點,讓它靠近這個樣本,爭取跨過這個樣本,讓它跑到直線正確的一側(cè);如果直線分對了,它就暫時停下不動。因此訓(xùn)練神經(jīng)元的過程就是這條直線不斷在跳舞,最終跳到兩個類之間的豎直線位置。
2. 神經(jīng)網(wǎng)絡(luò)
MP神經(jīng)元有幾個顯著缺點。首先它把直線一側(cè)變?yōu)?,另一側(cè)變?yōu)?,這東西不可微,不利于數(shù)學分析。人們用一個和0-1階躍函數(shù)類似但是更平滑的函數(shù)Sigmoid函數(shù)來代替它(Sigmoid函數(shù)自帶一個尺度參數(shù),可以控制神經(jīng)元對離超平面距離不同的點的響應(yīng),這里忽略它),從此神經(jīng)網(wǎng)絡(luò)的訓(xùn)練就可以用梯度下降法來構(gòu)造了,這就是有名的反向傳播算法。
神經(jīng)元的另一個缺點是:它只能切一刀!你給我說說一刀怎么能把下面這兩類分開吧。
解決辦法是多層神經(jīng)網(wǎng)絡(luò),底層神經(jīng)元的輸出是高層神經(jīng)元的輸入。我們可以在中間橫著砍一刀,豎著砍一刀,然后把左上和右下的部分合在一起,與右上的左下部分分開;也可以圍著左上角的邊沿砍10刀把這一部分先挖出來,然后和右下角合并。
每砍一刀,其實就是使用了一個神經(jīng)元,把不同砍下的半平面做交、并等運算,就是把這些神經(jīng)元的輸出當作輸入,后面再連接一個神經(jīng)元。這個例子中特征的形狀稱為異或,這種情況一個神經(jīng)元搞不定,但是兩層神經(jīng)元就能正確對其進行分類。
只要你能砍足夠多刀,把結(jié)果拼在一起,什么奇怪形狀的邊界神經(jīng)網(wǎng)絡(luò)都能夠表示,所以說神經(jīng)網(wǎng)絡(luò)在理論上可以表示很復(fù)雜的函數(shù)/空間分布。但是真實的神經(jīng)網(wǎng)絡(luò)是否能擺動到正確的位置還要看網(wǎng)絡(luò)初始值設(shè)置、樣本容量和分布。
神經(jīng)網(wǎng)絡(luò)神奇的地方在于它的每一個組件非常簡單——把空間切一刀+某種激活函數(shù)(0-1階躍、sigmoid、max-pooling),但是可以一層一層級聯(lián)。輸入向量連到許多神經(jīng)元上,這些神經(jīng)元的輸出又連到一堆神經(jīng)元上,這一過程可以重復(fù)很多次。這和人腦中的神經(jīng)元很相似:每一個神經(jīng)元都有一些神經(jīng)元作為其輸入,又是另一些神經(jīng)元的輸入,數(shù)值向量就像是電信號,在不同神經(jīng)元之間傳導(dǎo),每一個神經(jīng)元只有滿足了某種條件才會發(fā)射信號到下一層神經(jīng)元。當然,人腦比神經(jīng)網(wǎng)絡(luò)模型復(fù)雜很多:人工神經(jīng)網(wǎng)絡(luò)一般不存在環(huán)狀結(jié)構(gòu);人腦神經(jīng)元的電信號不僅有強弱,還有時間緩急之分,就像莫爾斯電碼,在人工神經(jīng)網(wǎng)絡(luò)里沒有這種復(fù)雜的信號模式。
神經(jīng)網(wǎng)絡(luò)的訓(xùn)練依靠反向傳播算法:最開始輸入層輸入特征向量,網(wǎng)絡(luò)層層計算獲得輸出,輸出層發(fā)現(xiàn)輸出和正確的類號不一樣,這時它就讓最后一層神經(jīng)元進行參數(shù)調(diào)整,最后一層神經(jīng)元不僅自己調(diào)整參數(shù),還會勒令連接它的倒數(shù)第二層神經(jīng)元調(diào)整,層層往回退著調(diào)整。經(jīng)過調(diào)整的網(wǎng)絡(luò)會在樣本上繼續(xù)測試,如果輸出還是老分錯,繼續(xù)來一輪回退調(diào)整,直到網(wǎng)絡(luò)輸出滿意為止。這很像中國的文藝體制,武媚娘傳奇劇組就是網(wǎng)絡(luò)中的一個神經(jīng)元,最近剛剛調(diào)整了參數(shù)。
3. 大型神經(jīng)網(wǎng)絡(luò)
我們不禁要想了,假如我們的這個網(wǎng)絡(luò)有10層神經(jīng)元,第8層第2015個神經(jīng)元,它有什么含義呢?我們知道它把第七層的一大堆神經(jīng)元的輸出作為輸入,第七層的神經(jīng)元又是以第六層的一大堆神經(jīng)元做為輸入,那么這個特殊第八層的神經(jīng)元,它會不會代表了某種抽象的概念?
就好比你的大腦里有一大堆負責處理聲音、視覺、觸覺信號的神經(jīng)元,它們對于不同的信息會發(fā)出不同的信號,那么會不會有這么一個神經(jīng)元(或者神經(jīng)元小集團),它收集這些信號,分析其是否符合某個抽象的概念,和其他負責更具體和更抽象概念的神經(jīng)元進行交互。
2012年多倫多大學的Krizhevsky等人構(gòu)造了一個超大型卷積神經(jīng)網(wǎng)絡(luò)[1],有9層,共65萬個神經(jīng)元,6千萬個參數(shù)。網(wǎng)絡(luò)的輸入是圖片,輸出是1000個類,比如小蟲、美洲豹、救生船等等。這個模型的訓(xùn)練需要海量圖片,它的分類準確率也完爆先前所有分類器。紐約大學的Zeiler和Fergusi[2]把這個網(wǎng)絡(luò)中某些神經(jīng)元挑出來,把在其上響應(yīng)特別大的那些輸入圖像放在一起,看它們有什么共同點。他們發(fā)現(xiàn)中間層的神經(jīng)元響應(yīng)了某些十分抽象的特征。
第一層神經(jīng)元主要負責識別顏色和簡單紋理
第二層的一些神經(jīng)元可以識別更加細化的紋理,比如布紋、刻度、葉紋。
第三層的一些神經(jīng)元負責感受黑夜里的黃色燭光、雞蛋黃、高光。
第四層的一些神經(jīng)元負責識別萌狗的臉、七星瓢蟲和一堆圓形物體的存在。
第五層的一些神經(jīng)元可以識別出花、圓形屋頂、鍵盤、鳥、黑眼圈動物。
這里面的概念并不是整個網(wǎng)絡(luò)的輸出,是網(wǎng)絡(luò)中間層神經(jīng)元的偏好,它們?yōu)楹竺娴纳窠?jīng)元服務(wù)。雖然每一個神經(jīng)元都傻不拉幾的(只會切一刀),但是65萬個神經(jīng)元能學到的東西還真是深邃呢。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/4330.html
摘要:研究證明,用于加工聽覺信號的腦區(qū)可用于視覺任務(wù)。我們已經(jīng)發(fā)現(xiàn)為計算機圖像視覺通道開發(fā)出來的圖形處理單元,也可以用于加快語音和語言的機器學習任務(wù)。 最初針對視覺信號設(shè)計出來的 CNN 也能處理聽覺信號,最終幫助機器傾聽和更好地理解我們。 CNN 在某些程度上能遷移學習,掌握多種模式的共同特征。有一系列神經(jīng)網(wǎng)絡(luò)機器學習方法不只是「有深度的」。在這段時間,針對先進的語音技術(shù)和人工智能的神經(jīng)網(wǎng)絡(luò)變得...
摘要:相關(guān)頻道最后的坦白最后我得承認這一次我又標題黨了無非是想吸引更多前端初學者進來,希望大家都能少走一些彎路,也希望那些從零開始自學前端的同學更有勇氣去面對自己的選擇。 我是怎么走上前端開發(fā)這條路? 首先,我是個文科生,大學里只學過vb,覺得計算機編程這東西太玄乎,不是我玩得轉(zhuǎn)的。 后來機緣巧合去做了一家互聯(lián)網(wǎng)創(chuàng)業(yè)公司的HR,閱了上千份程序員的簡歷,面了上百個不同水平不同領(lǐng)域的程序員。跟程...
摘要:本文最早為雙十一而作,原標題雙大前端工程師讀書清單,以付費的形式發(fā)布在上。發(fā)布完本次預(yù)告后,捕捉到了一個友善的吐槽讀書清單也要收費。這本書便從的異步編程講起,幫助我們設(shè)計快速響應(yīng)的網(wǎng)絡(luò)應(yīng)用,而非簡單的頁面。 本文最早為雙十一而作,原標題雙 11 大前端工程師讀書清單,以付費的形式發(fā)布在 GitChat 上。發(fā)布之后在讀者圈群聊中和讀者進行了深入的交流,現(xiàn)免費分享到這里,不足之處歡迎指教...
閱讀 3208·2021-11-23 09:51
閱讀 3667·2021-09-22 15:35
閱讀 3645·2021-09-22 10:02
閱讀 2956·2021-08-30 09:49
閱讀 509·2021-08-05 10:01
閱讀 3375·2019-08-30 15:54
閱讀 1632·2019-08-30 15:53
閱讀 3557·2019-08-29 16:27