日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

初识神经网络NeuralNetworks

發(fā)布時(shí)間:2024/9/5 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 初识神经网络NeuralNetworks 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.神經(jīng)網(wǎng)絡(luò)的起源

在傳統(tǒng)的編程方法中,我們通常會(huì)告訴計(jì)算機(jī)該做什么,并且將一個(gè)大問題分解為許多小的、精確的、計(jì)算機(jī)可以輕松執(zhí)行的任務(wù)。相反,在神經(jīng)網(wǎng)絡(luò)中,我們不告訴計(jì)算機(jī)如何解決問題,而是讓計(jì)算機(jī)從觀測(cè)數(shù)據(jù)中學(xué)習(xí),自己找出解決方法。

自動(dòng)從數(shù)據(jù)中學(xué)習(xí)聽起來不錯(cuò),然而,2006年之前我們都仍然不清楚如何訓(xùn)練神經(jīng)網(wǎng)絡(luò)使其優(yōu)于大多數(shù)傳統(tǒng)方法,除了一些有專門解決方法的問題。在2006年,深度神經(jīng)網(wǎng)絡(luò)出現(xiàn)了,這些技術(shù)現(xiàn)在被稱為深度學(xué)習(xí),它們已經(jīng)取得了進(jìn)一步的發(fā)展。如今,深度神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)在計(jì)算機(jī)視覺、語音識(shí)別及自然語言處理等重要領(lǐng)域都有卓越的性能表現(xiàn),并且被谷歌、微軟和Facebook等公司大規(guī)模應(yīng)用。

2.神經(jīng)網(wǎng)絡(luò)的應(yīng)用實(shí)例——識(shí)別手寫數(shù)字

考慮下列手寫數(shù)字。大多數(shù)人都能輕易地識(shí)別這些數(shù)字分別是:504192.

聽起來似乎很輕松,但實(shí)際上并不是這樣的。在我們?nèi)四X的兩個(gè)半球,有一個(gè)初級(jí)視覺皮層,也就是V1,包含了1.4億個(gè)神經(jīng)元,它們之間的連接更是多達(dá)上百億個(gè)。然而,人類視覺系統(tǒng)不只是V1,而是包含了一整個(gè)系列的視覺皮層——V2,V3,V4,V5——以逐漸復(fù)雜地對(duì)圖像進(jìn)行處理。

人類的大腦就像一臺(tái)超級(jí)計(jì)算機(jī),經(jīng)過上億年的進(jìn)化,從而更好地了解視覺世界。實(shí)際上,識(shí)別手寫數(shù)字并不容易,更準(zhǔn)確地說,人類總是驚人地理解我們的眼睛所呈現(xiàn)給我們的信息。但幾乎所有工作都是無意識(shí)的,所以我們常常不清楚我們的視覺系統(tǒng)完成了多么困難的任務(wù)。

想要編寫程序來識(shí)別這些手寫數(shù)字是十分困難的,最直觀的經(jīng)驗(yàn)是“上邊有一個(gè)環(huán)路、右邊有一豎就是一個(gè)9了”,顯然用算法很難表達(dá)。當(dāng)你想要得到這樣精確的規(guī)則描述時(shí),你會(huì)很快迷失在特例和警告等特殊情況的困境中。這樣看起來似乎沒什么希望了。

而神經(jīng)網(wǎng)絡(luò)卻能以一種不同的方式來解決這個(gè)問題。它的思想是:將大量手寫數(shù)字作為訓(xùn)練實(shí)例,通過學(xué)習(xí)這些實(shí)例而獲得一個(gè)系統(tǒng),這個(gè)系統(tǒng)就可以用來識(shí)別其它的手寫數(shù)字了。換句話說,神經(jīng)網(wǎng)絡(luò)能利用這些實(shí)例自動(dòng)地推斷出規(guī)則,從而識(shí)別手寫數(shù)字。如果增加訓(xùn)練實(shí)例的數(shù)量,網(wǎng)絡(luò)可以學(xué)到更多的知識(shí),從而提高識(shí)別的準(zhǔn)確率。目前最好的商業(yè)神經(jīng)網(wǎng)絡(luò)(識(shí)別手寫數(shù)字)用于銀行處理支票以及郵局識(shí)別信封上的地址。實(shí)現(xiàn)手寫數(shù)字識(shí)別的設(shè)計(jì)細(xì)節(jié)及代碼見此。

