認識神經網絡和深度學習

什么是神經網絡?什么又是深度學習?二者有什么關系?……

帶著這些疑問,進入本文的學習。

什么是神經網絡

神經網絡(Neural Network)是一種模仿生物神經系統(如大腦神經元連接方式)設計的計算模型,通過多層 “人工神經元” 的互聯,實現對數據的非線性關系建模,是機器學習和人工智能的核心技術之一。其核心能力是從數據中自動學習規律(如分類、預測、特征提取),無需人工編寫具體規則。

一、神經網絡的基本結構

神經網絡由多個 “層” 組成,每層包含若干 “神經元”(Neuron),神經元之間通過 “權重”(Weight)連接,形成類似生物神經網絡的信號傳遞路徑。典型結構包括:

  • 輸入層(Input Layer) 接收原始數據(如圖片的像素值、文本的特征向量),神經元數量等于數據的特征維度(例如,一張 32×32 的彩色圖片有 32×32×3=3072 個像素,輸入層就有 3072 個神經元)。 注:輸入層僅傳遞數據,不進行計算。

  • 隱藏層(Hidden Layer) 位于輸入層和輸出層之間,是神經網絡的 “計算核心”,通過多層非線性變換提取數據的抽象特征(如從圖像的像素中學習邊緣、紋理,再到部件、物體)。

    • 隱藏層的數量和神經元數量決定了模型的復雜度:

      • 僅含 1 層隱藏層的是 “淺層神經網絡”(傳統機器學習范疇);

      • 含 2 層及以上隱藏層的是 “深層神經網絡”(即深度學習)。

  • 輸出層(Output Layer) 輸出模型的最終結果,神經元數量由任務類型決定:

    • 分類任務:等于類別數(如識別貓 / 狗 / 鳥,輸出層有 3 個神經元,分別對應三類的概率);

    • 回歸任務:通常只有 1 個神經元(如預測房價、溫度)。

二、核心原理:神經元的計算邏輯

單個神經元的工作原理模仿生物神經元的 “信號傳遞”:接收輸入信號,經過處理后輸出新信號。具體步驟為:

  • 加權求和:將輸入數據與連接權重相乘后累加,再加上一個 “偏置項”(Bias,類似線性方程中的常數項),公式為: \(z = w_1x_1 + w_2x_2 + ... + w_nx_n + b\) (\(x_1...x_n\)為輸入,\(w_1...w_n\)為權重,b為偏置,z為中間結果)

  • 激活函數(Activation Function):對中間結果z進行非線性變換,使神經網絡能擬合復雜的非線性關系(否則多層網絡等價于單層線性模型)。常見激活函數:

    • Sigmoid:將輸出壓縮到 (0,1),適用于二分類;

    • ReLU:\(f(z) = max(0, z)\),解決梯度消失問題,廣泛用于深層網絡;

    • Softmax:將輸出轉化為概率分布,適用于多分類。

三、訓練過程:通過 “反向傳播” 優化參數

神經網絡的 “學習” 本質是調整權重和偏置,使模型輸出盡可能接近真實結果(如預測值接近實際值)。核心方法是反向傳播算法(Backpropagation):

  1. 前向傳播:輸入數據從輸入層流向輸出層,計算模型的預測結果。

  2. 計算損失:用 “損失函數”(如均方誤差、交叉熵)衡量預測結果與真實結果的差距。

  3. 反向傳播:根據損失值,從輸出層反向計算各層權重對損失的影響(梯度),并通過 “梯度下降” 算法調整權重和偏置,減小損失。

  4. 迭代優化:重復前向傳播→計算損失→反向傳播的過程,直到損失足夠小(模型收斂)。

四、神經網絡的類型與應用

根據結構和任務,神經網絡衍生出多種模型,典型包括:

  • 多層感知器(MLP):全連接結構,適用于簡單分類 / 回歸(如鳶尾花分類、房價預測)。

  • 卷積神經網絡(CNN):含卷積層,擅長處理網格數據(如圖像、視頻),應用于人臉識別、圖像分割。

  • 循環神經網絡(RNN):含循環連接,適合序列數據(如文本、語音),應用于機器翻譯、語音識別。

  • Transformer:基于自注意力機制,是當前自然語言處理(如 ChatGPT)和計算機視覺的主流模型。

五、核心優勢與局限

  • 優勢:

    • 強大的非線性擬合能力,可處理復雜數據(如圖像、文本);

    • 自動學習特征,無需人工設計(尤其深層網絡)。

  • 局限:

    • 依賴大量數據和計算資源(深層網絡訓練成本高);

    • 決策過程 “黑箱化”,難以解釋(如模型為何將某張圖片判定為 “貓”)。

總結

神經網絡是一種通過多層神經元互聯實現數據建模的計算模型,核心是通過反向傳播優化參數,從數據中自動學習規律。從淺層的簡單模型到深層的復雜架構(如深度學習),神經網絡已成為 AI 領域的基礎工具,推動了圖像識別、自然語言處理等眾多任務的突破。

什么是深度學習

深度學習(Deep Learning)是機器學習的一個分支,核心是通過深層神經網絡(通常含 2 層及以上隱藏層)自動從數據中學習特征和規律,實現對復雜任務的建模。它的 “深度” 體現在模型結構的層級深度,能夠逐層提取數據的抽象特征,從而解決傳統機器學習難以處理的復雜問題(如圖像、語音、自然語言等)。

