自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

終于把神經(jīng)網(wǎng)絡(luò)算法搞懂了!

人工智能
神經(jīng)網(wǎng)絡(luò)算法是一種模擬人腦神經(jīng)元結(jié)構(gòu)和信息處理方式的機(jī)器學(xué)習(xí)模型,其核心思想是通過對輸入信息進(jìn)行分層處理,逐層提取數(shù)據(jù)特征,進(jìn)而完成分類、回歸等任務(wù)。

神經(jīng)網(wǎng)絡(luò)算法是一種模擬人腦神經(jīng)元結(jié)構(gòu)和信息處理方式的機(jī)器學(xué)習(xí)模型,其核心思想是通過對輸入信息進(jìn)行分層處理,逐層提取數(shù)據(jù)特征,進(jìn)而完成分類、回歸等任務(wù)。

神經(jīng)網(wǎng)絡(luò)算法作為深度學(xué)習(xí)的基礎(chǔ)模型之一,已經(jīng)在圖像識別、自然語言處理、時間序列預(yù)測等多個領(lǐng)域取得了顯著的成功。

神經(jīng)網(wǎng)絡(luò)算法的基本結(jié)構(gòu)

神經(jīng)網(wǎng)絡(luò)算法由輸入層、隱藏層和輸出層組成,每個層包含若干神經(jīng)元。

  • 輸入層
    輸入層負(fù)責(zé)接收輸入數(shù)據(jù),每個神經(jīng)元代表輸入數(shù)據(jù)的一個特征。
  • 隱藏層
    隱藏層位于輸入層和輸出層之間,用于對數(shù)據(jù)進(jìn)行復(fù)雜的非線性轉(zhuǎn)換。
    隱藏層的數(shù)量和神經(jīng)元的數(shù)量是網(wǎng)絡(luò)性能的重要參數(shù)。
  • 輸出層
    輸出層是神經(jīng)網(wǎng)絡(luò)的最后一層,它將隱藏層的計算結(jié)果轉(zhuǎn)換為最終的輸出。
    輸出層的神經(jīng)元數(shù)量取決于具體任務(wù)。對于分類問題,輸出層的神經(jīng)元數(shù)量通常等于類別數(shù);對于回歸問題,輸出層通常只有一個神經(jīng)元。

神經(jīng)元的工作原理

每個神經(jīng)元接收來自上一層的輸入值,這些輸入值與神經(jīng)元的權(quán)重相乘并累加得到一個加權(quán)和。然后,這個加權(quán)和通過一個非線性激活函數(shù)進(jìn)行處理,得到該神經(jīng)元的輸出。

神經(jīng)元的計算過程可以用以下公式表示:

其中, 是輸入, 是對應(yīng)的權(quán)重, 是偏置項(xiàng), 是加權(quán)和。

加權(quán)和經(jīng)過激活函數(shù)  后,得到神經(jīng)元的輸出:

激活函數(shù)

激活函數(shù)用于引入了非線性,從而讓神經(jīng)網(wǎng)絡(luò)能夠處理復(fù)雜的非線性關(guān)系。

常見的激活函數(shù)包括

  • Sigmoid
    輸出范圍為 0 到 1,常用于二分類問題。
  • Tanh
    輸出范圍為 ?1 到 1
  • ReLU
    輸出為正值時保持不變,負(fù)值時輸出為零。
    由于其計算簡單且效果較好,ReLU 是最常用的激活函數(shù)之一。
  • Softmax
    常用于多分類問題,用于計算每個類的概率分布。

神經(jīng)網(wǎng)絡(luò)的工作過程

神經(jīng)網(wǎng)絡(luò)的工作過程可以概括為以下幾個關(guān)鍵步驟:前向傳播、損失計算、反向傳播和權(quán)重更新。

通過這些步驟,神經(jīng)網(wǎng)絡(luò)從輸入數(shù)據(jù)中學(xué)習(xí),并調(diào)整權(quán)重以提高預(yù)測的準(zhǔn)確性。

接下來,我們逐步詳細(xì)解釋每一個過程。

前向傳播

前向傳播是神經(jīng)網(wǎng)絡(luò)的預(yù)測過程,即從輸入數(shù)據(jù)開始,一層一層地傳遞計算,最終得到輸出結(jié)果。

具體步驟

  • 輸入層
    將輸入數(shù)據(jù)直接傳遞給第一層的神經(jīng)元,每個輸入對應(yīng)一個神經(jīng)元。
  • 隱藏層計算
    對于每一層的神經(jīng)元,將上一層輸出的值與當(dāng)前層的權(quán)重 w 和偏置 b 進(jìn)行線性組合,然后應(yīng)用激活函數(shù)進(jìn)行非線性轉(zhuǎn)換。
    數(shù)學(xué)表達(dá)為:其中, 是第 l 層的線性組合結(jié)果, 是第 l 層的權(quán)重矩陣, 是上一層的輸出, 是偏置向量。
    接下來通過激活函數(shù)  進(jìn)行非線性變換

    這里  是第 l 層的輸出。
  • 輸出層計算
    當(dāng)傳遞到輸出層時,網(wǎng)絡(luò)的最終輸出  會根據(jù)設(shè)計的任務(wù)有所不同。