接下來介紹關(guān)于神經(jīng)網(wǎng)絡(luò)的許多關(guān)鍵思想,包括兩種重要類型的人工神經(jīng)元——感知器和sigmoid神經(jīng)元,以及神經(jīng)網(wǎng)絡(luò)的標(biāo)準(zhǔn)算法——隨機(jī)梯度下降法。

3.感知器

感知器在1957年由科學(xué)家Frank Rosenblatt提出,它可以被視為一種最簡(jiǎn)單形式的前饋神經(jīng)網(wǎng)絡(luò),是一種二元線性分類器。

3.1 感知器是如何工作的

一個(gè)感知器需要多個(gè)二進(jìn)制輸入x1,x2,……,并生成一個(gè)二進(jìn)制輸出。下圖中的感知器有三個(gè)輸入x1,x2,x3,Rosenblatt提出一個(gè)簡(jiǎn)單的規(guī)則來計(jì)算輸出。

他引入了權(quán)值w1,w2,……,這些權(quán)值都是實(shí)數(shù),分別表示各個(gè)輸入對(duì)輸出的重要性。感知器的輸出為0或1,取決于輸入的加權(quán)和∑wixi是否大于一個(gè)閾值。和權(quán)值一樣,閾值也是實(shí)數(shù),是神經(jīng)元的一個(gè)參數(shù)。用公式表示輸出如下圖:

這是一個(gè)基本的數(shù)學(xué)模型。你可以將感知器想象為一種設(shè)備,這個(gè)設(shè)備通過權(quán)衡各種證據(jù)(即輸入)做出決定(即輸出)。顯然,感知器不是人類決策系統(tǒng)的一個(gè)完整的模型,但一個(gè)復(fù)雜的感知器可以做出非常的決定:

在這個(gè)網(wǎng)絡(luò)中,感知器的第一層通過權(quán)衡輸入而做出三個(gè)非常簡(jiǎn)單的決定,第二層通過權(quán)衡第一層的輸出而做出四個(gè)稍微復(fù)雜的決定,第三層通過權(quán)衡第二層的輸出做出更復(fù)雜的決定,也就是感知器最終的輸出。這樣的話,多層感知器就可以做出復(fù)雜的決策。

為了簡(jiǎn)化公式(1),我們使用w表示wi組成的向量,即權(quán)值向量;x表示xi組成的向量,即輸入向量;并將閾值移到不等式的左邊,然后用感知器的偏差b來代替閾值,感知器的公式就可以表示為:

可見,如果感知器的偏差b是一個(gè)很大的正值,該感知器很容易輸出1,相反,如果b是一個(gè)很大的負(fù)值,該感知器很難輸出1。引入偏差b這個(gè)概念變化看似很小,實(shí)際上使得公式得到了極大的簡(jiǎn)化。我們不再需要閾值這個(gè)概念,而是偏差b。

3.2 感知器的應(yīng)用

上面我們提到感知器可以權(quán)衡各項(xiàng)輸入做出決策,而它的另外一個(gè)應(yīng)用就是做最基本的邏輯運(yùn)算,也就是與、或、與非。舉個(gè)例子,假如我們有一個(gè)感知器,它需要兩個(gè)輸入,每個(gè)輸入的權(quán)值都是-2,偏差是3,如下圖左。當(dāng)我們輸入00時(shí),0*(-2)+0*(-2)+3=3,為正數(shù),所以輸出為1;同樣的,輸入為01和10時(shí),輸出都為1。而當(dāng)輸入為11時(shí),計(jì)算結(jié)果為-1,為負(fù)數(shù),所以輸出為0。也就是說,當(dāng)輸入為00、01、10時(shí),輸出為1;輸入為11時(shí),輸出為0。那么,這個(gè)感知器就實(shí)現(xiàn)了與非的功能。

? ?

實(shí)際上,感知器可以實(shí)現(xiàn)任意邏輯運(yùn)算。是因?yàn)榕c非是最基本的運(yùn)算,我們可以在與非的基礎(chǔ)上實(shí)現(xiàn)其它邏輯運(yùn)算,如上圖右。更多邏輯運(yùn)算的例子見此。

