神經網絡和深度學習之神經元和感知器


一、計算機和人相互依存

當今社會,計算機在我們的生活和工作中扮演着重要的角色,人類使用計算機幫助他們進行大量的計算,通過計算機讓每個人相互通信等等。但時代的進步讓我們對計算機的要求越來越高,人類希望它能夠從事越來越復雜的工作。乍看計算機進行計算以及通信工作的原理好像很復雜難懂,實際上計算機能夠進行這些工作是因為人們已經給它設定好了程序,計算機只要按照這些程序規范執行就好了,這是一種單向的工作模式,這種情況下,計算機是完全不會“思考”的,只知道按程序執行指令,而我們卻想賦予計算機思考的能力,這便是人工智能的起點。

圖1.1.1

我們希望計算機“思考”什么呢?比如,我們希望計算機能夠幫我們識別出圖片中動物是貓還是狗,幫我們對於圖片中存在各種物體做標識,幫我們翻譯一段文字,或者幫我們分析一段話或者一段句子中蘊含着說話人的什么情感等等。這些工作對人類而言非常簡單,甚至一個2,3歲的孩子也完全可以很好的分辨出一張圖片中的動物是貓還是狗,但這些對於計算機而已,卻是非常困難的,因為計算機不會“思考”,它不明白什么是狗,什么是貓,除非我們訓練它去認識狗和貓,這便是后來的機器學習。

圖1.1.2

二、 我們的神經細胞

要想計算機學會“思考”,首先來看看人類是如何思考的。

生命是神奇,美妙,復雜的,這種復雜程度不知道是計算機系統的多少倍,人類能夠思考並從事各種各樣的復雜的工作,是因為我們身體內部微小的神經細胞起着作用。

神經細胞也叫神經元,它的功能是接受某些形式的信號並對之做出反應,比如傳導興奮、處理並儲存信息以及發生細胞之間的聯結等。正因為神經元的這些功能,才能使得人和動物能夠對外界環境的變化做出反應。毋庸置疑,越高級的動物,神經元的個數和神經元之間的連接越復雜。

圖1.1.3

神經元由樹突、胞體、軸突、髓鞘、神經末梢等組成。樹突接受信息,並轉換成電信號,軸突傳輸電信號及處理等,神經末梢對信息進行反應。一個神經元完成了一個簡單的信息接收,處理,輸出的基本動作。人工智能專家們就從這里得到啟發,開始了人工智能模型——“神經網絡”的研究。

三、人造神經元

哲學告訴我們,世界上的萬物都是聯系的。生物學的神經元啟發我們構造了最簡單原始的“人造神經元”。下圖中的圓就好比一個神經元,它接受外部輸入,在圓內進行簡單或復雜的處理后形成輸出,在神經網絡中我們稱之為感知機。

圖1.1.4

神經元是人體神經系統的基本結構和功能單位,是無數個神經元相連而成(如下圖1.1.5所示),這是一個非常復雜的網絡系統。神經元間聯系方式是互相接觸,而不是細胞質的互相溝通。接觸部位的結構特化稱為突觸,通常是一個神經元的軸突與另一個神經元的樹突或胞體借突觸發生機能上的聯系,神經沖動由一個神經元通過突觸傳遞到另一個神經元。

圖1.1.5

同理,從人體神經系統的構成可以進一步創建更加復雜的人造神經系統,比如我們讓多個人造神經元(感知機)相連接,便形成了人工智能里面聲稱的“神經網絡”。如下圖所示,一個圓圈代表一個神經元,黃色的第一層稱為輸入層,藍色的第二層稱為隱藏層,隱藏層可以有多層,綠色的第三層稱為輸出層。

圖1.1.6

這僅僅是幾個神經元相連構成的簡單網絡,想想人類大腦1000億個神經細胞錯綜復雜的關聯在一起,是何等的復雜和繁忙,它們不停在處理信號,發出信號,讓我們能夠思考和從事各種工作,如果換成上萬個人造神經元相連,你覺得計算機可以做更加復雜的工作嗎,答案是肯定的。

四、神經元第一次工作

