第一章 神經(jīng)網(wǎng)絡(luò)是如何實(shí)現(xiàn)的
這些年人工智能蓬勃發(fā)展,在語音識別、圖像識別、自然語言處理等多個領(lǐng)域得到了很好的應(yīng)用。推動這波人工智能浪潮的無疑是深度學(xué)習(xí)。所謂的深度學(xué)習(xí)實(shí)際上就是多層神經(jīng)網(wǎng)絡(luò),至少到目前為止,深度學(xué)習(xí)基本上是用神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)的。神經(jīng)網(wǎng)絡(luò)并不是什么新的概念,早在上個世紀(jì)40年代就開展了以感知機(jī)為代表的神經(jīng)網(wǎng)絡(luò)的研究,只是限于當(dāng)時的客觀條件,提出的模型比較簡單,只有輸入、輸出兩層,功能有限,連最簡單的異或問題(XOR問題)都不能求解,神經(jīng)網(wǎng)絡(luò)的研究走向低潮。
到了80年代中期,隨著BP算法的提出,神經(jīng)網(wǎng)絡(luò)再次引起研究熱潮。當(dāng)時被廣泛使用的神經(jīng)網(wǎng)絡(luò),在輸入層和輸出層之間引入了隱含層,不但能輕松求解異或問題,還被證明可以逼近任意連續(xù)函數(shù)。但限于計算能力和數(shù)據(jù)資源的不足,神經(jīng)網(wǎng)絡(luò)的研究再次陷入低潮。
一直對神經(jīng)網(wǎng)絡(luò)情有獨(dú)鐘的多倫多大學(xué)的辛頓教授,于2006年在《科學(xué)》上發(fā)表了一篇論文,提出了深度學(xué)習(xí)的概念,至此神經(jīng)網(wǎng)絡(luò)以深度學(xué)習(xí)的面貌再次出現(xiàn)在研究者的面前。但是深度學(xué)習(xí)并不是簡單地重復(fù)以往的神經(jīng)網(wǎng)絡(luò),而是針對以往神經(jīng)網(wǎng)絡(luò)研究中存在的問題,提出了一些解決方法,可以實(shí)現(xiàn)更深層次的神經(jīng)網(wǎng)絡(luò),這也是深度學(xué)習(xí)一詞的來源。
隨著深度學(xué)習(xí)方法先后被應(yīng)用到語音識別、圖像識別中,并取得了傳統(tǒng)方法不可比擬的性能,深度學(xué)習(xí)引起了人工智能研究的再次高潮。
一、數(shù)字識別
1. 引入例子
- 下圖是個數(shù)字3的圖像,其中1代表有筆畫的部分,0代表沒有筆畫的部分。假設(shè)想對0到9這十個數(shù)字圖像進(jìn)行識別,也就是說,如果任給一個數(shù)字圖像,我們想讓計算機(jī)識別出這個圖像是數(shù)字幾,我們應(yīng)該如何做呢?
2. 模式匹配
- 一種簡單的辦法就是對每個數(shù)字構(gòu)造一個模式,比如對數(shù)字3,我們這樣構(gòu)造模式:有筆畫的部分用1表示,而沒有筆畫的部分,用-1表示,如圖所示。當(dāng)有一個待識別圖像時,我們用待識別圖像與該模式進(jìn)行匹配,匹配的方法就是用圖像和模式的對應(yīng)位置數(shù)字相乘,然后再對相乘結(jié)果進(jìn)行累加,累加的結(jié)果稱為匹配值。為了方便表示,我們將模式一行一行展開用
w
i
w_i
wi?(
i
i
i = 1, 2, …, n) 表示模式的每一個點(diǎn)。待識別圖像也同樣處理,用
x
i
x_i
xi?(
i
i
i = 1, 2, …, n) 表示。這里假定模式和待識別圖像的大小是一樣的,由n個點(diǎn)組成。
- 如果模式與待識別圖像中的筆畫是一樣的,就會得到一個比較大的匹配結(jié)果,如果有不一致的地方,比如模式中某個位置沒有筆畫,這部分在模式中為-1,而待識別圖像中相應(yīng)位置有筆畫,這部分在待識別圖像中為1,這樣對應(yīng)位置相乘就是-1,相當(dāng)于對結(jié)果做了懲罰,會使得匹配結(jié)果變小。匹配結(jié)果越大說明待識別圖像與模式越一致,否則差別就比較大。
- 如圖所示是8的圖像。這兩個數(shù)字的區(qū)別只是在最左邊是否有筆畫,當(dāng)用8與3的模式匹配時,8的左邊部分與3的模式的左邊部分相乘時,會得到負(fù)值,這樣匹配結(jié)果受到了懲罰,降低了匹配值。相反如果當(dāng)3與8的模式匹配時,由于3的左邊沒有筆畫值為0,與8的左邊對應(yīng)位置相乘得到的結(jié)果是0,也同樣受到了懲罰,降低了匹配值。只有當(dāng)待識別圖像與模式筆畫一致時,才會得到最大的匹配值。
- 數(shù)字3、8分別與3的模式的匹配值各是多少?計算結(jié)果,3與3的模式的匹配值是143,而8與3的模式的匹配值是115??梢娗罢哌h(yuǎn)大于后者。
3. 存在的問題
- 如果想識別一個數(shù)字是3還是8,就分別和這兩個數(shù)字的模式進(jìn)行匹配,看與哪個模式的匹配值大,就是哪個數(shù)字。
- 如果識別0到9這10個數(shù)字,只要分別建造這10個數(shù)字的模式就可以了。對于一個待識別圖像,分別與10個模式匹配,選取匹配值最大的作為識別結(jié)果就可以了。但是由于不同數(shù)字的筆畫有多有少,比如1筆畫就少,而8就比較多,所以識別結(jié)果的匹配值也會有大有小。
4. 使用 Sigmoid 函數(shù)
- 我們可以對匹配值用一個稱作sigmoid的函數(shù)進(jìn)行變換,將匹配值變換到0和1之間。sigmoid函數(shù)如下式所示,通常用σ表示。
σ
=
1
1
+
e
?
x
\sigma = \frac{1}{1 + e ^ {-x} }
σ=1+e?x1?
- 從圖中可以看出,當(dāng)x比較大時,sigmoid輸出接近于1,而x比較小時(負(fù)數(shù)),sigmoid輸出接近于0。經(jīng)過sigmoid函數(shù)變換后的結(jié)果可以認(rèn)作是待識別圖像屬于該數(shù)字的概率。
5. 增加偏置項(xiàng)
- 但是像前面的3和8的匹配結(jié)果分別為143、115,把兩個結(jié)果帶入到sigmoid函數(shù)中,都接近于1了,并沒有明顯的區(qū)分。
- sigmoid函數(shù)并不能直接這樣用,而是要“平移”一下,加上一個適當(dāng)?shù)钠胋,使得加上偏置后,兩個結(jié)果分別在sigmoid函數(shù)中心線的兩邊,來解決這個問題:
- 比如這里我們讓b=-129,這樣處理后的sigmoid值分別是:
- sigmoid(143-129)=0.999999
- sigmoid(115-129)=0.000001
- 這樣區(qū)分的就非常清楚了,接近1的就是識別結(jié)果,而接近0的就不是。不同的數(shù)字模式具有不同的b值,這樣才能解決前面提到的不同數(shù)字之間筆畫有多有少的問題。
- 這是一種簡單的數(shù)字識別基本原理。這與神經(jīng)網(wǎng)絡(luò)有什么關(guān)系呢?
6. 神經(jīng)網(wǎng)絡(luò)
- 上面介紹的,其實(shí)就是一個簡單的神經(jīng)網(wǎng)絡(luò)。這是一個可以識別3和8的神經(jīng)網(wǎng)絡(luò),和前面介紹的一樣,
x
1
x_1
x1? …
x
n
x_n
xn? 表示待識別圖像,
w
3.1
w_{3.1}
w3.1? …
w
3.
n
w_{3.n}
w3.n?和
w
8.1
w_{8.1}
w8.1? …
w
8.
n
w_{8.n}
w8.n? 分別表示3的模式和8的模式,在圖中可以看成是每條邊的權(quán)重。如果用
y
3
y_3
y3? 、
y
8
y_8
y8? 分別表示識別為3或者8的概率的話,則這個示意圖實(shí)際表示的和前面介紹的數(shù)字識別方法是完全一樣的,只不過是換成了用網(wǎng)絡(luò)的形式表達(dá)。
- 圖中下邊表示輸入層,每個圓圈對應(yīng)輸入圖像在位置
i
i
i 的值
x
i
x_i
xi? ,上邊一層表示輸出層,每一個圓圈代表了一個神經(jīng)元,所有的神經(jīng)元都采取同樣的運(yùn)算:輸入的加權(quán)和,加上偏置,再經(jīng)過sigmoid函數(shù)得到輸出值。這樣的一個神經(jīng)網(wǎng)絡(luò),實(shí)際表示的是如下計算過程:
7. 數(shù)字識別神經(jīng)網(wǎng)絡(luò)
- 每個神經(jīng)元對應(yīng)的權(quán)重都代表了一種模式。比如在這個圖中,一個神經(jīng)元代表的是數(shù)字3的模式,另一個神經(jīng)元代表的是數(shù)字8的模式。進(jìn)一步如果在輸出層補(bǔ)足了10個數(shù)字,就可以實(shí)現(xiàn)數(shù)字識別了。
- 要識別的數(shù)字不規(guī)整,怎么辦?
- 這個網(wǎng)絡(luò)過于簡單了,要想構(gòu)造復(fù)雜一些的網(wǎng)絡(luò),可以有兩個途徑。比如一個數(shù)字可以有不同的寫法,這樣的話,同一個數(shù)字就可以構(gòu)造多個不同的模式,只要匹配上一個模式,就可以認(rèn)為是這個數(shù)字。這是一種橫向的擴(kuò)展。另外一個途徑就是構(gòu)造局部的模式。比如可以將一個數(shù)字劃分為上下左右4個部分,每個部分是一個模式,多個模式組合在一起合成一個數(shù)字。不同的數(shù)字,也可以共享相同的局部模式。比如3和8在右上、右下部分模式可以是相同的,而區(qū)別在左上和左下的模式上。要實(shí)現(xiàn)這樣的功能,需要在神經(jīng)網(wǎng)絡(luò)的輸入層、輸出層之間增加一層表示局部模式的神經(jīng)元,這層神經(jīng)元由于在神經(jīng)網(wǎng)絡(luò)的中間部分,所以被稱為隱含層。輸入層到隱含層的神經(jīng)元之間都有帶權(quán)重的連接,而隱含層到輸出層之間也同樣具有帶權(quán)重的連接。隱含層的每個神經(jīng)元,均表示了某種局部模式。這是一種縱向的擴(kuò)展。
8. 神經(jīng)網(wǎng)絡(luò)的橫向擴(kuò)展 – 增加模式
9. 神經(jīng)網(wǎng)絡(luò)的縱向擴(kuò)展 – 局部模式
文章來源:http://www.zghlxwxcb.cn/news/detail-709326.html
10. 讓神經(jīng)網(wǎng)絡(luò)更深 - 模式組合
文章來源地址http://www.zghlxwxcb.cn/news/detail-709326.html
11. 多層神經(jīng)網(wǎng)絡(luò)
- 如果要刻畫更細(xì)致的局部模式,可以通過增加隱含層的數(shù)量來刻畫更細(xì)致的模式,每增加一層隱含層,模式就被刻畫的更詳細(xì)一些。這樣就建立了一個深層的神經(jīng)網(wǎng)絡(luò),越靠近輸入層的神經(jīng)元,刻畫的模式越細(xì)致,體現(xiàn)的越是細(xì)微信息的特征;越是靠近輸出層的神經(jīng)元,刻畫的模式越是體現(xiàn)了整體信息的特征。這樣通過不同層次的神經(jīng)元體現(xiàn)的是不同粒度的特征。每一層隱含層也可以橫向擴(kuò)展,在同一層中每增加一個神經(jīng)元,就增加了一種與同層神經(jīng)元相同粒度特征的模式。
- 神經(jīng)網(wǎng)絡(luò)越深越能刻畫不同粒度特征的模式,而橫向神經(jīng)元越多,則越能表示不同的模式。但是當(dāng)神經(jīng)網(wǎng)絡(luò)變得復(fù)雜后,所要表達(dá)的模式會非常多,如何構(gòu)造各種不同粒度的模式呢?
- 構(gòu)造模式是非常難的事情,事實(shí)上我們也很難手工構(gòu)造這些模式。在后面我們可以看到,這些模式,也就是神經(jīng)網(wǎng)絡(luò)的權(quán)重是可以通過樣本訓(xùn)練得到的,也就是根據(jù)標(biāo)注好的樣本,神經(jīng)網(wǎng)絡(luò)會自動學(xué)習(xí)這些權(quán)值,也就是模式,從而實(shí)現(xiàn)數(shù)字識別。
12. 如何獲得模式?
- 模式通過神經(jīng)元的連接權(quán)重表示
- 通過訓(xùn)練樣本,自動學(xué)習(xí)權(quán)重,也就是模式
- 不是人工設(shè)計!
- 學(xué)習(xí)到的模式是一種隱含表達(dá),并不像舉例的這樣清晰
13. 總結(jié)
- 神經(jīng)元可以表示某種模式,不同層次的神經(jīng)元可以表示不同粒度的特征,從輸入層開始,越往上表示的特征粒度越大,從開始的細(xì)粒度特征,到中間層次的中粒度特征,再到最上層的全局特征,利用這些特征就可以實(shí)現(xiàn)對數(shù)字的識別。如果網(wǎng)絡(luò)足夠復(fù)雜,神經(jīng)網(wǎng)絡(luò)不僅可以實(shí)現(xiàn)數(shù)字識別,還可以實(shí)現(xiàn)更多的智能系統(tǒng),比如人臉識別、圖像識別、語音識別、機(jī)器翻譯等。
- 神經(jīng)元實(shí)際上是模式的表達(dá),不同的權(quán)重體現(xiàn)了不同的模式。權(quán)重與輸入的加權(quán)和,即權(quán)重與對應(yīng)的輸入相乘再求和,實(shí)現(xiàn)的是一次輸入與模式的匹配。該匹配結(jié)果可以通過sigmoid函數(shù)轉(zhuǎn)換為匹配上的概率。概率值越大說明匹配度越高。
- 一個神經(jīng)網(wǎng)絡(luò)可以由多層神經(jīng)元構(gòu)成,每個神經(jīng)元表達(dá)了一種模式,越是靠近輸入層的神經(jīng)元表達(dá)的越是細(xì)粒度的特征,越是靠近輸出層的神經(jīng)元表達(dá)的越是粗粒度特征。同一層神經(jīng)元越多,說明表達(dá)的相同粒度的模式越多,而神經(jīng)網(wǎng)絡(luò)層數(shù)越多,越能刻畫不同粒度的特征。
到了這里,關(guān)于人工智能AI 全棧體系(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!