一、深度學習的核心特征

  • 深層神經網絡結構 與傳統機器學習中的淺層模型(如 1 層隱藏層的神經網絡)不同,深度學習模型包含多層隱藏層(通常數十至數千層),通過層級化的特征提取,將原始數據(如像素、聲波)逐步轉化為高層抽象特征(如 “圖像中的物體”“語音中的語義”)。

    • 例如:識別一張貓的圖片時,第一層可能學習邊緣和顏色,第二層學習紋理和局部輪廓,第三層學習耳朵、眼睛等部件,最終層識別 “貓” 這一整體概念。

  • 端到端學習(End-to-End Learning) 無需人工設計特征,直接從原始數據(如圖像的像素值、文本的字符序列)到輸出結果(如 “貓”“正面情緒”)完成建模。傳統機器學習需要人工提取特征(如手動定義圖像的邊緣、紋理特征),而深度學習將特征提取和模型訓練合并為一個過程,極大簡化了流程。

  • 依賴大規模數據與算力

    • 深層網絡參數規模龐大(通常數百萬至數十億參數),需要海量標注數據(如百萬級圖像、億級文本)才能避免過擬合。

    • 訓練過程計算量極大,依賴 GPU/TPU 等專用硬件加速(普通 CPU 難以勝任)。

二、深度學習的關鍵技術基礎

  • 反向傳播算法(Backpropagation) 用于計算神經網絡中各層參數對損失的影響(梯度),并通過梯度下降優化參數,是訓練深層網絡的核心工具。

  • 激活函數的改進 早期的 Sigmoid 函數容易導致 “梯度消失”(深層網絡中梯度傳遞到淺層時趨近于 0,無法有效更新參數),而ReLU(Rectified Linear Unit) 等激活函數的出現解決了這一問題,使深層網絡的訓練成為可能。

  • 正則化與優化技術

    • dropout(隨機丟棄部分神經元以防止過擬合)、批歸一化(加速訓練并穩定梯度)等技術,提升了深層網絡的泛化能力。

    • 自適應優化器(如 Adam、RMSprop)替代傳統梯度下降,使復雜模型的訓練更高效。

三、深度學習的典型模型與應用

  • 卷積神經網絡(CNN)

    • 結構特點:含卷積層、池化層,擅長處理網格數據(如圖像、視頻),通過局部感受野和權值共享減少參數。

    • 應用:圖像分類(如 ResNet 識別 ImageNet 數據集)、目標檢測(如 YOLO)、人臉識別、醫學影像分析(如腫瘤檢測)。

  • 循環神經網絡(RNN)及變體

    • 結構特點:含循環連接,能處理序列數據(如文本、語音、時間序列),記憶歷史信息。

    • 變體:LSTM(長短期記憶網絡)、GRU(門控循環單元),解決了 RNN 的 “長程依賴” 問題(如長句子中前后文的關聯)。

    • 應用:機器翻譯、語音識別、情感分析、股票預測。

  • Transformer 與注意力機制

    • 結構特點:基于自注意力機制(Self-Attention),能直接捕捉序列中任意位置的關聯,并行計算能力遠超 RNN。

    • 應用:自然語言處理(如 BERT、GPT 系列大模型)、機器翻譯、圖像生成(如 Vision Transformer),是當前 AI 領域的主流架構(如 ChatGPT 的核心是 Transformer)。

  • 生成式模型

    • 代表模型:生成對抗網絡(GAN)、變分自編碼器(VAE)、擴散模型(如 Stable Diffusion)。

    • 應用:生成逼真圖像(如 AI 繪畫)、文本生成(如小說續寫)、數據增強(擴充訓練樣本)。

四、深度學習的優勢與局限

  • 優勢:

    • 強大的特征學習能力:無需人工設計特征,適合處理高維、非結構化數據(如圖像、語音)。

    • 泛化能力強:在大規模數據上訓練的模型可遷移到多個任務(如預訓練模型 BERT 可微調用于分類、翻譯等)。

    • 推動 AI 突破:實現了傳統方法難以企及的精度(如 ImageNet 圖像分類錯誤率從 26% 降至 3% 以下)。

  • 局限:

    • 數據依賴:需要海量標注數據,小樣本場景表現差。

    • 計算成本高:訓練深層網絡需 GPU/TPU 集群,耗時且耗能(如訓練一個大語言模型可能消耗數萬度電)。

    • 可解釋性差:模型決策過程 “黑箱化”(如無法明確說明 AI 為何判定某段文本為 “惡意”)。

    • 過擬合風險:復雜模型易記住訓練數據中的噪聲,需依賴正則化技術緩解。

五、深度學習的發展與影響

深度學習的興起以 2006 年 Hinton 等人提出 “深度置信網絡” 和 2012 年 AlexNet 在 ImageNet 競賽中奪冠為標志,此后迅速成為 AI 領域的核心技術。它推動了計算機視覺、自然語言處理、語音識別等領域的革命性突破,催生了自動駕駛、智能助手(如 Siri)、AI 繪畫、大語言模型(如 GPT、LLM)等應用,深刻改變了科技和產業格局。

總結

深度學習是基于深層神經網絡的機器學習方法,通過層級化特征提取和端到端學習,解決復雜的非結構化數據問題。它依賴大規模數據和算力,在圖像、語音、文本等領域表現卓越,是當前人工智能發展的核心驅動力。

接下來熟悉下主要的模型,注意,這里是模型,是理論基礎,并不是具體的實現框架,不要搞混了。

多層感知器(MLP)

可以理解成就是上面說的神經網絡。

適用于簡單分類 / 回歸(如鳶尾花分類、房價預測)。

多層感知器(Multilayer Perceptron,簡稱 MLP)是一種基礎的人工神經網絡(ANN) 模型,屬于深度學習的入門結構。它通過模擬人腦神經元的連接方式,實現對復雜非線性關系的建模,廣泛應用于分類、回歸等任務。

多層感知器是深度學習的基礎模型,通過多層神經元的全連接和非線性變換,實現對復雜數據的建模。其核心是反向傳播算法,通過迭代優化參數最小化損失。盡管在處理結構化數據(如圖像、文本)時被 CNN、RNN 等專用模型超越,但 MLP 仍是理解神經網絡原理的關鍵,且在傳統機器學習任務中仍有廣泛應用。

