【資料分析】深度學習 DNN、CNN、RNN 概述

更新於 發佈於 閱讀時間約 18 分鐘
raw-image

深度學習 (Deep Learning) 是一種基於人工神經網絡的機器學習技術,旨在從大量數據中學習抽象特徵表示。其核心是通過多層非線性轉換(即「深度」結構)來自動提取數據的高層特徵,從而實現複雜任務(如圖像識別、自然語言處理)。

深度學習的核心概念:

  1. 神經網絡:由神經元組成的數學模型,模仿生物神經網絡的信息處理方式。
  2. 多層結構:包括輸入層、隱藏層(多層)、輸出層,隱藏層越多,模型表達能力越強。
  3. 自動特徵提取:通過訓練,模型能自動從數據中學習相關特徵,而不需要人工設計。
  4. 大規模數據和算力:深度學習的成功依賴於大量標記數據和強大的計算資源(如 GPU)。


# 可使用目錄功能快速確認要閱覽的主題



快速比較 DNN、CNN 與 RNN

CNN 和 RNN 都基於 DNN 的全連接層設計進行改進,但更針對特定數據類型(空間數據和序列數據)進行優化:

  1. CNN 保留 DNN 的非線性特徵學習能力,但加入卷積層以降低參數數量並專注於空間結構。
  2. RNN 保留 DNN 的多層結構特性,但加入循環結構以建模時間依賴性。

兩者都是 DNN 的進化版本,針對特定問題進行優化,解決了 DNN 在特定領域的不足。


CNN 和 RNN 對 DNN 進行的改進,專注於特定數據結構的優化設計。這些模型的成功表明,深度學習並非僅僅依賴「深」,而是需要針對具體問題設計合適的架構。

raw-image



DNN 深度神經網絡(Deep Neural Network)

定義

DNN 是一種具有多層結構的人工神經網絡(ANN),通常包含輸入層、多個隱藏層 和輸出層。其目的是通過多層非線性轉換,自動提取數據的特徵,並用於分類、迴歸等任務。

簡單來說,DNN 是對基本神經網絡(FNN)的擴展,增加了隱藏層的數量,從而能處理更複雜的問題。


常見應用場景

  1. 分類任務
    • 客戶流失預測(Churn Prediction)。
    • 醫療診斷(例如是否患有某種疾病)。
  2. 迴歸任務
    • 銷售預測。
    • 房價預測。
  3. 多輸出問題
    • 預測同時影響多個變數的情境(例如廣告效果的多維評估)。


基本結構

  1. 輸入層(Input Layer)
    • 負責接收原始數據特徵。
    • 每個神經元對應數據的一個特徵,例如數值型數據中的每一列。
  2. 隱藏層(Hidden Layers)
    • 通過激活函數引入非線性能力,允許網絡學習複雜的模式。
    • 層數越多,表達能力越強,但計算成本和過擬合風險也越高。
  3. 輸出層(Output Layer)
    • 負責輸出模型的結果,例如:分類問題:每個類別對應一個輸出神經元。迴歸問題:輸出單一值或多個值。


工作原理

  1. 前向傳播(Forward Propagation)
    • 輸入數據依次通過每一層神經元的權重計算、偏置加成和激活函數,生成輸出。
    • 數學表達:
    raw-image
    • 其中:z(l):第 l 層的線性組合。
      • W(l):第 l 層的權重矩陣。
      • b(l):偏置項。
      • σ:激活函數。
  2. 損失計算(Loss Calculation)
    • 通過損失函數衡量模型預測與真實值的誤差。
    • 常見損失函數:
      • 分類問題:交叉熵損失(Cross-Entropy Loss)。
      • 迴歸問題:均方誤差(Mean Squared Error, MSE)。
  3. 反向傳播(Backpropagation)
    • 通過鏈式法則計算每層權重和偏置的梯度。
    • 更新權重與偏置以減少損失,優化過程通常使用梯度下降(Gradient Descent)。
  4. 權重更新
    • 使用優化器(如 Adam、SGD 等)更新權重和偏置。


