讓女朋友都能聽懂的神經網絡(神經網絡簡介)

今天大管準備和大家來聊一聊神經網絡。這樣吧,爲了把事情說清楚我們還是從源頭說起——感知機。

     感知機是在1957年提出,是神經網絡(深度學習)的起源算法。因此瞭解感知機的構造也就是了解神經網絡不可或缺的一步。

感知機到底是什麼?

     通俗的說,感知機接收多個信號,輸出一個信號。注意這裏的“信號”只有1或者0兩種取值,也可以理解爲0對應着信號中斷,1對應着信號傳遞(信號的0/1兩種狀態與計算機硬件的電氣特性有關)。

上圖是大管畫的一個接受兩個輸入信號的感知機。上圖中的x1,x2我們稱之爲輸入信號,y稱之爲輸出信號,w1,w2稱之爲權重,θ稱之爲偏置。圖中的○稱之爲神經元。當輸入信號被送入神經元時,會被乘以各自的權重,而輸出神經元會計算被送來的神經元總和,當總和超過某個閾值時,纔會輸出1。將上面的圖片轉換爲公式就是:

下面我們使用感知機來分別實現與門,非門和或門簡單的邏輯電路。

與門(AND)邏輯電路的真值表如下所示(1表示真,0表示假):

觀察真值表我們發現,只有當x1,x2同時爲1時,輸出才爲1,其他情況爲0。結合感知機的公式,滿足這種條件的w1,w2和θ值有無數多個。比如當(w1,w2,θ)=(0.5,0.5,0.7)時就可以滿足條件。

非門(NAND)邏輯電路則顛倒了與門的輸出,其真值表如下所示:

僅當x1和x2全爲1時,輸出才爲0,其他情況輸出1。結合感知機的公式,滿足這種條件的w1,w2和θ值也有無數多個。比如當(w1,w2,θ)=(-0.5,-0.5,-0.7)就可以滿足條件。

同樣或門(OR)電路的真值表如下:

僅當x1和x2全爲0時,輸出才爲0,其他情況輸出爲1。滿足這種條件的值也有很多,比如當(w1,w2,θ)=(1,1,0.5)就可以滿足條件。

通過上面的例子可以知道,感知機可以用來表示上面三種邏輯電路。實際上只是w1,w2和θ的取值不同,我們把其稱之爲參數。只需要調整合適的參數,就可以適應不同的的邏輯電路。

在上面的過程中,感知機參數的決定是由我們人爲的看着真值表這種“訓練數據”而決定的,而神經網絡則是通過計算機自動根據訓練數據決定參數的取值。所以神經網絡的學習是確定合適的參數的過程,而人要做的是感知機的構造模型,並且把訓練數據輸入計算機(劃重點)。

下面我們再來考慮一個問題,如何使用感知機來實現異或門(XOR)邏輯。真值表如下:

從異或門的真值表中我們可以發現,當x1和x2的取值不相同輸出爲1,x1和x2的取值相同時輸出爲0。那麼,要用感知機實現這個異或門的話,應該設置什麼樣的權重和偏置參數呢?

看一下我們能不能從簡單的或門電路中得到啓發。首先將或門邏輯電路的權重和偏置值帶入感知機公式:

上式可以看做由一條直線分割在平面內分割開的兩個空間,一個空間輸出0,另一個空間輸出1。如下圖所示:

可以看到,紫色陰影部分的空間爲0,光亮部分爲1。那如果換成異或門的話,分割開的空間會是什麼樣呢?如下圖所示

○代表0,△代表1。要想用一條直線將其分開,無論如何也做不到,只能用上圖所示的曲線將其分開。到這裏有的小夥伴會想到大管曾經說過的王子和公主的故事,使用核方法將其映射到更高的維度將其分隔開。但是這裏我們不用核方法,我們巧妙的使用疊加感知機將其完美分開。

下面大管分別畫出與門、或門和非門的符號:

那麼如何設置這三個門電路,將其改成異或門(XOR)邏輯電路呢?(這裏自己可以思考三秒鐘)下面畫出異或門的圖示:

通過計算我們發現,其確實可以完成異或門的邏輯。再仔細觀察,它並不是由x1和x2簡單的乘以權重加和得到的,中間多了一步s1和s2,類似於異或門邏輯電路這種感知機我們稱之爲多層感知機,如下圖所示:

在神經網絡中,我們把第0層稱之爲輸入層,第1層(包括中間所有的層)稱之爲隱藏層,第2層稱之爲輸出層。

這裏我們使用python寫出異或門的代碼:

def XOR(x1,x2):
    s1 = NAND(x1,x2)
    s2  = OR(x1,x2)
    y = AND(s1,s2)
    return y

神經網絡

回顧感知機的公式,我們將權重θ換成b來表示,並將其改寫成如下公式:

其中:

我們把h(x)稱之爲激活函數。激活函數的作用在於決定如何來 激活輸入信號的總和。在這裏我把h(x)和y做點變動(神經網絡的表達公式):

下面給出上面表達式對應的神經網絡結構,如下圖所示:

然而一個完整的神經網絡遠遠比上圖中的複雜,它往往具有 多個輸入,多個隱藏層,多個輸出,如下圖所示:

       當然是神經網絡的奧妙遠遠不止這些,這只是冰山一角。神經網絡還涉及如何選取激活函數,如何確定神經網絡的層數,如何初始化權重和偏置,神經網絡是如何計算權重和偏置,如何設置Dropout等等這些問題,大管將在以後繼續和大家聊。

多內容下載機器學習資料請掃描下方二維碼關注小編公衆號:程序員大管

 

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