卷積神經網絡(CNN)

含卷積層,擅長處理網格數據(如圖像、視頻),應用于人臉識別、圖像分割。

卷積神經網絡(Convolutional Neural Network,簡稱 CNN)是一種受生物視覺系統啟發設計的深度學習模型,特別擅長處理網格結構數據(如圖像、視頻、音頻 spectrogram 等)。其核心優勢在于通過 “局部感知” 和 “權值共享” 大幅減少參數數量,同時能有效捕捉數據中的空間相關性(如圖像的局部特征),因此在計算機視覺領域占據主導地位。

一、CNN 的核心設計思想

CNN 的結構突破了傳統神經網絡(全連接網絡)的局限 —— 全連接網絡中每個神經元與前一層所有神經元連接,參數隨輸入維度(如圖像像素)呈平方級增長(例如 224×224 的圖像輸入到全連接層,僅第一層就有百萬級參數),而 CNN 通過以下機制解決這一問題:

  1. 局部感受野(Local Receptive Field) 模擬人類視覺系統中 “神經元只響應局部區域刺激” 的特性:每個神經元僅與輸入數據中一個局部區域(而非全部)連接。例如處理圖像時,一個神經元可能只關注 3×3 或 5×5 的像素塊,而非整幅圖像。

  2. 權值共享(Weight Sharing) 同一層中,處理不同局部區域的神經元使用相同的權重參數。例如用 3×3 的 “卷積核”(參數矩陣)滑動掃描整幅圖像,所有位置的卷積操作共享這組參數,極大減少了參數總量。

二、CNN 的核心層結構

一個典型的 CNN 由多個層級交替堆疊而成,核心層包括:

1. 卷積層(Convolutional Layer)

  • 作用:提取輸入數據的局部特征(如邊緣、紋理、形狀等)。

  • 原理:通過多個 “卷積核”(Kernels,也稱濾波器 Filter)對輸入進行滑動卷積計算。每個卷積核對應一種特征模式,例如一個卷積核檢測水平邊緣,另一個檢測垂直邊緣。

  • 計算示例: 對 5×5 的輸入圖像,用 3×3 的卷積核滑動(步長為 1),每次與局部區域做 element-wise 乘法后求和,得到 3×3 的輸出特征圖(Feature Map)。

  • 關鍵參數:

    • 卷積核數量(決定輸出特征圖的通道數);

    • 卷積核大小(如 3×3、5×5);

    • 步長(Stride,每次滑動的距離);

    • 填充(Padding,在輸入邊緣補 0,避免輸出尺寸縮小)。

2. 池化層(Pooling Layer)

  • 作用:對特征圖進行降采樣(減小尺寸),減少參數和計算量,同時增強模型對輸入微小變化的魯棒性(如平移、縮放)。

  • 常見類型:

    • 最大池化(Max Pooling):取局部區域的最大值(如 2×2 區域中保留最大像素值);

    • 平均池化(Average Pooling):取局部區域的平均值。

  • 示例:對 4×4 的特征圖用 2×2 的最大池化(步長 2),輸出 2×2 的特征圖。

3. 激活層(Activation Layer)

  • 作用:為網絡引入非線性,使模型能擬合復雜函數關系(否則多層線性操作等價于單層線性操作,無法學習復雜特征)。

  • 常用激活函數:ReLU(Rectified Linear Unit,f (x)=max (0,x)),解決了早期 Sigmoid 函數的梯度消失問題。

4. 全連接層(Fully Connected Layer)

  • 作用:將卷積層提取的局部特征整合為全局特征,用于最終的分類、回歸等任務。

  • 結構:與傳統神經網絡類似,每個神經元與前一層所有神經元連接,輸出最終結果(如 “貓”“狗” 的概率)。

5. 其他輔助層

  • 批歸一化層(Batch Normalization):標準化每批數據的分布,加速訓練收斂,緩解過擬合;

  • Dropout 層:隨機丟棄部分神經元,防止模型過度依賴某些特征,增強泛化能力。

三、典型 CNN 模型架構

  1. LeNet-5(1998) 最早的 CNN 之一,用于手寫數字識別(MNIST 數據集),結構簡單:2 層卷積 + 2 層池化 + 2 層全連接。

  2. AlexNet(2012) 深度學習爆發的里程碑模型,在 ImageNet 圖像分類競賽中錯誤率遠低于傳統方法。采用 8 層結構(5 層卷積 + 3 層全連接),首次使用 ReLU 激活函數和 GPU 加速訓練。

  3. VGGNet(2014) 以 “僅用 3×3 卷積核” 為特點,通過堆疊多個小卷積核替代大卷積核(如 2 個 3×3 卷積等價于 1 個 5×5 卷積,但參數更少),加深了網絡深度(如 VGG16 含 16 層可訓練參數層)。

  4. ResNet(2015) 引入 “殘差連接(Residual Connection)”,解決了深層網絡的 “梯度消失” 和 “性能退化” 問題,使網絡可訓練到數百甚至上千層(如 ResNet50、ResNet152),成為后續 CNN 設計的基礎。

  5. GoogLeNet(Inception) 通過 “多尺度卷積并行”(同時用 1×1、3×3、5×5 卷積核提取特征),在減少參數的同時提升特征表達能力。

四、CNN 的應用場景

  • 計算機視覺

    • 圖像分類(如 ResNet 識別 1000 類物體);

    • 目標檢測(如 YOLO、Faster R-CNN 定位圖像中的多個物體);

    • 圖像分割(如 U-Net 將圖像像素分類為 “背景”“汽車”“行人” 等);

    • 人臉識別、醫學影像分析(如 CT/MRI 腫瘤檢測)。

  • 其他領域

    • 視頻分析(如動作識別、視頻追蹤);

    • 音頻處理(將語音轉換為頻譜圖后,用 CNN 識別語音指令);

    • 文本分類(將文本的詞向量矩陣視為 “圖像”,用 CNN 提取局部語義特征)。