優點與挑戰

優點:

  1. 高表達能力:能從數據中學習複雜的模式和非線性關係。
  2. 自動特徵提取:減少人工特徵工程的需求。
  3. 應用廣泛:適用於分類、迴歸、多輸出問題。

挑戰:

  1. 過擬合風險:模型可能記住訓練數據的細節而忽略通用性。
  2. 梯度消失問題:深層網絡中,早期層的梯度可能變得極小。
  3. 計算資源需求高:需要強大的硬件支持(如 GPU)。
  4. 需要大量數據:小樣本可能導致模型性能欠佳。


Python 範例:簡單 DNN

構建 DNN 非常容易,常見的深度學習框架包括:

  1. TensorFlow/Keras
    • 簡單易用,適合初學者。
    • 範例:
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

# 建立模型
model = Sequential([
Dense(64, activation='relu', input_shape=(input_dim,)),
Dense(32, activation='relu'),
Dense(output_dim, activation='softmax') # 根據任務選擇激活函數
])

# 編譯模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

# 訓練模型
model.fit(X_train, y_train, epochs=10, batch_size=32)


  1. PyTorch
  • 更靈活,適合需要高度定制的場景。
  • 範例:
import torch
import torch.nn as nn

class DNN(nn.Module):
def __init__(self, input_dim, output_dim):
super(DNN, self).__init__()
self.fc1 = nn.Linear(input_dim, 64)
self.fc2 = nn.Linear(64, 32)
self.fc3 = nn.Linear(32, output_dim)
self.relu = nn.ReLU()

def forward(self, x):
x = self.relu(self.fc1(x))
x = self.relu(self.fc2(x))
x = self.fc3(x)
return x

model = DNN(input_dim, output_dim)



CNN 卷積神經網絡(Convolutional Neural Network)

定義

卷積神經網絡(CNN)是一種專門用於處理結構化數據(特別是圖像)的深度學習模型。CNN 通過卷積運算和特徵提取的方式,從圖像中學習局部模式和層次化特徵,廣泛應用於圖像分類、目標檢測、語音識別等領域。


常見應用場景

  1. 圖像分類
    • 手寫數字識別(MNIST)。
    • 圖像標籤分類(如 CIFAR-10、ImageNet)。
  2. 目標檢測
    • 偵測圖像中的物體及其位置(如 YOLO、Faster R-CNN)。
  3. 語音處理
    • 語音情緒分析。
    • 語音識別(與 RNN 或 Transformer 結合)。
  4. 醫學影像分析
    • CT/MRI 圖像的腫瘤檢測。
    • 醫學影像分類與分割。
  5. 自駕車
    • 路標識別。
    • 車道線檢測。


基本結構

  1. 輸入層(Input Layer)
  • 負責接收數據,通常是高維圖像數據,例如彩色圖像的大小是 H×W×C(高度×寬度×通道數,例如 224×224×3)。
  • 特徵:
    • 高度(Height):圖像的垂直像素數。
    • 寬度(Width):圖像的水平像素數。
    • 通道(Channel):如 RGB 圖像有 3 個通道,灰度圖像有 1 個通道。
  1. 卷積層(Convolutional Layer)
  • 功能:從圖像中提取局部特徵。
  • 運算
    • 使用一組「卷積核」(filters/kernels)在輸入數據上滑動,計算點積來生成特徵圖(Feature Map)。
    • 每個卷積核專注於學習不同的模式,例如邊緣、線條或紋理。
    數學公式:
raw-image
  • 其中:
    • Z 是特徵圖。
    • W 是卷積核(權重矩陣)。
    • X 是輸入數據。
    • b 是偏置項。
  • 重要參數
    • 卷積核大小(Filter Size):如 3×3、5×5。
    • 步長(Stride):每次滑動的步長,步長越大,特徵圖尺寸越小。
    • 填充(Padding):為保留輸出尺寸,是否在輸入周圍補零。


  1. 激活函數(Activation Function)
  • 功能:引入非線性特性,讓模型能學習複雜的模式。
  • 常用函數
    • ReLU(Rectified Linear Unit):常用於卷積層,計算簡單,效果良好。