就像與非是邏輯運(yùn)算中的通用計(jì)算一樣(universal for computation),感知器也是神經(jīng)網(wǎng)絡(luò)中的通用計(jì)算。感知器的計(jì)算通用性既讓人寬心又讓人沮喪:讓人寬心是因?yàn)樗嬖V我們,感知器網(wǎng)絡(luò)可以像任何其他計(jì)算設(shè)備一樣強(qiáng)大;讓人沮喪是因?yàn)樗雌饋砭秃孟駜H僅只是與非門的一種新類型。

但實(shí)際上的情況比這要好點(diǎn)。事實(shí)證明,我們可以設(shè)計(jì)學(xué)習(xí)算法來自動(dòng)調(diào)整人工神經(jīng)元網(wǎng)絡(luò)的權(quán)值和偏差。這個(gè)調(diào)整過程是對(duì)外部刺激的直接反應(yīng),而不需要程序員去干預(yù),這一點(diǎn)是與傳統(tǒng)的邏輯門不同的。也就是說,我們的神經(jīng)網(wǎng)絡(luò)是可以簡(jiǎn)單地自己學(xué)會(huì)去解決問題的,這些問題不是直接設(shè)計(jì)一個(gè)傳統(tǒng)的邏輯回路能解決的。

4.sigmoid神經(jīng)元

4.1 感知器的局限

學(xué)習(xí)算法,聽起來不錯(cuò)。但是我們?nèi)绾螢橐粋€(gè)神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)這樣的算法呢?假設(shè)現(xiàn)在我們有一個(gè)感知器網(wǎng)絡(luò),我們想要讓其學(xué)會(huì)解決問題。舉個(gè)例子,網(wǎng)絡(luò)的輸入可能是一個(gè)手寫數(shù)字的掃描圖像的原始像素?cái)?shù)據(jù)。現(xiàn)在我們希望這個(gè)網(wǎng)絡(luò)能學(xué)習(xí)到合適的權(quán)值和偏差,使得網(wǎng)絡(luò)的最終輸出能正確將這個(gè)數(shù)字分類。

為了看看這個(gè)學(xué)習(xí)過程是如何進(jìn)行的,我們對(duì)網(wǎng)絡(luò)中一些權(quán)值(或偏差)做小小的改動(dòng)。我們想要看到的是,對(duì)于權(quán)值的小小改動(dòng),將會(huì)導(dǎo)致網(wǎng)絡(luò)輸出有相應(yīng)的改變。(我們稍后將會(huì)明白,這樣的屬性是使得學(xué)習(xí)過程成為可能的關(guān)鍵)大致意思如下圖所示:(當(dāng)然,對(duì)于手寫數(shù)字識(shí)別的問題,下面這個(gè)網(wǎng)絡(luò)太簡(jiǎn)單了)

如果前面我們假設(shè)的“權(quán)值(或偏差)的改變能引起輸出的改變”是事實(shí),那么我們就可以利用這一點(diǎn)去修改權(quán)值和偏差,使得我們的網(wǎng)絡(luò)按照我們的意愿去工作。比如說,我們的網(wǎng)絡(luò)將“9”識(shí)別成了“8”,我們就可以想辦法改變權(quán)值和偏差,使得網(wǎng)絡(luò)更大可能地將圖像識(shí)別成“9”。然后我們就可以重復(fù)這一過程,不斷地改變權(quán)值和偏差,使得輸出越來越接近理想值。這樣看來,我們的網(wǎng)絡(luò)就具備了學(xué)習(xí)的能力。

問題是,當(dāng)我們的網(wǎng)絡(luò)包含感知器時(shí),并不會(huì)發(fā)生這樣的過程。事實(shí)上,在任何一個(gè)感知器中,對(duì)權(quán)值或偏差的小小改動(dòng)可能會(huì)導(dǎo)致該感知器的輸出完全翻轉(zhuǎn),也就是說從0變?yōu)榱?。而這樣的翻轉(zhuǎn)可能會(huì)導(dǎo)致感知器接下來的識(shí)別工作發(fā)生徹底改變。所以說,就算你的“9”被識(shí)別正確了,對(duì)其它數(shù)字的識(shí)別可能會(huì)以難以控制的方式發(fā)生改變,比如將“6”識(shí)別成了“8”。

4.2 sigmoid神經(jīng)元的出現(xiàn)