總結

卷積神經網絡通過局部感受野、權值共享和層級特征提取,高效處理網格數據,尤其在計算機視覺領域不可替代。從早期的 LeNet 到深層的 ResNet,其結構不斷優化,推動了 AI 在圖像、視頻等任務中的精度突破,是深度學習中最具影響力的模型之一。

注意:

卷積神經網絡仍然有輸入層、隱藏層和輸出層的概念。

卷積神經網絡通常由輸入層接收數據,比如圖像數據等。隱藏層則包含卷積層、池化層、激活層和全連接層等,其中卷積層用于提取特征,池化層用于降采樣,激活層用于引入非線性,全連接層用于整合特征。最后通過輸出層產生結果,如分類任務中輸出各類別的概率等。

CNN的參數學習到底是在哪一層學習

在卷積神經網絡(CNN)中,參數學習主要發生在包含可訓練參數的層,即卷積層(Conv2D)全連接層(Dense)批歸一化層(BatchNormalization)。這些層的參數通過反向傳播算法和優化器(如 SGD、Adam)在訓練過程中不斷更新。

1. 各層參數學習情況

層類型是否學習參數參數作用
卷積層(Conv2D)? 是學習卷積核權重和偏置,用于提取圖像特征(如邊緣、紋理)。
全連接層(Dense)? 是學習特征之間的非線性組合關系,用于分類或回歸。
批歸一化層(BatchNormalization)? 是學習縮放因子(γ)和偏移量(β),用于加速訓練和提高穩定性。
池化層(MaxPooling2D)? 否無學習參數,僅執行固定的下采樣操作(如取最大值)。
激活層(ReLU)? 否無學習參數,僅執行固定的非線性變換(如?max(0, x))。
Flatten 層? 否無學習參數,僅將多維張量展平為一維向量。

2. 卷積層(Conv2D)的參數學習

核心參數

  • 卷積核權重:每個卷積核是一個小矩陣(如 3×3),用于提取特定特征。
  • 偏置項:每個卷積核對應一個偏置值,用于調整激活函數的閾值。

示例

# 卷積層:32個卷積核,每個核大小3×3,輸入通道數為3
layers.Conv2D(32, (3, 3), activation='relu', input_shape=(224, 224, 3))# 參數數量計算:
# 權重 = 3×3(核大小)×3(輸入通道數)×32(輸出通道數) = 864
# 偏置 = 32(每個卷積核一個偏置)
# 總參數 = 864 + 32 = 896

學習過程

通過反向傳播,模型根據損失函數的梯度調整卷積核權重,使其學會識別特定特征(如垂直邊緣、紋理)。

3. 全連接層(Dense)的參數學習

核心參數

  • 權重矩陣:連接前一層的所有神經元與當前層的神經元。
  • 偏置向量:每個神經元對應一個偏置值。

示例

# 全連接層:輸入維度12544,輸出維度128
layers.Dense(128, activation='relu')# 參數數量計算:
# 權重 = 12544(輸入維度)×128(輸出維度) = 1,605,632
# 偏置 = 128(每個神經元一個偏置)
# 總參數 = 1,605,632 + 128 = 1,605,760

學習過程

全連接層將卷積層提取的特征(如 “邊緣”“紋理”)組合為更高層次的抽象表示(如 “貓”“狗”)。

4. 批歸一化層(BatchNormalization)的參數學習

核心參數

  • 縮放因子(γ):對歸一化后的數據進行縮放。
  • 偏移量(β):對歸一化后的數據進行偏移。

示例

layers.BatchNormalization()# 參數數量:
# 對于通道數為 C 的輸入,參數為 2C(γ 和 β 各 C 個值)

學習過程

通過學習最優的縮放和偏移參數,批歸一化層使網絡對輸入分布的變化更魯棒,加速收斂。

5. 無參數層的作用

雖然池化層、激活層等不參與參數學習,但它們對模型性能至關重要:

  • 池化層:降低特征圖維度,增強特征的平移不變性。
  • 激活層:引入非線性,使網絡能夠學習復雜函數。
  • Flatten 層:將多維特征轉換為一維向量,連接卷積層與全連接層。

6. 參數數量對比

以經典的 VGG16 模型為例:

層類型參數占比說明
卷積層~10%參數集中在早期卷積層(如第一層 150K 參數)。
全連接層~90%最后三個全連接層占總參數的絕大部分(如 1.34 億參數)。
批歸一化層極少僅在部分網絡中使用,參數占比可忽略。

總結

CNN 的參數學習主要發生在卷積層全連接層

  • 卷積層:學習圖像的局部特征(如邊緣、紋理)。
  • 全連接層:將局部特征整合為全局表示,用于最終分類或回歸。

其他層(如池化、激活、Flatten)雖無學習參數,但通過固定操作增強模型的表達能力和效率。理解各層的作用和參數分布,有助于設計高效的 CNN 架構(如減少全連接層參數以降低過擬合風險)。

循環神經網絡(RNN)

含循環連接,適合序列數據(如文本、語音),應用于機器翻譯、語音識別。

循環神經網絡(Recurrent Neural Network,簡稱 RNN)是一種專門處理序列數據的深度學習模型,其核心特點是能通過 “記憶” 機制捕捉序列中前后元素的依賴關系(如文本中的上下文、時間序列中的歷史趨勢)。與卷積神經網絡(CNN)擅長處理網格數據(如圖像)不同,RNN 更適合處理具有時序或順序特性的數據(如文本、語音、股票價格、視頻幀等)。

一、RNN 的核心設計思想