raw-image
  1. 池化層(Pooling Layer)
  • 功能:通過降維減少特徵圖大小,降低計算量並增強模型的平移不變性。
  • 種類
    • 最大池化(Max Pooling):取池化窗口內的最大值。
    • 平均池化(Average Pooling):取池化窗口內的平均值。
  • 超參數
    • 窗口大小(如 2×2)。
    • 步長(通常與窗口大小相同)。


  1. 全連接層(Fully Connected Layer, FC Layer)
  • 功能:將提取的特徵映射到輸出空間,用於分類或回歸。
  • 輸出層:通常用於輸出最終結果:
    • 二分類:單一輸出節點,激活函數為 Sigmoid。
    • 多分類:多個輸出節點,激活函數為 Softmax。


工作原理

  1. 輸入圖像
    • 將原始圖像數據輸入 CNN,經過歸一化處理(例如將像素值縮放到 [0,1])。
  2. 卷積層提取特徵
    • 第一層卷積提取低層特徵,如邊緣、線條。
    • 更深層的卷積提取高階特徵,如形狀、物體部件。
  3. 池化層降維
    • 壓縮特徵圖,減少計算成本,同時保留主要信息。
  4. 多層卷積與池化
    • 通過堆疊多層卷積和池化層,逐漸提取更抽象、更高級的特徵。
  5. 全連接層輸出結果
    • 將最終特徵輸入全連接層,用於分類或其他任務。


優點與挑戰

優點:

  1. 特徵自動提取:CNN 能自動學習特徵,而不需要手工設計。
  2. 局部感知:卷積層專注於局部模式,如圖像中的邊緣、角點。
  3. 參數共享:同一卷積核在整個圖像上滑動,顯著降低參數數量。
  4. 平移不變性:池化層幫助模型對輸入的平移和局部變化具有穩定性。

挑戰:

  1. 計算量大:需要大量計算資源(尤其是處理高分辨率圖像時)。
  2. 過擬合風險:深層模型容易過擬合,需要正則化和數據增強技術。
  3. 數據需求高:CNN 需要大量標註數據來訓練。


Python 範例:簡單 CNN

以下是一個使用 Keras 構建的簡單 CNN 模型範例:

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense

# 建立模型
model = Sequential([
Conv2D(filters=32, kernel_size=(3, 3), activation='relu', input_shape=(64, 64, 3)),
MaxPooling2D(pool_size=(2, 2)),
Conv2D(filters=64, kernel_size=(3, 3), activation='relu'),
MaxPooling2D(pool_size=(2, 2)),
Flatten(),
Dense(units=128, activation='relu'),
Dense(units=10, activation='softmax') # 用於 10 類分類
])

# 編譯模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

# 模型摘要
model.summary()



RNN 遞歸神經網絡(Recurrent Neural Network)

定義

RNN 是一類專為處理序列數據設計的神經網絡,它可以利用數據中的時間順序信息,讓網絡對當前輸入和之前的狀態進行建模。因此,RNN 非常適合處理像時間序列、語言數據、音頻信號等帶有上下文或依賴關係的數據。

核心思想:RNN 在時間維度上引入了循環結構,允許隱藏層的輸出影響下一步的計算,形成「記憶」效果。


常見應用場景

  1. 自然語言處理(NLP)
    • 情感分析(Sentiment Analysis)。
    • 語言建模(Language Modeling)。
    • 機器翻譯(Machine Translation)。
  2. 時間序列分析
    • 股價預測。
    • 天氣預測。
    • 信號處理(如音頻分類)。
  3. 語音識別
    • 轉錄語音到文本。
  4. 生成任務
    • 文本生成(如 ChatGPT)。
    • 圖像字幕生成。


基本結構與工作原理