顯然,想要感知器具備學(xué)習(xí)能力是困難的。也許有更好的辦法,但這樣的可能似乎并不明顯。現(xiàn)如今,使用的是另一種更常見的人工神經(jīng)元模型——sigmoid神經(jīng)元,它可以克服這個(gè)問題。sigmoid神經(jīng)元和感知器類似,但是它可以通過修改權(quán)值和偏差,使得輸出發(fā)生相應(yīng)的變化。這使得sigmoid神經(jīng)元網(wǎng)絡(luò)具備學(xué)習(xí)能力。

就像感知器一樣,sigmoid神經(jīng)元也有輸入x1,x2,……,但不像感知器的輸入只能是0或1,sigmoid神經(jīng)元的輸入可以是0到1之間的任意值,比如0.638。它也有權(quán)值w1,w2,……,以及整體偏差b。它的輸出也不再是0或1,而是σ(w*x+b),其中σ是sigmoid函數(shù)(sigmoid function),且其定義式如下右圖:

? ??

更明確地,一個(gè)sigmoid神經(jīng)元的輸出如下圖式子所示。乍一看,sigmoid神經(jīng)元好像與感知器完全不同。事實(shí)上,它們倆有許多相似之處。

為了更好地理解其中的相似之處,我們假設(shè) z=w*x+b 是一個(gè)大的正數(shù),所以 e^(-z)≈0,σ(z)≈1。也就是說,當(dāng)?z=w*x+b 是一個(gè)很大的正數(shù)時(shí),sigmoid神經(jīng)元的輸出就很接近1,就像在感知器中一樣。相反,當(dāng)?z=w*x+b 是一個(gè)絕對(duì)值很大的負(fù)數(shù)時(shí),sigmoid神經(jīng)元的輸出就很接近0,也類似于感知器。只有當(dāng)?z=w*x+b 處于中間值時(shí),sigmoid才與感知器不同。

4.3 sigmoid函數(shù)的形式

事實(shí)上,σ的確切形式并不重要,真正重要的是函數(shù)的形狀。上述提到的σ函數(shù)的形狀如下圖左。如下圖右是一個(gè)平滑的階躍函數(shù)。如果σ真的是一個(gè)階躍函數(shù),那么sigmoid神經(jīng)元就變成了一個(gè)感知器,因?yàn)檩敵?或1就完全取決于 w*x+b 的正負(fù)了(實(shí)際上,當(dāng) w*x+b=0 時(shí),感知器的輸出為0,而階躍函數(shù)的輸出為1。所以,嚴(yán)格來講,要想完全等于感知器,我們必須調(diào)整階躍函數(shù)在0點(diǎn)的值)。

?

可以發(fā)現(xiàn),是σ函數(shù)的平滑度起了關(guān)鍵作用,而不是其具體形式。σ的平滑度意味著權(quán)值的變動(dòng)Δwj或偏差的變動(dòng)Δb將會(huì)對(duì)神經(jīng)元的輸出所做的改變?chǔ)utput,微積分可以給出Δoutput的近似值。下面這個(gè)公式告訴我們:Δoutput是Δwj和Δb的線性函數(shù)。所以sigmoid神經(jīng)元能更容易地指出權(quán)值和偏差的改變是如何改變輸出的。

既然是σ函數(shù)的平滑度起了關(guān)鍵作用,而不是其具體形式,那么為什么用公式(3)中的形式呢?事實(shí)證明,當(dāng)我們計(jì)算這些偏導(dǎo)數(shù)時(shí),使用σ將簡(jiǎn)化代數(shù),僅僅因?yàn)橹笖?shù)很容易求微分。在任何情況下,σ在神經(jīng)網(wǎng)絡(luò)中是被廣泛使用的,常作為激活函數(shù)。

4.4 sigmoid神經(jīng)元的輸出

顯而易見,sigmoid神經(jīng)元與感知器最大的不同就是輸出不再僅僅只是0或1,它可以輸出0-1之間的任意實(shí)數(shù)。這個(gè)屬性很有用,例如,如果我們想用輸出值表示一個(gè)輸入圖像中像素的平均強(qiáng)度。