傳統的前饋神經網絡(如全連接網絡、CNN)的輸入是獨立的,無法處理 “序列順序” 信息(例如一句話中 “我吃蘋果” 和 “蘋果吃我” 的語義差異)。而 RNN 通過以下機制解決這一問題:

  • 循環連接與記憶性:網絡中存在循環結構,即隱藏層的輸出會被 “反饋” 到自身作為下一時刻的輸入。這種設計讓網絡能 “記住” 之前的信息,并將其用于當前時刻的計算。 簡單來說,處理序列的第t個元素時,RNN 不僅會考慮當前輸入x_t,還會結合上一時刻的 “記憶狀態”h_{t-1},從而捕捉序列的時序依賴。

二、RNN 的基本結構

一個基礎的 RNN 單元(Cell)由輸入、隱藏狀態和輸出三部分組成,結構如下:

三、RNN 的局限性:梯度消失與梯度爆炸

基礎 RNN 雖然能處理序列數據,但在長序列(如長句子、長時間序列)中存在嚴重缺陷:

  • 梯度消失:當序列過長時,反向傳播計算梯度時,早期時刻的梯度會因多次乘法操作逐漸趨近于 0,導致網絡無法 “記住” 遙遠的歷史信息(例如一句話的開頭和結尾存在語義關聯,但 RNN 可能遺忘開頭內容)。

  • 梯度爆炸:與梯度消失相反,部分情況下梯度會因多次乘法急劇增大,導致模型參數更新不穩定。

這些問題使得基礎 RNN 難以處理長序列依賴,因此研究者提出了多種改進版本,其中最著名的是LSTM和GRU。

四、RNN 的改進模型

1. 長短期記憶網絡(LSTM,Long Short-Term Memory)

LSTM 通過設計更復雜的 “記憶單元”(Cell)解決梯度消失問題,核心是引入三個 “門控機制” 控制信息的流入、流出和保留:

  • 遺忘門(Forget Gate):決定哪些歷史記憶(來自上一時刻的細胞狀態)需要被 “遺忘”;

  • 輸入門(Input Gate):決定當前輸入的信息中哪些需要被 “存入” 記憶;

  • 輸出門(Output Gate):決定當前記憶中哪些信息需要被輸出作為隱藏狀態。

通過門控機制,LSTM 能有效保留長序列中的關鍵信息(例如一篇文章中開頭提到的 “主角”,在結尾處仍能被模型關聯),成為處理長序列的主流模型。

2. 門控循環單元(GRU,Gated Recurrent Unit)

GRU 是 LSTM 的簡化版本,合并了部分門控機制,用更少的參數實現類似的效果:

  • 取消了 LSTM 中的 “細胞狀態”,僅保留隱藏狀態;

  • 將 “遺忘門” 和 “輸入門” 合并為 “更新門”,同時新增 “重置門” 控制歷史信息的使用。

GRU 計算效率更高,在許多任務(如文本分類、機器翻譯)中性能接近 LSTM,因此也被廣泛使用。

五、RNN 的應用場景

RNN 及其改進模型(LSTM、GRU)因擅長處理序列數據,在多個領域有重要應用:

  • 自然語言處理(NLP)

    • 文本生成(如寫詩、小說續寫、機器翻譯);

    • 情感分析(根據句子序列判斷情感傾向,如 “正面”“負面”);

    • 命名實體識別(從文本中提取 “人名”“地名” 等序列標簽);

    • 語言模型(預測下一個詞的概率,如輸入法聯想功能)。

  • 時間序列預測

    • 股票價格、氣象數據(如溫度、降雨量)的未來趨勢預測;

    • 設備故障預警(通過歷史運行數據序列預測異常)。

  • 語音處理

    • 語音識別(將語音信號序列轉換為文本序列);

    • 語音合成(將文本序列轉換為語音信號)。

  • 視頻分析

    • 動作識別(分析視頻幀序列中的人體動作);

    • 視頻描述生成(為連續視頻幀生成文字描述)。

總結

循環神經網絡通過循環連接實現對序列數據的 “記憶” 能力,解決了傳統神經網絡無法處理時序依賴的問題。盡管基礎 RNN 存在梯度消失等局限,但 LSTM 和 GRU 等改進模型通過門控機制有效克服了這些缺陷,成為處理文本、語音、時間序列等任務的核心工具,是深度學習中與 CNN 并列的重要模型家族。

Transformer

基于自注意力機制,是當前自然語言處理(如 ChatGPT)和計算機視覺的主流模型。

Transformer 是一種基于自注意力機制(Self-Attention) 的深度學習模型,由 Google 團隊在 2017 年的論文《Attention Is All You Need》中提出。它徹底擺脫了循環神經網絡(RNN)和卷積神經網絡(CNN)對序列處理的依賴,通過并行計算和全局依賴捕捉能力,在自然語言處理(NLP)等領域引發了革命性突破(如 BERT、GPT 等大模型均基于 Transformer 架構)。

一、Transformer 的核心設計動機

傳統處理序列數據的模型(如 RNN、LSTM)存在兩大缺陷:

  1. 時序依賴導致的并行性差:RNN 需按順序處理序列(前一時刻輸出作為后一時刻輸入),無法并行計算,效率低;

  2. 長距離依賴捕捉能力弱:即使是 LSTM/GRU,對超長序列(如長文本)中遠距離元素的關聯(如 “前文提到的人物與后文事件”)捕捉仍不理想。

Transformer 則通過自注意力機制解決上述問題:

  • 并行計算:無需按順序處理序列,可同時對所有元素進行計算,大幅提升訓練效率;

  • 全局依賴:直接計算序列中任意兩個元素的關聯,無論距離遠近,均能捕捉依賴關系。

二、Transformer 的整體結構

Transformer 是一個編碼器 - 解碼器(Encoder-Decoder)架構,主要用于序列到序列(Sequence-to-Sequence)任務(如機器翻譯:將 “中文序列” 轉換為 “英文序列”)。結構如下:

