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

1、計算機和人相互依存

當今社會,計算機在咱們的生活和工做中扮演着重要的角色,人類使用計算機幫助他們進行大量的計算,經過計算機讓每一個人相互通訊等等。但時代的進步讓咱們對計算機的要求愈來愈高,人類但願它可以從事愈來愈複雜的工做。乍看計算機進行計算以及通訊工做的原理好像很複雜難懂,實際上計算機可以進行這些工做是由於人們已經給它設定好了程序,計算機只要按照這些程序規範執行就行了,這是一種單向的工做模式,這種狀況下,計算機是徹底不會「思考」的,只知道按程序執行指令,而咱們卻想賦予計算機思考的能力,這即是人工智能的起點。
編程



圖1.1.1網絡


咱們但願計算機「思考」什麼呢?好比,咱們但願計算機可以幫咱們識別出圖片中動物是貓仍是狗,幫咱們對於圖片中存在各類物體作標識,幫咱們翻譯一段文字,或者幫咱們分析一段話或者一段句子中蘊含着說話人的什麼情感等等。這些工做對人類而言很是簡單,甚至一個2,3歲的孩子也徹底能夠很好的分辨出一張圖片中的動物是貓仍是狗,但這些對於計算機而已,倒是很是困難的,由於計算機不會「思考」,它不明白什麼是狗,什麼是貓,除非咱們訓練它去認識狗和貓,這即是後來的機器學習。
機器學習



圖1.1.2函數


2、 咱們的神經細胞

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

生命是神奇,美妙,複雜的,這種複雜程度不知道是計算機系統的多少倍,人類可以思考並從事各類各樣的複雜的工做,是由於咱們身體內部微小的神經細胞起着做用。動畫

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



圖1.1.3spa


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

3、人造神經元

哲學告訴咱們,世界上的萬物都是聯繫的。生物學的神經元啓發咱們構造了最簡單原始的「人造神經元」。下圖中的圓就比如一個神經元,它接受外部輸入,在圓內進行簡單或複雜的處理後造成輸出,在神經網絡中咱們稱之爲感知機。
設計



圖1.1.4


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



圖1.1.5


同理,從人體神經系統的構成能夠進一步建立更加複雜的人造神經系統,好比咱們讓多我的造神經元(感知機)相鏈接,便造成了人工智能裏面聲稱的「神經網絡」。以下圖所示,一個圓圈表明一個神經元,黃色的第一層稱爲輸入層,藍色的第二層稱爲隱藏層,隱藏層能夠有多層,綠色的第三層稱爲輸出層。



圖1.1.6



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

4、神經元第一次工做

如今咱們須要神經元來幫咱們處理一個信息,把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\)升,過了!」
「好吧,我知道怎麼調整了......」

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

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

如今咱們有兩堆豆子,豆子的特徵以下表所示,咱們想經過計算機預測一下哪種是黃豆,哪種是蠶豆。對於識別兩種不一樣種類的物體,人類眨巴眼就能夠很容易的分辨出來,但計算機怎麼分辨?是否有解決方案,答案是確定的。



表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


加入激活函數後,前面線性感知器的輸出就不是線性的了,咱們把線性輸出作了非線性化處理,整個網絡稱得上是真正的完美。可是爲何咱們須要加入激活,激活是什麼呢?第二節咱們會詳細講到。

6、線性迴歸的缺陷

前面咱們提到過一次線性迴歸,什麼是線性?從數學上來說就是變量\(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


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

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

相關文章
相關標籤/搜索