但有時(shí)它又顯得很麻煩,假如我們想用網(wǎng)絡(luò)的輸出來表示“輸入圖像是9”和“輸入圖像不是9”中的一個(gè)。顯然,此時(shí)用感知器會(huì)更簡(jiǎn)單。不過在實(shí)際應(yīng)用中,我們可以設(shè)置一個(gè)規(guī)則來解決這個(gè)問題。例如,規(guī)定輸出大于或等于0.5時(shí)表示“輸入圖像是9”,輸出小于0.5時(shí)表示“輸入圖像不是9”(對(duì)圖片的像素強(qiáng)度進(jìn)行編碼,如64*64個(gè)像素單元,就是64*64個(gè)輸入,輸出是一個(gè)介于0到1之間的值,最后比較其與0.5的大小)。

5.其它人工神經(jīng)元模型

原則上,由sigmoid神經(jīng)元組成的網(wǎng)絡(luò)可以計(jì)算任何函數(shù)。然而實(shí)際中,使用其它神經(jīng)元模型組成的網(wǎng)絡(luò)有時(shí)性能會(huì)勝過sigmoid神經(jīng)元的網(wǎng)絡(luò),可能學(xué)習(xí)地更快,可能對(duì)測(cè)試數(shù)據(jù)更泛化,也可能兩者都有。下面我們就列舉幾個(gè)其它神經(jīng)元模型。

5.1?tanh神經(jīng)元

最簡(jiǎn)單的變種——tanh神經(jīng)元,用雙曲正切函數(shù)替代sigmoid函數(shù)。一個(gè)“輸入為x,權(quán)值向量為w,偏差為b”的tanh神經(jīng)元的輸出如下圖所示。

tanh(x)=2f(2x)-1 。

它非常接近sigmoid神經(jīng)元。我們知道tanh函數(shù)的公式如下式(110),可以推導(dǎo)出它和sigmoid函數(shù)的關(guān)系如式(111)所示。所以說,tanh函數(shù)相當(dāng)于只是sigmoid函數(shù)的變種,并且可以在曲線圖中看出tanh函數(shù)和sigmoid函數(shù)有相同的形狀。

?

唯一的不同是:tanh神經(jīng)元的輸出范圍為[-1,1],而sigmoid神經(jīng)元的輸出為[0,1]。也就意味著,如果你在網(wǎng)絡(luò)中使用tanh神經(jīng)元,你必須對(duì)你的結(jié)果進(jìn)行歸一化(根據(jù)實(shí)際,也可能需要對(duì)輸入歸一化)。

和sigmoid神經(jīng)元類似,tanh神經(jīng)元也可以計(jì)算任何函數(shù)(compute any function),將輸入mapping到[-1,1]。此外,像BP和隨機(jī)梯度下降法也可以很容易地應(yīng)用于tanh神經(jīng)元的網(wǎng)絡(luò)中。

5.2 ReLu(自適應(yīng)線性神經(jīng)元)

sigmoid神經(jīng)元的另一個(gè)變種就是自適應(yīng)線性神經(jīng)元ReLu(rectified linear neuron or rectified linear unit),一個(gè)“輸入為x,權(quán)值向量為w,偏差為b”的ReLu的輸出如下式(112)。用圖來表示自適應(yīng)函數(shù) max(0,z) 如下所示。

很明顯,這樣的神經(jīng)元是與tanh神經(jīng)元和sigmoid神經(jīng)元都非常不同的。不過,ReLu神經(jīng)元也是可以計(jì)算任何函數(shù)的,也可以用BP和隨機(jī)梯度下降法等思想來訓(xùn)練。

那么,我們什么時(shí)候用ReLu而不是tanh神經(jīng)元或sigmoid神經(jīng)元呢?目前已經(jīng)有許多在圖像識(shí)別上的工作發(fā)現(xiàn)了相當(dāng)多使用ReLu的好處。

6.神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)

神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)如下圖,中間的隱藏層可以有多個(gè)。令人困惑的一點(diǎn)是,由于歷史原因,這樣的多層網(wǎng)絡(luò)有時(shí)又被稱為多層感知器或MLPs(multilayer perceptrons),盡管這些神經(jīng)元是由sigmoid神經(jīng)元組成的,而不是感知器。

輸入層和輸出層的設(shè)計(jì)是顯而易見的,而隱藏層的設(shè)計(jì)則是一門藝術(shù)活,我們無法用幾個(gè)簡(jiǎn)單的經(jīng)驗(yàn)法則就總結(jié)出隱藏層的設(shè)計(jì)過程。相反,神經(jīng)網(wǎng)絡(luò)的研究人員們已經(jīng)開發(fā)了許多設(shè)計(jì)隱藏層的啟發(fā)式方法,使得人們能得到他們滿意的網(wǎng)絡(luò)。這樣的啟發(fā)式方法能權(quán)衡隱藏層的數(shù)目和訓(xùn)練網(wǎng)絡(luò)需要的時(shí)間兩者之間的力臂。