輸入序列 → 編碼器(Encoder)→ 上下文向量 → 解碼器(Decoder)→ 輸出序列

編碼器(Encoder)

由 N 個相同的編碼器層 堆疊而成(論文中 N=6),每個編碼器層包含兩部分:

  • 自注意力層(Multi-Head Self-Attention):計算輸入序列中所有元素的相互依賴關系(如一句話中 “詞與詞” 的關聯);

  • 前饋神經網絡(Feed Forward Network):對每個元素進行獨立的非線性變換(提升模型擬合能力)。

此外,每層還包含 殘差連接(Residual Connection) 和 層歸一化(Layer Normalization),用于緩解梯度消失、加速訓練。

解碼器(Decoder)

同樣由 N 個相同的解碼器層 堆疊而成(N=6),每個解碼器層包含三部分:

  • 掩碼自注意力層(Masked Multi-Head Self-Attention):確保解碼時只能依賴 “已生成的序列”(如翻譯時,生成第 t 個詞只能用前 t-1 個詞的信息,避免 “偷看” 未來內容);

  • 編碼器 - 解碼器注意力層(Encoder-Decoder Attention):讓解碼器關注編碼器輸出的 “上下文向量”(如翻譯時,英文詞需關聯對應的中文詞);

  • 前饋神經網絡:與編碼器中的結構相同。

三、核心機制:自注意力(Self-Attention)

自注意力是 Transformer 的 “靈魂”,其作用是:對序列中每個元素,計算它與其他所有元素的 “關聯強度”(注意力權重),再按權重聚合其他元素的信息,得到該元素的 “上下文表示”。

計算步驟(以 “多頭注意力” 為例)

四、Transformer 的優勢

  1. 并行性強:無需按順序處理序列,所有元素可同時計算,訓練速度遠超 RNN;

  2. 全局依賴捕捉:直接計算任意元素的關聯,長文本中遠距離依賴(如 “前文主語與后文賓語”)捕捉更準確;

  3. 靈活性高:不僅適用于 NLP(翻譯、文本生成),還可擴展到圖像(ViT 模型)、語音、視頻等領域。

五、應用場景

Transformer 是目前主流大模型的基礎架構,應用極其廣泛:

  • 自然語言處理:機器翻譯(如 Google Translate)、文本生成(GPT 系列)、問答系統(BERT)、情感分析、摘要生成等;

  • 計算機視覺:圖像分類(ViT)、目標檢測、圖像生成(如 DALL?E);

  • 多模態任務:圖文檢索、視頻描述生成、語音轉文本等;

  • 推薦系統:捕捉用戶行為序列與物品的關聯,提升推薦精度。

總結

Transformer 以自注意力機制為核心,通過并行計算和全局依賴捕捉能力,徹底改變了序列數據的處理方式。它不僅是現代 NLP 的基石,還在多模態領域持續拓展,成為深度學習中最重要的模型架構之一。其設計思想(如注意力機制)也深刻影響了后續 AI 模型的發展。

常用實現框架

以下是市面上主流的深度學習 Python 框架,均支持卷積神經網絡(CNN)、循環神經網絡(RNN)及 Transformer 架構,并各有特點和適用場景:

PyTorch

  • 特點:動態計算圖(代碼即模型)、API 靈活、學術圈主流,適合快速迭代和研究。

  • 支持方式:

    • CNN:torch.nn.Conv2dtorch.nn.MaxPool2d等內置層;

    • RNN:torch.nn.LSTMtorch.nn.GRU等原生支持;

    • Transformer:torch.nn.Transformer模塊及預訓練模型(如 Hugging Face 的 Transformers 庫)。

  • 應用案例:OpenAI 的 GPT 系列、Meta 的 FAIR 模型均基于 PyTorch 開發。

TensorFlow/Keras

  • 特點:靜態計算圖(高效部署)、Keras 高層 API 簡化開發、工業界主流,適合生產環境。

  • 支持方式:

    • CNN:tf.keras.layers.Conv2Dtf.keras.layers.MaxPooling2D

    • RNN:tf.keras.layers.LSTMtf.keras.layers.GRU

    • Transformer:官方示例及 Hugging Face 的集成支持。

  • 擴展工具:TensorFlow Serving(模型部署)、TensorFlow Lite(移動端)。

JAX + Flax/Haiku

  • 特點:基于 NumPy 的自動微分,支持 GPU/TPU 加速,適合高性能計算和自定義模型。

  • 支持方式:

    • CNN/RNN:需手動實現或使用 Flax/Haiku 等庫封裝;

    • Transformer:通過 Flax 的nn.attention模塊實現。

  • 優勢:JIT 編譯和向量化優化,適合研究前沿算法(如強化學習)。

MXNet

  • 特點:混合靜態 / 動態計算圖,支持多語言(Python、Scala 等),適合分布式訓練。

  • 支持方式:

    • CNN:mxnet.gluon.nn.Conv2D

    • RNN:mxnet.gluon.rnn.LSTM

    • Transformer:需手動實現或使用 GluonNLP 庫。

  • 應用:AWS SageMaker 默認支持 MXNet。

FastAI

  • 特點:基于 PyTorch 的高層 API,簡化深度學習流程,適合快速上手。

  • 支持方式:

    • CNN:cnn_learner直接調用預訓練模型(如 ResNet);

    • RNN:文本處理模塊(如 AWD-LSTM);

    • Transformer:通過 Hugging Face 集成支持(如language_model_learner)。

PaddlePaddle(飛槳)

  • 特點:百度開源框架,中文文檔完善,支持移動端和國產化硬件(如昇騰)。

  • 支持方式:

    • CNN:paddle.nn.Conv2D

    • RNN:paddle.nn.LSTM

    • Transformer:paddle.nn.Transformer模塊及 ERNIE 等預訓練模型。