RNN 的結構包含以下部分:

  1. 輸入層(Input Layer)
  • 每個時間步(time step)輸入一個序列中的數據。例如:
    • 單詞序列:每個時間步是一個單詞的詞向量。
    • 時間序列數據:每個時間步是一個觀測值。
  • 數據結構
    • 對於序列長度 T,輸入數據 x 表示為:
    raw-image
    • 每個 x(t) 是一個特徵向量。
  1. 隱藏層(Hidden Layer)
  • 遞歸關係:隱藏層的輸出同時依賴於當前輸入和上一時間步的隱藏狀態。
raw-image

其中:

    • h(t):當前時間步的隱藏狀態。
    • h(t−1):上一時間步的隱藏狀態。
    • x(t):當前時間步的輸入。
    • Wh、Wx​:權重矩陣。
    • b:偏置向量。
    • f:激活函數(如 Tanh 或 ReLU)。
  • 隱藏狀態的作用:儲存序列的「記憶」,幫助模型理解上下文。
  1. 輸出層(Output Layer)
  • 對每個時間步 t 的隱藏狀態 h(t) 生成對應的輸出 o(t):
raw-image
    • g:輸出層的激活函數(例如 Softmax 或線性函數)。
  • 輸出形式因任務而異:
    • 序列到序列(Sequence-to-Sequence):輸出與輸入具有相同長度。
    • 序列到標籤(Sequence-to-Label):輸出為一個標籤(例如情感分類)。


工作流程

  1. 前向傳播(Forward Propagation)
    • 將序列數據分時間步輸入。
    • 每個時間步的輸出依賴當前輸入和之前的隱藏狀態。
    • 將最後或全部隱藏狀態作為輸出。
  2. 損失計算
    • 根據真實標籤計算損失,例如:分類問題:交叉熵損失。回歸問題:均方誤差(MSE)。
  3. 反向傳播(Backpropagation Through Time, BPTT)
    • 通過時間反向計算每個時間步的梯度,更新權重和偏置。


優點與挑戰

優點:

  1. 上下文建模:通過隱藏狀態,RNN 能捕捉序列中的上下文依賴性。
  2. 序列處理能力強:適合處理變長輸入或輸出,例如自然語言處理(NLP)和時間序列預測。


挑戰:

  1. 梯度消失與梯度爆炸
    • 當序列過長時,早期時間步的梯度可能過小(梯度消失)或過大(梯度爆炸)。
    • 解決方法:使用改進版本(如 LSTM 和 GRU)。
  2. 長期依賴建模困難
    • 基本 RNN 難以有效捕捉序列中長距離的依賴關係。
  3. 計算成本高
    • 每個時間步的計算需要依賴上一時間步,難以並行化。


Python 範例:簡單 RNN

以下是一個使用 TensorFlow/Keras 實現簡單 RNN 的範例:

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import SimpleRNN, Dense

# 建立模型
model = Sequential([
SimpleRNN(50, activation='tanh', input_shape=(100, 1)), # 100 個時間步,每步 1 個特徵
Dense(1, activation='sigmoid') # 輸出單一值,用於二分類
])

# 編譯模型
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