一層的輸出作為下一層的輸入,這樣的網(wǎng)絡(luò)稱為前饋神經(jīng)網(wǎng)絡(luò)。這意味著網(wǎng)絡(luò)中不存在回環(huán),信息總是向前傳播,并不會(huì)反饋。如果網(wǎng)絡(luò)中存在回環(huán),我們將會(huì)陷入死循環(huán):σ函數(shù)的輸入取決于輸出。這將會(huì)很難理解,所以我們不允許這樣的回環(huán)存在。

然而,還有其他允許反饋循環(huán)的人工神經(jīng)網(wǎng)絡(luò)模型,這些神經(jīng)網(wǎng)絡(luò)被稱為遞歸神經(jīng)網(wǎng)絡(luò)。這些模型的思想是:存在一些只在有限時(shí)間內(nèi)產(chǎn)生作用的神經(jīng)元。這樣的神經(jīng)元可以刺激其他神經(jīng)元,其他神經(jīng)元可能會(huì)在一段時(shí)間后產(chǎn)生作用,但也只能持續(xù)一段時(shí)間。接著再激活其他神經(jīng)元,所以隨著時(shí)間推移,我們會(huì)得到神經(jīng)元激活的一個(gè)級(jí)聯(lián)。在這樣的模型中,回環(huán)不會(huì)產(chǎn)生什么問題,因?yàn)橐粋€(gè)神經(jīng)元的輸出只會(huì)在一段時(shí)間后才對(duì)其自身的輸入產(chǎn)生作用,并不是瞬時(shí)的。

遞歸神經(jīng)網(wǎng)絡(luò)(RNN)的影響不如前饋神經(jīng)網(wǎng)絡(luò),部分原因是RNN的學(xué)習(xí)算法并不是很強(qiáng)大(至少迄今為止是這樣)。但RNN仍然非常有趣,它們更接近人類大腦的運(yùn)作方式。并且RNN很有可能能解決用前饋網(wǎng)絡(luò)很難解決的問題。

7.神經(jīng)網(wǎng)絡(luò)向深度學(xué)習(xí)的發(fā)展

假如我們想確定一張圖像中是否有人臉,處理這個(gè)問題和識(shí)別手寫數(shù)字是一樣的方式。圖像中的像素作為神經(jīng)網(wǎng)絡(luò)的輸入,網(wǎng)絡(luò)的輸出是單個(gè)神經(jīng)元,并指示“Yes, it’s a face”或“No, it’s not a face”。

如果我們手動(dòng)設(shè)計(jì)一個(gè)網(wǎng)絡(luò)會(huì)怎么樣?我們必須選擇合適的權(quán)值和偏差。這個(gè)時(shí)候,讓我們完全忘記神經(jīng)網(wǎng)絡(luò)的概念,我們所能想到的啟發(fā)式方法就是我們可以將這個(gè)問題分解成子問題:圖像中是否有左眼?圖像中是否有右眼?圖像的中間是否有鼻子?圖像的中下部是否有嘴巴?圖像的頂部是否有頭發(fā)?等等問題。

如果像這類問題的多個(gè)都是“yes”,或者說“probably yes”,那我們就可以得出結(jié)論:這個(gè)圖像很有可能是一張人臉。如果像這類問題的多個(gè)都是“no”,那我們就可以得出結(jié)論:這個(gè)圖像很有可能不是一張人臉。

當(dāng)然,這樣去判斷是很粗糙的,也有很多缺陷:也許這個(gè)人是一個(gè)禿子呢,所以他沒有頭發(fā);也許我們看見的只是人臉的一部分,或者人臉不是正向朝向我們的,所以人臉的一部分特征被遮蔽了。

下面有一個(gè)也許可行的結(jié)構(gòu),其中一個(gè)矩形表示一個(gè)sub-network,也就是上面我們列舉的那些子問題。注意,這不是一個(gè)現(xiàn)實(shí)的方法來解決人臉識(shí)別的問題,它只是用來幫助我們直觀地感受網(wǎng)絡(luò)是如何工作的。