DeepSpeed

  • 特點:微軟開發的模型并行訓練庫,專注于超大規模模型(如千億參數)。

  • 支持方式:

    • 與 PyTorch/TensorFlow 集成,優化 CNN/RNN/Transformer 的訓練效率。

  • 應用:訓練 GPT-3 級別的大模型。

框架選擇建議

場景推薦框架
學術研究、快速迭代PyTorch
工業部署、生產環境TensorFlow/Keras
高性能計算、自定義模型JAX + Flax
中文支持、國產化需求PaddlePaddle
大規模模型訓練DeepSpeed + PyTorch
快速上手FastAI

補充工具

  • Hugging Face Transformers:統一接口調用各類預訓練模型(BERT、GPT 等),支持所有主流框架。

  • ONNX:模型格式轉換工具,可在不同框架間遷移(如 PyTorch → TensorRT)。

  • TensorRT:NVIDIA 的高性能推理優化工具,加速部署 CNN 模型。

選擇時需根據團隊熟悉度、性能需求、部署環境等綜合考慮,大多數框架均可無縫實現三大主流架構。

TensorFlow實現CNN示例

在 TensorFlow 中實現 CNN 時,既可以直接調用高級 API(如 Keras 的Conv2DMaxPooling2D層)快速搭建,也可以自定義底層過程(如手動實現卷積運算)。通常推薦使用高級 API,因為它簡潔且高效。

下面是一個使用 TensorFlow/Keras API 實現 CNN(手寫數字識別)的完整示例:

import tensorflow as tf
from tensorflow.keras import layers, models
from tensorflow.keras.datasets import mnist
from tensorflow.keras.utils import to_categorical# 加載MNIST數據集
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()# 數據預處理
train_images = train_images.reshape((60000, 28, 28, 1)).astype('float32') / 255
test_images = test_images.reshape((10000, 28, 28, 1)).astype('float32') / 255
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)# 構建CNN模型
model = models.Sequential()
# 第一個卷積層:32個3x3卷積核,激活函數ReLU
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
# 第一個池化層:2x2最大池化
model.add(layers.MaxPooling2D((2, 2)))
# 第二個卷積層:64個3x3卷積核
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
# 第二個池化層
model.add(layers.MaxPooling2D((2, 2)))
# 第三個卷積層
model.add(layers.Conv2D(64, (3, 3), activation='relu'))# 全連接分類器
model.add(layers.Flatten())  # 將3D特征展平為1D
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10, activation='softmax'))  # 10個輸出類別(0-9)# 模型結構摘要
model.summary()# 編譯模型
model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])# 訓練模型
history = model.fit(train_images, train_labels, epochs=5, batch_size=64)# 評估模型
test_loss, test_acc = model.evaluate(test_images, test_labels)
print(f"測試準確率: {test_acc:.4f}")# 保存模型
model.save('mnist_cnn_model.h5')    

代碼解釋

這個示例展示了使用 TensorFlow 的 Keras API 構建 CNN 的標準流程:

  • 數據準備:加載 MNIST 手寫數字數據集,調整形狀并歸一化像素值。

  • 模型構建:

    • 卷積層:使用Conv2D創建 3 個卷積層,逐步提取圖像特征。

    • 池化層:使用MaxPooling2D降低特征圖尺寸,減少計算量。

    • 全連接層:通過Flatten將卷積特征展平,連接兩層Dense進行分類。

  • 訓練與評估:使用model.fit()訓練模型,并在測試集上評估準確率。

自定義卷積過程的情況

如果需要自定義卷積過程(如使用特殊卷積核或計算方式),可以通過tf.nn.conv2d等底層函數實現,但這種方式更復雜,適合高級需求。例如:

# 自定義卷積層(等價于layers.Conv2D)
inputs = tf.keras.Input(shape=(28, 28, 1))
filters = tf.Variable(tf.random.normal([3, 3, 1, 32]))  # 3x3卷積核,32個
conv_output = tf.nn.conv2d(inputs, filters, strides=[1, 1, 1, 1], padding='VALID')
conv_output = tf.nn.relu(conv_output)  # 應用ReLU激活

總結:大多數場景下推薦使用 Keras 的高級 API(如Conv2D),簡潔高效;僅在需要特殊定制時才考慮底層實現。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/98137.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/98137.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/98137.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

醫療行業安全合規數據管理平臺:構建高效協作與集中化知識沉淀的一體化解決方案

在醫療行業中,數據不僅是日常運營的基礎,更是患者安全、服務質量和合規管理的核心載體。隨著醫療業務的復雜化和服務模式的多元化,各類機構——從大型醫院到科研中心——都面臨著海量文檔、報告、影像資料和政策文件的管理需求。這些資料往往…

Day25_【深度學習(3)—PyTorch使用(5)—張量形狀操作】

