【神經網絡】 之 神經網絡基礎(二)

【接上篇:https://blog.csdn.net/Aibiabcheng/article/details/106911064

5.有時候一個分類器不足以求解問題

前面的例子都是通過一個線性分類器成功分類的。此處,我們將使用一個簡單而鮮明的實例,來說明線性分類器的侷限性。

【邏輯運算:異或XOR

布爾邏輯函數通常需要兩個輸入,並輸出一個答案。

計算機通常使用數字1表示真,使用數字0表示假。

輸入A 輸入B XOR
0 0 0
0 1 1
1 0 1
1 1 0

現在,觀察這個函數的圖,其中網格節點上的輸出已經畫上顏色了。

我們似乎不能只用一條單一的直線將紅色區域和藍色區域劃分開來

事實上,對於布爾XOR函數而言,不可能使用一條單一的直線成功地將紅色區域和藍色區域劃分開來。也就是說,如果出現的是由XOR函數支配的訓練數據,那麼一個簡單的線性分類器無法學習到布爾XOR函數。

我們已經說明了簡單的線性分類器的一個主要限制。因此,我們需要一種解決的辦法。好在解決的辦法很容易,下圖使用兩條直線對不同的區域進行劃分。這暗示了一種解決的辦法,也就是說,

我們可以使用多個分類器一起工作。這是神經網絡的核心思想。

你可以想象,多條直線可以分離出異常形狀的區域,對各個區域進行分類。

我們最後再簡單總結一下。

  • 如果數據本身不是由單一線性過程支配,那麼一個簡單的線性分類器不能對數據進行劃分。例如,由邏輯XOR運算符支配的數據說明了這一點。
  • 但是解決方案很容易,你只需要使用多個線性分類器來劃分由單一直線無法分離的數據。

 

6.神經元——大自然的計算機器

雖然一些計算機擁有大量的電子計算元件、巨大的存儲空間,並且這些計算機的運行頻率比肉蓬蓬、軟綿綿的生物大腦要
快得多,但是即使是像鴿子一樣小的大腦,其能力也遠遠大於這些電子計算機,這使得科學家們對動物的大腦迷惑不解。

傳統的計算機按照嚴格的串行順序,相當準確具體地處理數據。對於這些冰冷堅硬的計算機而言,不存在模糊性或不確定性。而另一方面,動物的大腦表面上看起來以慢得多的節奏運行,卻似乎以並行方式處理信號,模糊性是其計算的一種特徵。

讓我們來觀察生物大腦中的基本單元——神經元

雖然神經元有各種形式,但是所有的神經元都是將電信號從一端傳輸到另一端,沿着軸突,將電信號從樹突傳到樹突。然後,這些信號從一個神經元傳遞到另一個神經元。

生物的大腦要慢得多,並且比起現代計算機,其計算元件相對較少,但是爲什麼生物的大腦卻有如此能力呢?大腦的全部功能(例如意識)仍是一個謎,但是關於神經元能夠使用不同方式進行計算,也就是不同的求解問題的方式,人類掌握的知識已經足夠我們使用了。

因此,我們來看看一個神經元是如何工作的。它接受了一個電輸入,輸出另一個電信號。這看起來,與我們先前所觀察的分類或預測的機器一模一樣,這些機器也是接受了一個輸入,進行一些處理,然後彈出一個輸出。

因此,我們可以與以前一樣,將神經元表示爲線性函數嗎?雖然這是個好主意,但是不可以這樣做。生物神經元與簡單的線性函數不一樣,不能簡單地對輸入做出的響應,生成輸出。也就是說,它的輸出不能採用這種形式:輸出=(常數*輸入)+(也許另一常數)。

觀察表明,神經元不會立即反應,而是會抑制輸入,直到輸入增強,強大到可以觸發輸出。你可以這樣認爲,在產生輸出之前,輸入必須到達一個閾值。就像水在杯中——直到水裝滿了杯子,纔可能溢出。

                

雖然這個函數接受了輸入信號,產生了輸出信號,但是我們要將某種稱爲激活函數的閾值考慮在內。在數學上,有許多激活函數可以達到這樣的效果。一個簡單的階躍函數可以實現這種效果。