顯而易見,這些子問題也是可以再一次被分解的。比如,對(duì)于“是否有左眼”的問題,可以進(jìn)一步分解為:“是否有眉毛”、“是否有睫毛”、“是否有虹膜”等等。當(dāng)然,這些子子問題還包括位置信息,比如“眉毛是否在虹膜的上方”等,但這里讓我們盡可能地簡(jiǎn)化。所以說,“是否有左眼”的問題可做如下分解:

當(dāng)然,其中的子子問題又可以進(jìn)一步分解,通過分解多層來更進(jìn)一步。直到最后,我們可以用像素這一層次來回答問題,比如“圖像中特定的位置是否出現(xiàn)簡(jiǎn)單的形狀”這一類的問題。最后,網(wǎng)絡(luò)就將一個(gè)很復(fù)雜的問題分解成了非常簡(jiǎn)單的問題。

這個(gè)網(wǎng)絡(luò)會(huì)有很多層,從具體到抽象,從復(fù)雜到簡(jiǎn)單。這樣多層結(jié)構(gòu)的網(wǎng)絡(luò)(具有兩層或更多隱藏層)就被稱為深度神經(jīng)網(wǎng)絡(luò)(deep neural networks)。

我們當(dāng)然沒法人工來選擇網(wǎng)絡(luò)的權(quán)值和偏差,我們還是必須使用學(xué)習(xí)算法使得網(wǎng)絡(luò)能自動(dòng)地從訓(xùn)練數(shù)據(jù)中學(xué)習(xí)到合適的權(quán)值和偏差。1980s和1990s,研究人員們嘗試使用隨機(jī)梯度下降法和反向傳播算法來訓(xùn)練深度網(wǎng)絡(luò),不幸的是,除了少數(shù)特殊結(jié)構(gòu),并沒有什么大的進(jìn)展。網(wǎng)絡(luò)可以學(xué)習(xí),但是很慢,因此沒什么用。

但自2006年以來,一系列的技術(shù)被發(fā)明,使得深度網(wǎng)絡(luò)的學(xué)習(xí)成為可能。雖然這些技術(shù)仍是基于隨機(jī)梯度下降法和反向傳播算法,但也有一些新的思想。這些技術(shù)使得更深(或更大)的網(wǎng)絡(luò)得到訓(xùn)練——人們現(xiàn)在普遍訓(xùn)練的網(wǎng)絡(luò)的隱藏層有5-10層。并且事實(shí)證明,在許多問題上,這些技術(shù)遠(yuǎn)比淺層神經(jīng)網(wǎng)絡(luò)(隱藏層只有一層的網(wǎng)絡(luò))的性能更好。

這其中的原因肯定是深度網(wǎng)絡(luò)能建立更復(fù)雜的層次結(jié)構(gòu),這就像傳統(tǒng)編程語言使用模塊化的設(shè)計(jì)以及抽象的思想從而能創(chuàng)建復(fù)雜的計(jì)算機(jī)程序一樣。當(dāng)然,在神經(jīng)網(wǎng)絡(luò)和傳統(tǒng)編程中,抽象是不同的形式,但都是同等重要的。

參考文獻(xiàn):

  • Michael A.Nielsen, “Neural Networks and Deep Learning“, Determination Press, 2015.
  • ReLu的好處:Kevin Jarrett, Koray Kavukcuoglu, Marc’Aurelio Ranzato and Yann LeCun, “What is the Best Multi-Stage Architecture for Object Recognition?” (2009)
  • ?ReLu的好處:Xavier Glorot, Antoine Bordes, and Yoshua Bengio, “Deep Sparse Recti?er Neural Networks” (2011)
  • ReLu的好處:Alex Krizhevsky, Ilya Sutskever, and Geoffrey Hinton, “ImageNet Classification with Deep Convolutional Neural Networks” (2012)
  • ReLu的好處:Vinod Nair and Geoffrey Hinton, “Rectified Linear Units Improve Restricted Boltzmann Machines” (2010)
  • 安逸軒的博客:http://andyjin.applinzi.com/
  • 轉(zhuǎn)載于:https://www.cnblogs.com/fhsy9373/p/6993476.html

    總結(jié)

    以上是生活随笔為你收集整理的初识神经网络NeuralNetworks的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。