損失函數(shù)

損失函數(shù)用于衡量神經(jīng)網(wǎng)絡(luò)輸出(預(yù)測值)與實(shí)際目標(biāo)值之間的差異。不同任務(wù)通常使用不同的損失函數(shù)。

  • 對于回歸問題,常用的損失函數(shù)是均方誤差(MSE)其中, 是預(yù)測值, 是真實(shí)值, 是樣本數(shù)。
  • 對于分類問題,常用的損失函數(shù)是交叉熵?fù)p失(Cross-Entropy Loss)其中, 是真實(shí)標(biāo)簽(0或1), 是預(yù)測概率。

損失函數(shù)的輸出是一個標(biāo)量,它代表整個網(wǎng)絡(luò)對當(dāng)前數(shù)據(jù)集的預(yù)測誤差。

反向傳播

反向傳播用于計算損失函數(shù)對網(wǎng)絡(luò)中各個參數(shù)(權(quán)重和偏置)的梯度。

這個過程利用了鏈?zhǔn)椒▌t,將誤差從輸出層逐層傳播回去,從而更新每一層的參數(shù)。

反向傳播步驟

  1. 輸出層誤差
    首先計算輸出層的誤差,即損失函數(shù)對輸出層激活值的偏導(dǎo)數(shù)其中, 表示輸出層的誤差, 是激活函數(shù)的導(dǎo)數(shù)。
  2. 隱藏層誤差
    對于隱藏層的神經(jīng)元,誤差由上一層傳播過來,通過鏈?zhǔn)椒▌t計算。
    對于第 l 層,誤差為:這里, 是第  層的誤差, 是第  層的權(quán)重轉(zhuǎn)置矩陣, 是激活函數(shù)的導(dǎo)數(shù)。
  3. 梯度計算
    反向傳播中,我們計算每一層的權(quán)重和偏置的梯度
  • 權(quán)重梯度
  • 偏置梯度

權(quán)重更新

通過反向傳播計算得到每一層權(quán)重和偏置的梯度后,使用優(yōu)化算法來更新參數(shù)。

其更新公式如下

  • 權(quán)重更新
  • 偏置更新

其中, 是學(xué)習(xí)率,控制每次更新的步長。

案例分享

下面是一個使用神經(jīng)網(wǎng)絡(luò)對鳶尾花數(shù)據(jù)集進(jìn)行分類的示例代碼。

import numpy as np
import tensorflow as tf
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import OneHotEncoder
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import Adam

# 加載鳶尾花數(shù)據(jù)集
data = load_iris()
X = data.data
y = data.target.reshape(-1, 1)
encoder = OneHotEncoder()
y_onehot = encoder.fit_transform(y).toarray()
X_train, X_test, y_train, y_test = train_test_split(X, y_onehot, test_size=0.2, random_state=42)

# 構(gòu)建神經(jīng)網(wǎng)絡(luò)模型
model = Sequential([
    Dense(10, input_shape=(4,), activatinotallow='relu'),  # 輸入層,4個輸入特征,10個神經(jīng)元
    Dense(10, activatinotallow='relu'),                    # 隱藏層,10個神經(jīng)元
    Dense(3, activatinotallow='softmax')                   # 輸出層,3個輸出類別
])


model.compile(optimizer=Adam(learning_rate=0.01), loss='categorical_crossentropy', metrics=['accuracy'])
# 訓(xùn)練模型
model.fit(X_train, y_train, epochs=100, batch_size=10, verbose=1)
# 評估模型
loss, accuracy = model.evaluate(X_test, y_test, verbose=0)
print(f'Test Loss: {loss:.3f}, Test Accuracy: {accuracy:.3f}')


責(zé)任編輯:華軒 來源: 程序?qū)W員長
相關(guān)推薦

2024-09-12 08:28:32

2024-09-20 07:36:12

2024-10-28 00:38:10

2024-11-15 13:20:02

2025-02-21 08:29:07

2024-12-12 00:29:03

2024-10-05 23:00:35

2024-07-24 08:04:24

神經(jīng)網(wǎng)絡(luò)激活函數(shù)

2024-11-07 08:26:31

神經(jīng)網(wǎng)絡(luò)激活函數(shù)信號

2024-12-02 01:10:04

神經(jīng)網(wǎng)絡(luò)自然語言DNN

2024-09-26 07:39:46

2024-09-23 09:12:20

2024-10-16 07:58:48

2024-12-03 08:16:57

2024-07-17 09:32:19

2024-11-14 00:16:46

Seq2Seq算法RNN

2024-08-01 08:41:08

2024-10-08 15:09:17

2024-10-08 10:16:22

2024-10-30 08:23:07

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號