# 模型摘要
model.summary()
留言
avatar-img
留言分享你的想法!
avatar-img
JayRay 的沙龍
12會員
23內容數
JayRay 的沙龍的其他內容
2025/01/05
本篇文章提供描述性統計的完整指南,涵蓋集中趨勢、離散趨勢和數據分佈等重要概念,並附上豐富的實務應用案例與 Python 資料視覺化參考連結,協助讀者快速瞭解數據分析的基礎知識。
Thumbnail
2025/01/05
本篇文章提供描述性統計的完整指南,涵蓋集中趨勢、離散趨勢和數據分佈等重要概念,並附上豐富的實務應用案例與 Python 資料視覺化參考連結,協助讀者快速瞭解數據分析的基礎知識。
Thumbnail
2024/12/25
Naive Bayes是一種基於貝葉斯定理的機器學習分類演算法,適用於文本分類、垃圾郵件檢測及情感分析等任務。雖然假設特徵之間相互獨立,這在現實中不常成立,但其高效計算與穩定性使得在小數據集及高維度特徵空間中表現良好。
Thumbnail
2024/12/25
Naive Bayes是一種基於貝葉斯定理的機器學習分類演算法,適用於文本分類、垃圾郵件檢測及情感分析等任務。雖然假設特徵之間相互獨立,這在現實中不常成立,但其高效計算與穩定性使得在小數據集及高維度特徵空間中表現良好。
Thumbnail
2024/11/29
數據洩漏是在機器學習和數據分析中,因不當使用資料而造成的模型性能評估錯誤。這篇文章探討數據洩漏的常見形式及其對模型可靠性的影響,並提供防範措施,如嚴格劃分數據集、僅對訓練集進行預處理和使用交叉驗證。瞭解這些概念有助於構建更穩健的數據驅動模型。
Thumbnail
2024/11/29
數據洩漏是在機器學習和數據分析中,因不當使用資料而造成的模型性能評估錯誤。這篇文章探討數據洩漏的常見形式及其對模型可靠性的影響,並提供防範措施,如嚴格劃分數據集、僅對訓練集進行預處理和使用交叉驗證。瞭解這些概念有助於構建更穩健的數據驅動模型。
Thumbnail
看更多
你可能也想看
Thumbnail
家中修繕或裝潢想要找各種小零件時,直接上網採買可以省去不少煩惱~看看Sylvia這回為了工地買了些什麼吧~
Thumbnail
家中修繕或裝潢想要找各種小零件時,直接上網採買可以省去不少煩惱~看看Sylvia這回為了工地買了些什麼吧~
Thumbnail
👜簡單生活,從整理包包開始!我的三款愛用包+隨身小物清單開箱,一起來看看我每天都帶些什麼吧🌿✨
Thumbnail
👜簡單生活,從整理包包開始!我的三款愛用包+隨身小物清單開箱,一起來看看我每天都帶些什麼吧🌿✨
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
本文探討機器學習的基本原理及其應用目的。機器學習的基本原理包括數據預處理、模型選擇、訓練、評估和持續學習,以及特徵工程和超參數調優。機器學習可用於預測、分類、聚類、異常檢測等多種目的,應用範圍涵蓋金融、醫療、電商等領域。
Thumbnail
本文探討機器學習的基本原理及其應用目的。機器學習的基本原理包括數據預處理、模型選擇、訓練、評估和持續學習,以及特徵工程和超參數調優。機器學習可用於預測、分類、聚類、異常檢測等多種目的,應用範圍涵蓋金融、醫療、電商等領域。
Thumbnail
這篇文章探討人工智慧 (AI) 的基礎概念,特別是大數據、數據類型(數值型、文字型、圖像型)及其來源。文章詳細解釋了大數據的特性(數量、速度、多樣性),並深入分析了各種數據類型的定義、結構(結構化、半結構化、非結構化)、例子和來源。文章還提到了數據在AI應用中的挑戰和重要性。
Thumbnail
這篇文章探討人工智慧 (AI) 的基礎概念,特別是大數據、數據類型(數值型、文字型、圖像型)及其來源。文章詳細解釋了大數據的特性(數量、速度、多樣性),並深入分析了各種數據類型的定義、結構(結構化、半結構化、非結構化)、例子和來源。文章還提到了數據在AI應用中的挑戰和重要性。
Thumbnail
很常聽到深度學習,但到底是在學些什麼?今天來跟我一起學習一個重要的概念: 多層感知機(MLP, Multi-Layer Perceptron)是最基礎的神經網路之一。它雖然簡單,卻是許多進階模型的基礎,例如 CNN(卷積神經網路) 和 Transformer(變換器)(某論文),用於處理自然語言模
Thumbnail
很常聽到深度學習,但到底是在學些什麼?今天來跟我一起學習一個重要的概念: 多層感知機(MLP, Multi-Layer Perceptron)是最基礎的神經網路之一。它雖然簡單,卻是許多進階模型的基礎,例如 CNN(卷積神經網路) 和 Transformer(變換器)(某論文),用於處理自然語言模
Thumbnail
本文章提供深度學習(Deep Learning)、深度神經網絡(DNN)、卷積神經網絡(CNN)和遞歸神經網絡(RNN)的簡介,並包含它們的定義、應用場景、基本結構、工作原理、優缺點和Python範例。
Thumbnail
本文章提供深度學習(Deep Learning)、深度神經網絡(DNN)、卷積神經網絡(CNN)和遞歸神經網絡(RNN)的簡介,並包含它們的定義、應用場景、基本結構、工作原理、優缺點和Python範例。
Thumbnail
不太確定捲積式神經網路 (CNN) 的精確定義,但大致上是用捲積層 (convolution layer) 取代 DNN 中的幾個全連接層 (fully connected layer),這些捲積層概念跟 feature filter 類似。 先大概有個概念就夠,實作時跟前一篇 DNN 一樣,這些
Thumbnail
不太確定捲積式神經網路 (CNN) 的精確定義,但大致上是用捲積層 (convolution layer) 取代 DNN 中的幾個全連接層 (fully connected layer),這些捲積層概念跟 feature filter 類似。 先大概有個概念就夠,實作時跟前一篇 DNN 一樣,這些
Thumbnail
深度學習是什麼? 簡單來說,深度學習是大型且多層的人工神經網路。我們可以想像神經網路("Neural Nnetwork, NN")是一種有向無環圖,此圖可拆分成三個部分來看: 1. 輸入層接收信號向量;2. 一個或多個隱藏層處理前一層的輸出; 3. 輸出層統合之前所有隱藏層的處理結果。神經網路的初
Thumbnail
深度學習是什麼? 簡單來說,深度學習是大型且多層的人工神經網路。我們可以想像神經網路("Neural Nnetwork, NN")是一種有向無環圖,此圖可拆分成三個部分來看: 1. 輸入層接收信號向量;2. 一個或多個隱藏層處理前一層的輸出; 3. 輸出層統合之前所有隱藏層的處理結果。神經網路的初
Thumbnail
本文介紹了一張AI的層次分類圖,通過圓形結構簡述人工智慧、機器學習、神經網路及深度學習等技術的層級關係。從最外層的人工智慧到深度學習,逐層解析這些技術及其相互關聯,幫助讀者更好地理解AI領域的分類和技術應用。這一分類架構符合現階段AI技術的普遍認知。希望能夠為探索AI提供有價值的參考。
Thumbnail
本文介紹了一張AI的層次分類圖,通過圓形結構簡述人工智慧、機器學習、神經網路及深度學習等技術的層級關係。從最外層的人工智慧到深度學習,逐層解析這些技術及其相互關聯,幫助讀者更好地理解AI領域的分類和技術應用。這一分類架構符合現階段AI技術的普遍認知。希望能夠為探索AI提供有價值的參考。
Thumbnail
這篇文章深入探討了數據科學與機器學習中的主要聚類算法,包括 K-means、DBSCAN 和層次聚類。介紹了每種算法的工作原理、優缺點及其適用場景,幫助讀者理解何時選擇何種聚類技術。本文還提供了相關的程式碼範例,方便讀者進一步學習與實踐。
Thumbnail
這篇文章深入探討了數據科學與機器學習中的主要聚類算法,包括 K-means、DBSCAN 和層次聚類。介紹了每種算法的工作原理、優缺點及其適用場景,幫助讀者理解何時選擇何種聚類技術。本文還提供了相關的程式碼範例,方便讀者進一步學習與實踐。
Thumbnail
我們這個系列就是希望以非常科普的角度來解釋人工智慧。本篇要釐清人工智慧(AI: Artificial Intelligence),機器學習 Machine Learning, 深度學習Deep Learning,另外還有類神經網路,到底互相是什麼關係呢?
Thumbnail
我們這個系列就是希望以非常科普的角度來解釋人工智慧。本篇要釐清人工智慧(AI: Artificial Intelligence),機器學習 Machine Learning, 深度學習Deep Learning,另外還有類神經網路,到底互相是什麼關係呢?
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News