《深度學習入門 基於Python的理論與實現》2

2021-10-22 18:35:07 字數 2425 閱讀 8449

輸出層的設計

對於乙個神經網路模型,輸出的個數如何確定?各層的變數數如何確定?計算中用到的各權重如何確定?都是需要考慮的問題。

先給我的答案:

首先明確一點,啟用函式是用來加入非線性因素的,因為線性模型的表達力不夠。

假設如果沒有啟用函式的出現,你每一層節點的輸入都是上層輸出的線性函式,很容易驗證,無論你神經網路有多少層,輸出都是輸入的線性組合,與沒有隱藏層效果相當,也就是說沒有啟用函式的每層都相當於矩陣相乘。就算你疊加了若干層之後,無非還是個矩陣相乘罷了。那麼網路的逼近能力就相當有限。正因為上面的原因,我們決定引入非線性函式作為啟用函式,這樣深層神經網路表達能力就更加強大(不再是輸入的線性組合,而是幾乎可逼近任意函式)

因為神經網路的數學基礎是處處可微的,所以選取的啟用函式要能保證資料輸入與輸出也是可微的,運算特徵是不斷進行迴圈計算,所以在每代迴圈過程中,每個神經元的值也是在不斷變化的。

sigmoid函式也叫logistic函式,用於隱層神經元輸出,取值範圍為(0,1),它可以將乙個實數對映到(0,1)的區間,可以用來做二分類。在特徵相差比較複雜或是相差不是特別大時效果比較好。

sigmoid作為啟用函式有以下優缺點:

優點:平滑、易於求導。

缺點:啟用函式計算量大,反向傳播求誤差梯度時,求導涉及除法;反向傳播時,很容易就會出現梯度消失的情況,從而無法完成深層網路的訓練。

sigmoid函式由下列公式定義

sigmoid函式的圖形如s曲線

階躍函式是一種特殊的連續時間函式,是乙個從0跳變到1的過程,屬於奇異函式。該函式用於感知機表示,其間流動的訊號是0或1的二元訊號。

其圖形如下

relu函式是線性整流函式(rectified linear unit, relu),又稱修正線性單元,是一種人工神經網路中常用的啟用函式(activation function),通常指代以斜坡函式及其變種為代表的非線性函式。

relu函式其實是分段線性函式,把所有的負值都變為0,而正值不變,這種操作被成為單側抑制。(也就是說:在輸入是負值的情況下,它會輸出0,那麼神經元就不會被啟用。這意味著同一時間只有部分神經元會被啟用,從而使得網路很稀疏,進而對計算來說是非常有效率的。)正因為有了這單側抑制,才使得神經網路中的神經元也具有了稀疏啟用性。尤其體現在深度神經網路模型(如cnn)中,當模型增加n層之後,理論上relu神經元的啟用率將降低2的n次方倍。

使用relu函式有什麼優勢?

1.沒有飽和區,不存在梯度消失問題。

2.沒有複雜的指數運算,計算簡單、效率提高。

3.實際收斂速度較快,比 sigmoid/tanh 快很多。

4.比 sigmoid 更符合生物學神經啟用機制。

當然relu也存在不足:就是訓練的時候很」脆弱」,很容易就」die」了. 舉個例子:乙個非常大的梯度流過乙個 relu 神經元,更新過引數之後,這個神經元再也不會對任何資料有啟用現象了。如果這個情況發生了,那麼這個神經元的梯度就永遠都會是0.實際操作中,如果你的learning rate 很大,那麼很有可能你網路中的40%的神經元都」dead」了。 當然,如果你設定了乙個合適的較小的learning rate,這個問題發生的情況其實也不會太頻繁。

神經網路可以用在分類問題和回歸問題上,不過需要根據情況改變輸出層的啟用函式。一般而言,回歸問題用恒等函式,分類問題用softmax函式。

恒等函式會將輸入按原樣輸出,對於輸入的資訊,不加以任何改動地直接輸出。因此,在輸出層使用恒等函式時,輸入訊號會原封不動地被輸出。另外,將恒等函式的處理過程用之前的神經網路圖來表示的話,則如圖

softmax函式用於分類過程,將多個神經元的輸出,對映到(0,1)內。公式如下

其中exp為指數函式,ak代表第k個輸出神經元的輸入,ai代表第i個輸出神經元的輸入,公式分子表示ak的指數函式,分母表示所有輸出神經元的輸入指數函式的和。

下圖展示了softmax的計算方法:

softmax 函式的輸出是 0.0 到 1.0 之間的實數。並且,softmax 函式的輸出值的總和是 1。輸出總和為 1 是 softmax 函式的乙個重要性質。正因為有了這個性質,我們才可以把 softmax 函式的輸出解釋為「概率」。

到這裡,我們已經掌握了神經網路的基本結構,但是神經網路是怎樣學習的呢?怎麼就可以實現神奇的分類、識別功能呢。我們後續接著講。

深度學習入門 基於python的理論與實現 2

2.3 感知器的實現 2.4 感知器的侷限性 2.5 多層感知器 感知器接受多個輸入訊號,輸出乙個訊號。如圖是乙個接收兩個輸入訊號的感知器。x2 是輸入訊號,y yy是輸出訊號,w 1w 1 w1 w 2w 2 w2 是權重。圖中的圓圈稱為 神經元 或 節點 輸入訊號被送往神經元時,會被分別乘以固定...

深度學習入門體驗 基於PaddlePaddle框架

回想整個學習安排,是比較流暢的,理論部分講解較多,實踐部分基本會提供大部分 或者baseline,一般補充幾行 就能跑通,然後進行引數配置調優,當然也可以設計更好的網路結構。這樣低門檻的設定也更好地吸引初學者加入,故為 入門打卡營 隨著大資料的發展,深度學習的優勢得以顯現。一般而言,對於乙個實際問題...

Python深度學習 01深度學習入門

深度學習是機器學習與神經網路 人工智慧 圖形化建模 優化 模型識別和訊號處理等技術融合後產生的乙個領域。簡單來說,深度神經網路是一種用多層抽象來表示概念或者特徵的方式。深度學習使用多層機器學習模型對資料進行有監督學習或者無監督學習。在學習深度學習核心思想時,採取如圖所示的的通用方法 注意 單隱藏層神...