你可以看到,在輸入值較小的情況下,輸出爲零。然而,一旦輸入達到閾值,輸出就一躍而起。

我們可以改進階躍函數。下圖所示的S形函數稱爲S函數(sigmoidfunction)。這個函數,比起冷冰冰、硬邦邦的階躍函數要相對平滑,這使得這個函數更自然、更接近現實。

S函數,有時也稱爲邏輯函數:  y=\frac{1}{1+e^{-x}}

讓我們回到神經元,並思考我們如何建模人工神經。

樹突收集了電信號,將其組合形成更強的電信號。如果信號足夠強,超過閾值,神經元就會發射信號,沿着軸突,到達終端,將信號傳遞給下一個神經元的樹突。下圖顯示了使用這種方式連接的若干神經元。

需要注意的一點是,每個神經元接受來自其之前多個神經元的輸入,並且如果神經元被激發了,它也同時提供信號給更多的神經元。將這種自然形式複製到人造模型的一種方法是,構建多層神經元,每一層中的神經元都與在其前後層的神經元互相連接。下圖詳細描述了這種思想。

你可以看到三層神經元,每一層有三個人工神經元或節點。你還可以看到每個節點都與前一層或後續層的其他每一個節點互相連接。

但是,這看起來很酷的體系架構,哪一部分能夠執行學習功能呢?針對訓練樣本,我們應該如何調整做出反應呢?有沒有和先前線性分類器中的斜率類似的參數供我們調整呢?

最明顯的一點就是調整節點之間的連接強度。在一個節點內,我們可以調整輸入的總和 或 S閾值函數的形狀

但是比起簡單地調整節點之間的連接強度,調整S閥值函數的形狀要相對複雜

如果相對簡單的方法可以工作,那麼請堅持這種方法!下圖再一次顯示了連接的節點,但是這次在每個連接上顯示了相關的權重。較小的權重將弱化信號,而較大的權重將放大信號。

此處,我需要解釋一下權重符號旁邊的有趣小數字(即下標)。簡單說來,權重w_{2,3}與前一層節點2傳遞給下一層的節點3的信號相關聯。因此,權重w_{1,2} 減小或放大節點1傳遞給下一層節點2的信號。爲了詳細說明這種思路,下圖突出顯示了第一層和第二層之間的兩條連接。

你可能有充分的理由來挑戰這種設計,質問爲什麼必須把前後層的每一個神經元與所有其他層的神經元互相連接,並且你甚至可以提出各種創造性的方式將這些神經元連接起來。我們不採用創造性的方式將神經元連接起來,原因有兩點,

  • 第一是這種一致的完全連接形式事實上可以相對容易地編碼成計算機指令,
  • 第二是神經網絡的學習過程將會弱化這些實際上不需要的連接(也就是這些連接的權重將趨近於0),因此對於解決特定任務所需最小數量的連接冗餘幾個連接,也無傷大雅。

說起這個,我們的意思是什麼呢?

這意味着,隨着神經網絡學習過程的進行,神經網絡通過調整優化網絡內部的鏈接權重改進輸出,一些權重可能會變爲零或接近於零。零或幾乎爲零的權重意味着這些鏈接對網絡的貢獻爲零,因爲沒有傳遞信號。零權重意味着信號乘以零,結果得到零,因此這個鏈接實際上是被斷開了.

最後我們還需要總結回顧一下。

  • 雖然比起現代計算機,生物大腦看起來存儲空間少得多,運行速度比較慢,但是生物大腦卻可以執行復雜的任務,如飛行、尋找食物、學習語言和逃避天敵。
  • 相比於傳統的計算機系統,生物大腦對損壞和不完善信號具有難以置信的彈性。
  • 由互相連接的神經元組成的生物大腦是人工神經網絡的靈感來源。我們由此建立起了簡單的神經網絡結構。

【參考資料】:Python神經網絡編程~[英]塔裏克·拉希德(Tariq Rashid)著,林賜 譯.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章