現在我們需要神經元來幫我們處理一個信息,把10加侖(gallon)的汽油換成以升(L)為單位的汽油。對於加侖和升兩種單位,國際上有標准的換算比例,1加侖=3.785412升,我們可以用一個公式來表示,即\(G=3.78L\)或者\(y=3.78x\),通過公式,我們可以簡單的換算就知道答案,這個難不到讀過初中的你。再仔細看看,\(y=3.78x\)不就是在坐標系中過原點的一條直線嗎?3.78是直線的斜率。

接着我們用神經元來進行學習換算(忽略一下激活層),如下圖1.1.7,神經元的輸入為\(x\),我們給輸入x賦了一個權重\(\alpha\),最后經過神經元的計算,得到輸出\(y\)

圖1.1.7

在神經元的計算中,最重要的一步是必須知道權值\(\alpha\),才能得到輸出\(y\),怎么換算呢?首先,正真的值應該是37.8升,核心就是神經元把正確答案37.8的和它預測的答案來對比着不斷學習改進!第一步,先像人一樣猜猜看,假設\(\alpha=3\),則神經元預測值\(y'=30\)升。

“這與實際值有差異吧,誤差為37.8-30=7.8升;哦,我明白了!”神經元繼續想着下一個計算。
“再計算一次我肯定能減小誤差,讓\(\alpha=3.5\)吧”,這一次預測值為35升。
“第二次計算誤差為\(37.8-35=2.8\)升,哈哈誤差在不斷縮小,也許下一次計算就接近真實值了!”
“這次我讓\(\alpha=4\),哦,糟了,預測值為40升,與實際值的誤差為\(37.8-40=-2.2\)升,過了!”
“好吧,我知道怎么調整了......”

神經元就這樣從誤差中不停的學習,最后輸出的值越來越接近真實值,這無疑是一次成功的訓練!

五、由神經元聯想到感知器

現在我們有兩堆豆子,豆子的特征如下表所示,我們想通過計算機預測一下哪一種是黃豆,哪一種是蠶豆。對於識別兩種不同種類的物體,人類眨巴眼就可以很容易的分辨出來,但計算機怎么分辨?是否有解決方案,答案是肯定的。

表1.1.1

我們用坐標來直觀的可視化這些特征,如下圖1.1.8所示。兩種豆子的長寬分別落在一定值范圍內,他們有明顯的特征,分布在坐標中的不同區域。

圖1.1.8

如果我們想分類這兩種豆子,用一條線是否就可以清晰的把它們分開?線的上面是蠶豆,線的下面是黃豆,如下圖1.1.9所示。這樣的線在數學中是一條線性線段,在神經網絡中被稱為線性回歸。只要計算機能通過線性回歸給出一條最合理的分類線,那么計算機就完成了分類任務,也就意味着計算機可以認識豆子了!是的,就是這么簡單!

圖1.1.9

你或許會問,這種線太多了,比如下面圖1.1.10(a)就不是一個很好的分類線,它完全沒有把黃豆和蠶豆分開,圖(b)也未能把兩種豆子分開,或許圖(c)應該不錯,它把兩種豆子很明顯的分類開了,但圖(c)的分類線並不一定是最優的,怎樣才能找到最優的一條線呢?這正是感知器內部需要做的工作,它通過一系列的計算,找出最優的線性線段,也就是我們的最優分類線。反觀我們的神經系統,人體神經元也是通過樹突接收信號,在細胞質中經過處理后通過軸突傳到其他地方的,原來,神經元和感知器如此類似!

圖1.1.10

But!這里強調一下,人體神經系統中神經元接收到信號,並不是馬上就傳導,而是要在信號刺激較達到一定閾值時候才開始處理信息並把信息傳導出去。這跟之前我們用\(y=\alpha x\)這樣的線性線段來進行加侖和升的換算不一樣,我們把\(y=\alpha x\)看成一個感知器,我們輸入\(x\)必定會有一個\(y\)與之對應,不管\(x\)多小,\(y\)也會及時的響應輸入\(x\)。而生物神經元傳導是需要有個閾值刺激的,\(x\)小了,神經元並不理會。由於我們喜歡模仿生物神經元的工作,所以通常在神經網絡的應用實踐中,生物神經元這種處理信號的方式也會被我們抄襲過來。這就是我們常常在線性感知器后面加入激活函數的意義。當信號達到一定閾值,激活層才能處理信息並輸出。如下圖1.1.11所示。

圖1.1.11

加入激活函數后,前面線性感知器的輸出就不是線性的了,我們把線性輸出做了非線性化處理,整個網絡稱得上是真正的完美。但是為什么我們需要加入激活,激活是什么呢?第二節我們會詳細講到。

六、線性回歸的缺陷

前面我們提到過一次線性回歸,什么是線性?從數學上來講就是變量\(x\)和變量\(y\)的函數圖形呈現為一條直線或線段,那么我們就說\(x\)\(y\)是一種線性關系,不僅如此,其實還有一些數學解釋也可以說明什么是線性,但這里,我們用上面的分類線\(y=\alpha x+\beta\)就可以說明了,而實際上線性回歸問題就是感知器的非網絡表達形式。

上面的感知器可以有效的進行二分類,在實際應用中我們也經常這樣使用,但是這種感知器就一定很強大嗎,有沒有它完成不了的分類呢?當然,萬事萬物都有局限性,我們引入幾個邏輯門來闡明一下這種局限性。
我們曾經在邏輯電路中學過與門,或門,與非門,或非門,異或門等幾種基本原件,如下圖1.1.12,這些原件組成的電路構成了最早的計算機。雖然這些原件的名字聽起來太理工科了,但是我們可以換個方式來理解這些生硬的器件,比如,兒子想看動畫片,與門表示完成作業和吃完飯兩個條件均滿足才能看動畫片;或門表示,只要完成作業或者吃完飯兩個條件其中有一個滿足就可以看動畫片等等,對照表1.1.2,你可以更容易地去理解。

圖1.1.12

繼續觀察這些邏輯門均有兩個輸入,一個輸出,輸入我們可以用1或0表示,輸出也可以用1或0表示,實際上計算機也就是通過0和1來處理信息的,計算機把0視為假,1視為真,並把0和1組成的一系列信息經過處理,得到一個輸出。現在,我們把這些邏輯門視為幾個邏輯函數,這些函數的輸入輸出是什么關系呢,我們用下表1.1.2表示。

表1.1.2

同時,我們把表格中前四個邏輯函數用坐標來觀察一下,規定同輸出且輸出為1的坐標用紅色表示,同輸出且輸出為0的坐標用綠色表示,如下圖1.1.13所示。可以看到,所有相同的輸出均可以用一個感知器來進行分類,也意味着感知器均可以很好的學習,這是我們希望看到的,並且感知器也做得很好。

圖1.1.13

緊接着我們看看最后一個邏輯函數——異或邏輯,糟糕!一個感知器根本沒辦法進行正確的分類,我們不希望看的事發生了,它無法解決這個有趣的問題,但我們希望計算機再智能一點,能夠幫助我們進行正確的分類。有解決方法嗎?仔細想想其實不難,再增加一個感知器怎么樣?如圖1.1.15所示,Yes!這達到了我們想要的效果。讓不同的感知器或者多個感知器一起工作,這是神經網絡的核心思想。

感知器的局限性好像與我們后續的神經網絡關系不大,但事實並不是如此,因為神經網絡的一個重要設計特征就來源於對這個局限性的了解。神經網絡並不僅僅就是解決一些簡單的問題,比如把設定好的黃豆和蠶豆樣本使用線性回歸進行分類,實際上我們面臨很多不可分的問題,異或門就是其中最簡單的線性不可分的代表。引入這些概念其實我們是想強調一點——別忘了加入激活函數,把線性問題非線性化,這樣會解決我們遇到的很多難題。

圖1.1.14

圖1.1.15

事實上的確如此,生活中我們沒多大可能會遇到如此簡單的線性問題,因為大多數事物的分布或者運動規律都不是線性的,這給我們的工作帶來的不止是挑戰,還有阻礙,但更多的是趣味,就是因為有了這些有趣的問題,才使得這世界多姿多彩。

參考文獻:
1、《Python神經網絡編程》[英]塔里克·拉希德


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM