啟用功能
啟用函式也稱為傳遞函式,用於以某種方式將輸入節點對映到輸出節點。
它們用於賦予神經網路層的輸出非線性。
下面給出了一些常用函式及其曲線:
Sigmoid 功能
sigmoid 是一個壓扁函式,其輸出範圍為 [0, 1]
。
實現 sigmoid 及其衍生物與 numpy
的程式碼如下所示:
def sigmoid(z):
return 1.0 / (1.0 + np.exp(-z))
def sigmoid_prime(z):
return sigmoid(z) * (1 - sigmoid(z))
雙曲正切函式(tanh)
tanh 和 sigmoid 函式之間的基本區別是 tanh 為 0 居中,將輸入壓縮到範圍[-1,1]並且計算效率更高。
https://i.stack.imgur.com/MpzDY.jpg
你可以輕鬆使用 np.tanh
或 math.tanh
函式來計算隱藏層的啟用。
ReLU 功能
一個整流的線性單元簡單地說明了。它是神經網路單元啟用函式最常見的選擇之一。
ReLU 解決了 S 形/雙曲正切單元的消失梯度問題 ,從而允許在深度網路中進行有效的梯度傳播。
ReLU 這個名字來自 Nair 和 Hinton 的論文, 整流線性單元改進限制玻爾茲曼機器 。
它有一些變化,例如,洩漏的 ReLU(LReLU)
和指數線性單位(ELU)。
實現 vanilla ReLU 及其衍生產品 numpy
的程式碼如下所示:
def relU(z):
return z * (z > 0)
def relU_prime(z):
return z > 0