神經網絡的基本結構#
神經元 (simple neuron)#
(weight):權重
:輸入值
:偏置
偏置類似於線性方程裡面的截距
主要作用:
調整激活函數的閾值:偏置 可以看作是調整激活函數的閾值。沒有偏置的神經元的輸出完全依賴於輸入的加權和。當輸入的加權和為零時,沒有偏置的神經元將總是輸出相同的值。然而,加入偏置 後,即使輸入的加權和為零,神經元也可以輸出不同的值,從而增加了模型的靈活性。
提高模型的表達能力:通過增加偏置項,神經網絡能夠擬合更多類型的數據分佈。偏置項允許神經網絡更好地學習數據的複雜特徵,從而提高了模型的表達能力和泛化能力。
避免模型欠擬合:偏置項可以幫助模型避免欠擬合問題。欠擬合發生在模型無法捕捉訓練數據的潛在模式時。偏置項允許神經元在沒有顯著輸入信號的情況下激活,從而幫助模型更好地擬合訓練數據。
:激活函數
注意:
這裡的輸出是一個標量, 是點乘
公式也能寫作
單層神經網絡 (Single layer neural network)#
單層神經元裡的多個神經元都可以進並行計算
並行計算方式見注意
這裡每個神經元都可以輸出一個標量
注意:
這裡並行計算方式是把權重 w 從一個向量變成了一個矩陣,偏置從一個標量變成了一個向量,注意不是我們理解的通過多線程來進行並行計算
這裡激活函數的計算是在將輸入向量與權重矩陣相乘並加上偏置之後進行的
加權和計算:
- 首先,將輸入向量 與權重矩陣 相乘得到加權和向量:
其中, 是一個向量,其每個元素對應一個神經元的加權和。 - 然後將偏置向量 加到加權和向量上:
激活函數計算:
- 激活函數 應用於加權和向量 的每個元素,得到輸出向量 :
- 具體來說,如果我們有 個神經元, 和 都是長度為 的向量。激活函數 會逐元素(element-wise)地應用於 的每個元素 ,得到對應的輸出 :
多層神經網絡 (Multilayer neural network)#
通過疊加多個類似的層我們就可以得到一個多層神經網絡
前向計算:從輸入開始依次計算每一層的結果
輸入層(input layer)-> 隱藏層 (hidden layer)-> 輸出層 (output layer)
隱藏層: 在輸入之前添加的多層網絡
注意:隱藏層的輸出通常用 來表示,這裡的輸出 是一個向量,主要由線性變換和激活函數得到
重點!!!:
激活函數的作用:
- 引入非線性:激活函數將線性模型轉換為非線性模型。因為沒有激活函數的神經網絡本質上就是線性變換的疊加,無論網絡有多少層,都等價於一層線性變換。防止了多層神經網絡塌縮為單一的神經網絡,非線性激活函數使得神經網絡能夠學習和表示複雜的非線性關係。
神經網絡中如果只存在線性運算,則多層的神經網絡可以轉換為單層的神經網絡
- 增加網絡的表達能力:通過引入非線性,激活函數使得神經網絡能夠擬合任意複雜的函數。這大大增加了網絡的表達能力和泛化能力,使其能夠處理各種各樣的數據集和任務。
- 幫助梯度下降收斂:某些激活函數(如 ReLU)可以減輕梯度消失問題,從而幫助梯度下降算法更快收斂。激活函數的選擇可以影響模型的訓練效率和效果。
激活函數 (activation function)#
Sigmoid:把負無窮到正無窮的輸入轉換為 0 到 1
Tanh:把負無窮到正無窮的輸入轉換為負 1 到 1
注意:Tanh 輸入是 0 的時候輸出也是 0
ReLU:對於正數的輸入,他的輸出仍然是原來的數,對於負數的輸入,他的輸出就是 0
Softmax:用於多分類問題的輸出層,將輸入轉換為概率分佈,輸出值在 (0, 1) 之間,並且總和為 1
公式:
輸出層 (outputlayer)#
與隱藏層有一些相通之處,這裡取決於你想讓模型輸出什麼樣的數據
線性輸出:直接在隱藏層後面再加一個線性層,輸出得到一個值,主要用於回歸問題
Sigmoid:與激活函數 Sigmoid 函數類似,先用一個普通的線性層得到一個值 ,然後再對這個值 應用 sigmoid 激活函數把輸出壓縮到0 到 1,主要用於解決二分類問題,我們用輸出 來表示這個模型預測當前輸入屬於某一個類的概率,用 來表示屬於另外一個類的概率
softmax:主要用於解決多分類問題(分類類別數量 >2),首先對最後一個隱藏層應用一個線性層來得到一個輸出 ,在對這個值 應用 softmax 激活函數,得到不同類別的概率分佈,讓模型找到輸出屬於某一個類別的概率