人工神經網路中的啟用函式型別
在這篇文章中,我們將學習關於 ANN 及其型別的知識。我們還將看到不同型別啟用函式的程式。在深入瞭解這些型別之前,讓我們先了解什麼是 ANN。
ANN
人工神經網路 (ANN) 是機器學習的一個分支,它透過構建生物神經網路的結構來執行計算,其中每個神經元都可以將訊號或處理後的資料傳輸到其他連線的神經元。這種結構類似於人腦,其中神經元彼此相互連線。當節點或神經元的連線形成連線時,就會建立神經網路。人工神經網路是一種類似於人類神經系統工作的模型。
ANN 有三個層
輸入層
在這一層,我們將資料作為輸入提供給神經網路。此層中的神經元數量與資料中的特徵數量相同。
隱藏層
這一層被稱為隱藏層,因為它是資料被處理的層,並且隱藏在輸入層之後。此層的輸出將傳遞到輸出層。
輸出層
這一層是網路產生輸出的地方。
每一層中的神經元都透過權重相互連線。在訓練過程中會調整權重,以便網路可以學習生成所需的輸出。
ANN 網路的表示 -
上圖表示神經網路,其中第一層是輸入層,我們向模型提供資料,並在處理後將其輸出轉發到隱藏層(位於輸入層之後)。隱藏層輸出的結果將作為輸出層輸出。每個神經元都有分配給它的權重,表示輸入值的強度。
ANN 中的啟用函式型別
ANN 中存在許多型別的啟用函式,但我們將重點介紹最常用的函式 -
Sigmoid 啟用函式
這種啟用函式是 ANN 中的非線性函式,用於將輸入資料對映到 0 到 1 之間的值,表示機率。這種啟用函式在二元分類問題中用作輸出層。
示例
import numpy as np
import matplotlib.pyplot as plt
def sigmoid_Activation_fun(inp):
return 1 / (1 + np.exp(-inp))
inp= np.linspace(-10, 10, 100)
# applying sigmoid function
out = sigmoid_Activation_fun(inp);
plt.plot(inp, out)
plt.xlabel('Input')
plt.ylabel('Output')
plt.title('Sigmoid Activation Function')
plt.show()
輸出
修正線性單元 (ReLU)
ReLu 在所有其他啟用函式中使用廣泛,它透過將負值對映為 0 並保持正值不變來引入非線性。它在訓練期間提供更快的學習速度,並避免梯度消失問題。與其他啟用函式(如 Tanh 和 sigmoid)相比,它提供了更好的效能。
示例
import numpy as np
import matplotlib.pyplot as plt
def relu_activation_fun(inp):
return np.maximum(0, inp)
inp = np.linspace(-10, 10, 100)
# Applying the ReLU
out = relu_activation_fun(inp)
plt.plot(inp, out)
plt.xlabel('Input')
plt.ylabel('Output')
plt.title('ReLU Activation Function')
plt.show()
輸出
雙曲正切 (Tanh)
雙曲正切函式,也稱為 tanh 函式,我們使用它與 sigmoid 函式相同,並將輸入值對映到 -1 到 1 的範圍內。這種啟用函式主要用於 ANN 的隱藏層。
示例
import numpy as np
import matplotlib.pyplot as plt
def Hyperbolic_tanh_fun(inp):
return np.tanh(inp)
inp = np.linspace(-10, 10, 100)
# Applying tanh activation function
out= Hyperbolic_tanh_fun(inp)
plt.plot(inp, out)
plt.xlabel('Input')
plt.ylabel('Output')
plt.title('Tanh Activation Function')
plt.show()
輸出
Leaky ReLU
這是 ReLU 函式的修改版本,其中 ReLU 將小值設定為 0,但此版本將允許小負值。此修改版本提高了神經網路的效能。
示例
import numpy as np
import matplotlib.pyplot as plt
def leaky_relu(inp, alpha=0.01):
return np.where(inp >= 0, inp, alpha * inp)
inp = np.linspace(-10, 10, 100)
# Applying leaky ReLU activation function
out = leaky_relu(inp)
plt.plot(inp, out)
plt.xlabel('Input')
plt.ylabel('Output')
plt.title('Leaky ReLU Activation Function')
plt.show()
輸出
Softmax 啟用函式
Softmax 啟用函式是一種啟用函式,我們使用它來計算機率分佈,並確保這些機率的總和為 1。這種啟用函式主要用於多類分類問題的輸出層。
示例
import numpy as np
import matplotlib.pyplot as plt
def softmax_activation_function(inp):
exps = np.exp(inp)
return exps / np.sum(exps)
inp = np.array([1, 2, 3, 4, 5])
# Applying softmax activation function
out = softmax_activation_function(inp)
plt.bar(range(len(inp)), out)
plt.xlabel('Class')
plt.ylabel('Probability')
plt.xticks(range(len(inp)))
plt.title('Softmax Activation Function')
plt.show()
輸出
我們通常根據要解決的問題和 ANN 的輸出選擇啟用函式。例如,tanh 和 sigmoid 函式通常用於分類問題,而 ReLU 函式通常用於迴歸問題。
結論
因此,我們瞭解了 ANN 及其型別。我們看到了 ANN 中各種型別的啟用函式,例如 sigmoid 函式、ReLU、tanh、Leaky ReLU 及其用法。為了適當地使用啟用函式,我們必須具備構建人工神經網路模型的知識。每個啟用函式都有其獨特的屬性、工作機制、行為和訓練過程。我們可以在我們的 ANN 任務中使用這些函式來增強模型。
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP