快速學習一個算法,神經網絡
大家好,我是小寒。
今天給大家介紹一個超強的算法模型,神經網絡。
神經網絡是一種由大量簡單、相互連接的單元(稱為“神經元”)組成的計算模型,受到人腦結構的啟發。
每個神經元可以接收輸入,對其進行處理,并產生輸出。這些神經元通過稱為 “權重” 的參數相互連接,權重決定了一個神經元的輸出如何影響另一個神經元的激活狀態。
圖片
神經網絡的組成部分
神經元
神經元是神經網絡的基本單元,每個神經元接收輸入,對輸入進行加權求和,再通過一個激活函數生成輸出。
層
圖片
- 輸入層:是網絡接收外部數據的第一層,每個輸入代表不同的特征。
- 隱藏層:網絡中一個或多個中間層,這里進行數據的轉換和特征的抽象。
- 輸出層:網絡的最后一層,負責產生輸出,如分類的標簽或者回歸問題的數值預測。
權重和偏置
- 權重:連接網絡中神經元的參數,決定了輸入信號在網絡中傳遞的強度和影響。
- 偏置:一種特殊的權重,與每層的每個神經元關聯,可以調整激活函數的輸入,從而控制神經元的激活方式。
激活函數
- 激活函數為網絡引入非線性,使其能夠捕捉復雜的模式。
- 常見的激活函數包括 Sigmoid、Tanh、ReLU、Leaky ReLU和SELU。
優化器(Optimizer)
優化器用于更新網絡的權重和偏置,目的是減少預測輸出和實際輸出之間的誤差。
常用的優化算法包括梯度下降、隨機梯度下降(SGD)、Adam等。
損失函數(Loss Function)
損失函數衡量網絡預測結果與實際結果的差異,是訓練過程中優化的目標。
常見的損失函數有均方誤差(MSE)、交叉熵損失等。
建立你的第一個神經網絡
讓我們為一個非常基本的數據集創建一個簡單的神經網絡。
我們將使用 sklearn.datasets 的 make_classification 函數來生成合成的二元分類數據集。
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
import tensorflow as tf
from tensorflow.keras import layers, models
X, y = make_classification(n_samples=1000, n_features=2, n_classes=2, n_clusters_per_class=1, n_redundant=0, random_state=42)
接下來,將數據集拆分為訓練集和測試集。
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
然后我們定義一個神經網絡模型并訓練。
model = models.Sequential()
model.add(layers.Dense(units=1, activatinotallow='sigmoid', input_shape=(2,)))
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
history = model.fit(X_train, y_train, epochs=20, batch_size=32, validation_split=0.2)
最后,我們在測試集上評估模型。
test_loss, test_accuracy = model.evaluate(X_test, y_test)
print(f'Test Accuracy: {test_accuracy * 100:.2f}%')