啟用功能

啟用函式也稱為傳遞函式,用於以某種方式將輸入節點對映到輸出節點。

它們用於賦予神經網路層的輸出非線性。

下面給出了一些常用函式及其曲線: StackOverflow 文件

Sigmoid 功能

sigmoid 是一個壓扁函式,其輸出範圍為 [0, 1]

StackOverflow 文件

實現 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.tanhmath.tanh 函式來計算隱藏層的啟用。

ReLU 功能

一個整流的線性單元簡單地說明了。它是神經網路單元啟用函式最常見的選擇之一。

StackOverflow 文件

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