reshape() squeeze()unsqueeze()transpose()permute()view() reshape() contiguous() reshape() 一、reshape() 函數保證張量數據不變的前提下改變數據的維度,將其轉換成指定的形狀。def reshape_tensor():data torch.tensor([[1, 2, 3], [4, 5, 6]])print(data…

第十八篇 開發網頁教學:實現畫布、繪畫、簡易 PS 方案

在網頁開發領域,畫布功能是實現交互創作的重要基礎,無論是簡單的繪畫工具,還是具備基礎修圖能力的簡易 PS 方案,都能為用戶帶來豐富的視覺交互體驗。本篇教學將圍繞 “學習 - 實踐 - 實操” 的核心思路,從技術原理講解…

封裝形成用助焊劑:電子制造“隱形橋梁”的技術突圍與全球產業重構

在5G通信、人工智能、新能源汽車等新興技術驅動下,全球電子制造業正以年均6.8%的增速重構產業鏈。作為電子元件焊接的核心輔料,封裝形成用助焊劑(又稱電子封裝用助焊劑)憑借其“優化焊接質量、提升可靠性、降低制造成本”的核心價…

【完整源碼+數據集+部署教程】零件實例分割系統源碼和數據集:改進yolo11-GhostHGNetV2

背景意義 研究背景與意義 隨著工業自動化和智能制造的迅速發展,零件的高效識別與分割在生產線上的重要性日益凸顯。傳統的圖像處理方法在處理復雜場景時往往面臨著準確性不足和實時性差的問題,而深度學習技術的引入為這一領域帶來了新的機遇。特別是基于…

墨色規則與血色節點:C++紅黑樹設計與實現探秘

前言? 前幾天攻克了AVL樹,我們已然是平衡二叉樹的強者。但旅程還未結束,下一個等待我們的,是更強大、也更傳奇的**終極BOSS**——紅黑樹。它不僅是map和set的強大心臟,更是C STL皇冠上的明珠。準備好了嗎?讓我們一…

大數據時代時序數據庫選型指南:為何 Apache IoTDB 成優選(含實操步驟)

在數字經濟加速滲透的今天,工業物聯網(IIoT)、智慧能源、金融交易、城市運維等領域每天產生海量 “帶時間戳” 的數據 —— 從工業設備的實時溫度、電壓,到電網的負荷波動,再到金融市場的每秒行情,這類 “時…

MAZANOKE+cpolar讓照片存儲無上限

文章目錄前言1. 關于MAZANOKE2. Docker部署3. 簡單使用MAZANOKE4. 安裝cpolar內網穿透5. 配置公網地址6. 配置固定公網地址總結當工具開始理解用戶的需求痛點時,MAZANOKE與cpolar這對搭檔給出了“輕量化”的解決方案。它不追求浮夸的功能堆砌,卻用扎實的…

正則表達式 - 元字符

正則表達式中的元字符是具有特殊含義的字符,它們不表示字面意義,而是用于控制匹配模式。基本元字符. (點號)匹配除換行符(\n)外的任意單個字符示例:a.b 匹配 "aab", "a1b", "a b" 等^ (脫字符)匹配字符串的開始…

suricata源碼解讀-事務日志

注冊事務日志線程模塊 void TmModuleTxLoggerRegister (void) {tmm_modules[TMM_TXLOGGER].name "__tx_logger__";tmm_modules[TMM_TXLOGGER].ThreadInit OutputTxLogThreadInit;tmm_modules[TMM_TXLOGGER].Func OutputTxLog;tmm_modules[TMM_TXLOGGER].ThreadExi…

【CSS】層疊上下文和z-index

z-index 的作用范圍受“層疊上下文(stacking context)”影響。🔹 1. z-index 的基本作用 控制元素在 同一個層疊上下文(stacking context) 內的堆疊順序。值越大,顯示層級越靠上。🔹 2. 什么是層…

自動化腳本的降本增效實踐

一、自動化腳本的核心價值自動化腳本通過模擬人類操作完成重復性任務,其核心價值體現在三個維度:首先,在時間成本方面,標準化的數據處理流程可縮短90%以上的操作耗時;其次,在人力成本上,單個腳本…

【C語言】第七課 字符串與危險函數??

C語言中的字符串處理既是基礎,也是安全漏洞的重災區。理解C風格字符串的底層原理及其危險函數的運作方式,對于編寫安全代碼和進行逆向工程分析至關重要。 🧩 C風格字符串的本質 C風格字符串本質上是以空字符\0(ASCII值為0&#xf…

Mac安裝hadoop

1.在terminal中檢查是否安裝brew命令 brew --version 如果沒有安裝,在terminal中執行命令,安裝brew /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 安裝完成后,再重新打…

多語言編碼Agent解決方案(4)-Eclipse插件實現

Eclipse插件實現:支持多語言的編碼Agent集成 本部分包含Eclipse插件的完整實現,包括多語言支持、命令注冊、API調用和UI集成。插件使用Java開發,基于Eclipse Plugin Development Environment (PDE)。 1. Eclipse插件目錄結構 eclipse-plugin/…

風險規則引擎-RPA 作為自動化依賴業務決策流程的強大工具

機器人流程自動化(RPA)聽起來好像跟機器人統治世界似的,但其實不是那么回事。RPA 就是一套能在電腦上運行的程序,能快速、高效地自動完成日常重復的工作。RPA 讓你能夠設置一些軟件“機器人”來執行特定的任務。RPA 的一個大好處就…

漏洞無效化學習

一、基礎概念與原理1. 核心定義漏洞無效化(Vulnerability Mitigation):并非直接修補漏洞本身,而是通過技術手段降低漏洞被成功利用的概率。其目標是讓攻擊者即使發現漏洞也無法達成攻擊目的。 關鍵思路:通過訪問控制、…

「Vue 項目中實現智能時間選擇:帶業務規則的級聯選擇器」

#創作靈感公司業務需要,某個時間節點前可以選擇到月,某個時間節點后只能選擇季度vue2 Vant2javascriptimport { Cascader, Field, Form, Popup, Button } from vant; import vant/lib/index.css;export default {name: CascaderPage,components: {VanCa…

day1———Qt———應用程序界面設置

1&#xff0c;定義一個Mystring類代替string的功能#include <iostream> #include <string.h>using namespace std; class Mystring {friend ostream &operator<<(ostream &cout,const Mystring &s);friend istream &operator>>(istrea…

apache實現LAMP+apache(URL重定向)

1.apache實現LAMPLAMP是指一組通常一起使用來運行動態網站的自由軟件名稱首字母的縮寫a.L是指Linux操作系統b,.A是指Apache&#xff0c;用來提供Web服務c.M指MySQL&#xff0c;用來提供數據庫服務d.P指PHP&#xff0c;是動態網站的一種開發語言1.1php運行方式說明php是腳本語言…