深度學習網路基礎
Lecture 2. Concepts of Deep Learning
Neural Networks
Image Not Showing
Possible Reasons
- The image was uploaded to a note which you don't have access to
- The note which the image was originally uploaded to has been deleted
Learn More →
目的:從資料中學習目標的分佈
Image Not Showing
Possible Reasons
- The image was uploaded to a note which you don't have access to
- The note which the image was originally uploaded to has been deleted
Learn More →
過程:利用 gradient descen 調整參數,以找到最小的損失函數θ
Gradient Descent
Image Not Showing
Possible Reasons
- The image was uploaded to a note which you don't have access to
- The note which the image was originally uploaded to has been deleted
Learn More →
:損失函數對參數的梯度,表示在不同方向的變化率
- :損失函數
- 目標:在訓練過程最小化
- 沿著梯度的相反方向進行更新
- :梯度(表示對變數 𝜃 進行微分)
- positive gradient():正梯度(斜率為正),增加 𝜃 會增加損失
- negative gradient():負梯度(斜率為負),沿著梯度下降的方向才能減少損失。
:參數更新
- :Learning rate
- 控制每次更新時,𝜃 移動的步長。
- 學習率過大:可能會錯過最佳解(掉到局部最佳解)。
- 學習率過小:收斂速度變慢,訓練時間變長。
-
- 反向更新,朝著降低損失的方向前進。
- 如果是負梯度(為負),代表向右移動(變大),會朝向越低的方向。
Common Task & Loss function
- Regression
預測連續的數字
- Mean Squared Error (MSE)
- Mean Absolute Error (MAE)
- Huber Loss (Smooth L1 Loss)
- Classification
分類成離散的標籤
- Cross-Entropy Loss (for Binary Classification)
- 當預測信心低時,損失較大,梯度較大,更新力度更強。
- 當模型的預測值 偏離正確答案時,梯度會變大,從而對模型的更新產生較大影響。
- 假設預測值 和真實標籤 如下:
- 如果 但 ,則:,變化較大
- 如果 但 ,則:,變化較小
- 促使正確類別的預測機率接近 1。
- 當預測錯誤時,交叉熵的損失會很大(懲罰錯誤的預測)。
- 隨著訓練的進行,模型會調整權重,使得:
- Cross-Entropy Loss(for Multiclass Classification)
- 配合 Softmax 產生機率輸出:
- Softmax 會把 logit 轉換成機率,保證所有類別的機率加總為 1。
- 假設真實標籤
- 假設模型的預測機率為:
- 假設模型的預測機率為
- Kullback-Leibler Divergence (KL Divergence)
- 衡量兩個機率分佈之間的差異
- 用於 probabilistic models 與 variational inference
Guide for Designing Loss Functions
Key factors:
- 可微性(Differentiability) - 允許計算梯度。
- 例如:
- Subgradient
- 處理不可微的情況,直接給定一個值。
- 定義:,為次梯度集合
- 範例:
- L1 Loss: The function is non-differentiable at , where subgradient .
- ReLU Activation: The function is non-differentiable at , where subgradient .
- 梯度大小(Gradient Magnitude) - 避免梯度消失或爆炸。
- Choosing the Right Error Metric
- Regularization to Prevent Large Gradients
- L1 Regularization
- L2 Regularization
- Gradient Clipping to Directly Limit Gradient Size
- 梯度平滑性(Gradient Smoothness) - 讓優化更穩定。
- 優勢
- 如何確保平滑
- Avoid non-differentiable points 避免不可微的點
- Control sharp gradient changes 控制急遽的梯度變化
- MSE
- Weighted Loss Function(加權損失函數)
- Clipped Loss Function(裁剪損失函數)
- 設定最大損失值 𝐶 來限制梯度,防止極端誤差影響訓練。
- Prevent vanishing gradients 防止梯度消失
- 梯度方向(Gradient Direction) - 確保梯度正確指導更新方向。
- 凸性(Convexity) - 使優化更容易找到全局最小值。
- 原因
- 非凸函數可能有多個局部最小值
- Saddle Points
- 在某些方向是極小值,但在其他方向是極大值。
- 難以下降,無法離開該點
- 如何找到
- Batch Normalization
- 自適應學習率(如 Adam、Adagrad)
- 隨機梯度下降(SGD)
Lecture 3. Practical Issue of Model Training - Overfitting and Underfitting

Overfitting

* Fitting to noise
擬合到非正確的特徵
How to reduce overfitting
降低複雜度,但提升泛化效果跟穩定性
- Increasing the dataset
- Data augmentation
- Regularization
- L1 Regularization
- L2 Regularization
- Dropout
- 隨機遮罩神經元

降低複雜度
Underfitting

- Noise or weakly stuctured data
- 模型參數量太低
- 例如:單層感知器的XOR問題

- Learning rate too high
How to reduce Underfitting
- 有規律的資料
- data cleaning
篩選掉錯誤的資料
- 優質的資料
挑選品質高的資料
- Reduce Learning rate
- 增加模型參數量
Lecture 4. CNN Structure and Its Technical Operations
FCN (Fully Connected Network)
- Flattening the Image
- Input Processing & Inference (Forward Pass)
- Training & Optimization (Backpropagation)
Flattening
- 將圖片轉換成一維的向量
- 例如:28x28的圖片,轉換成784的向量


Forward Propagation Workflow:
- Input Layer
- Hidden Layer
- Activation Function
- Output Layer
Training & Optimization
Backpropagation Workflow:
- Loss Function
- Mean Squared Error
- Cross Entropy
- Optimizer
FCN的問題
- 參數量大
- 占用大量的記憶體空間
- 計算量大
- 訓練時間長
- 容易過擬合
Convolutional Neural Network (CNN)
Convolutional

為了能提取特徵:
- Shapes and contours
邊緣和輪廓
- Colors and textures
顏色和紋理
- Relative size and proportions
相對大小和比例
- Context
上下文、鄰域的資訊
不同的 kernel 提取不同的特徵

- Edge Detection
- Sharpen
- Blur
- Emboss
Architecture

- Fully Connected
- Convolutional Layer
提取特徵
- Pooling Layer
融合特徵
Convolutional Layer
目的:提取出特徵圖
- Feature maps
一個二維的矩陣,代表了圖片中的特徵
- Input channels
輸入的圖片的通道數
- RGB或是有深度的圖片
- Input channels = Filter channels
- Output channels
輸出的特徵圖的通道數
- 有多少個特徵圖
- N kernels, it will output N feature maps.
- 參數
- Kernel Size
提取特徵的區域大小
- Stride
移動的步長
- 1 or 2 …
- Higher stride
特徵圖變小
計算量小
- Lower stride
保留微小的變化
計算量大
- Padding
為了保持圖片大小不變
- Types
- Same padding
- Valid padding
- Forward Pass
步驟是:先卷積,再激活
- Convolution
- Activation Function
- Output
- Backward Pass
步驟是:計算梯度,更新權重
- Loss Function
- Optimizer
- Update Weights
Pooling Layer
特徵多時,會導致參數量過大或是有冗餘、雜訊的資訊
目的:經過 Pooling Layer 可以將特徵圖縮小,並保留重要的特徵
Types:

- Max Pooling
取最大值
- 2x2 or 3x3 …
圖片
- Forwards Pass
- Backwards Pass
- Average Pooling
取平均值
- 2x2 or 3x3 …
圖片
- Forwards Pass
- Backwards Pass
- Global Pooling
取整張圖片的特徵
- Global Average Pooling
- Global Max Pooling
Lecture 5. The Variants of CNN Models
CNN Models
- LeNet-5
第一個cnn網路
- AlexNet
第一個大型圖片辨識、GPU訓練、ReLU Activation的網路
- VGGNet
提倡深度
- GoogLeNet
Inception Block融合多尺度特徵與1x1 Convolution降維
- ResNet
Skip Connection
Backpropagation
從輸出層向輸入層傳遞誤差,並有效計算梯度的演算法。
- Forward Pass:模型做預測
從輸入層開始,一層一層計算每層的輸出,直到產生最終預測結果。
- Loss Function:計算誤差的方法
將模型預測結果與實際答案做比較,計算出誤差。
- Backward Pass:模型知道錯在哪,然後修正自己
利用鏈式法則(chain rule),將誤差從輸出層往回傳遞,計算各層參數的梯度,更新參數。
LeNet-5
- 時代背景:SVM, KNN 等需要人工特徵
- CNN始祖:LeNet-5:用CNN(Convolutional Neural Network)自動提取特徵
- 應用:MNIST Dataset
Architecture
- Input: 32x32x1
- Convolutional Layer 1: 6@28x28
- Kernel: 5x5
- Stride: 1
- Activation: tanh
- Pooling Layer 1: 6@14x14
- Convolutional Layer 2: 16@10x10
- Pooling Layer 2: 16@5x5
- Fully Connected Layer 1: 120
- Fully Connected Layer 2: 84
- Output Layer: 10
- Activation: softmax(轉成機率)
針對每個類別的機率(0~9的手寫數字)

Why LeNet-5 can work?
- Feature Extraction
- Convolutional Layer
- Pooling Layer
- Shard Weight
- Hierarchical structure
AlexNet
- 時代背景:LeNet-5的局限性,希望達成更複雜的任務
- TanH/Sigmoid Activation leads to vanishing gradient
- Key Points
- ReLU Activation
- GPU Training
- First time to use GPU for training
- Dropout Regularization
- Data Augmentation
- Local Response Normalization
- Overlapping Max Pooling
- Stochastic Gradient Descent with Momentum
- 應用:ImageNet Dataset
Architecture
- Input: 227x227x3
- Output: 1000
- Convolutional Layer for Feature Extraction
- Fully Connected Layer for Classification

VGGNet
- 時代背景:AlexNet使用了較大的Kernel Size,
- 提倡深度:VGGNet使用更多的Convolutional Layer,增加深度,而非增加Kernel Size。
Architecture
VGGNet-11, VGGNet-13,VGGNet-16, VGGNet-19
不同的VGGNet有不同的深度
差異:Block內的Convolutional Layer數量
- Block 1: 224x224x3
- Block 2: 112x112x64
- Block 3: 56x56x128
- Block 4: 28x28x256
- Block 5: 14x14x512
- Block 6: 7x7x512
- Fully Connected Layer: 4096
- Output: 1000
- Activation: softmax

Why Small Kernel work better?
- More Non-linear Activation
- More Parameters
- More Feature Extraction
GoogLeNet
- 時代背景:VGGNet的缺點,參數量過大
- 理念:使用更少的參數量,提高效率,但保持準確度
- Inception Block: multi-scale feature extraction
- 將不同尺度的Kernel合併
- 1x1 Convolution
- 3x3 Convolution
- 5x5 Convolution
- Max Pooling

- Concatenate: 串接在一起,將不同尺度的特徵合併
- Use 1x1 Convolution to reduce the number of channels
- 能夠降維
- 保留重要的特徵,並且減少參數量

- Why 1x1 Convolution reduce computation?
- Step1: 1x1 Convolution to reduce the number of channels
- Step2: 3x3 or 5x5 Convolution on the reduced feature map
- Result: Reduce the number of parameters
- Example: 1x1 Convolution on 64 channels to 16 channels
- 64x64x64 = 262144
- 16x64x64 = 65536
- 1/4 of the original parameters
Architecture
- Total 22 layers
- Key Components
- Stem
- 7x7 Convolution
- 3x3 Max Pooling
- 3x3 Convolution
- 9 Inception Blocks
- Global Average Pooling + Fully Connected Layer

- Parameters: Only 6.8 million (VGGNet: 138 million)
更低的參數量,但更高的準確度
問題:更深的網路,會不會有vanishing gradient的問題?
- 解決方法:Auxiliary Classifier
- 在中間的層加入一個分類器
- 用來幫助梯度傳播
- 但不會影響最終的預測結果
- 但在訓練時,會增加計算量
ResNet
- 時代背景:網路越深通常越好,但是會遇到vanishing &exploding gradient、Degradation問題。
- Don't Learn Everything, just learn the difference
- 專注於學習殘差
- 將輸入與輸出相加
- F(x) = H(x) - x → H(x) = F(x) + x
- Residual Block
- Skip connection
- 避免資訊流失

Architecture
在 VGG19 的基礎上,加入了 Residual Block,設計了ResNet-34

Lecture 6. Introduction to CNN Object Detection Models
Object detection
- Object Detection
- Two-stage
- R-CNN
- Fast R-CNN
- Faster R-CNN
- One-stage
Non-Maximum Suppression

從許多的候選框中,選擇出最有可能的框,並且去除掉重疊的框。

- Sorting: 排序所有的候選框,按照分數的高低
- Selecting: 選擇分數最高的候選框,將其加入最終的結果中
- Removing: 移除與已選擇的框重疊率(IOU)高於閾值的候選框
- Repeat: 重複步驟2-3,直到所有的候選框都被處理
R-CNN

- Region-based Convolutional Neural Networks
- two-stage object detection
- Stage1: Region Proposal Generation
- Selective Search
- 可能的物件位置
- 用大小、材質、顏色等特徵,將圖片分割成不同的區域
- 將相似的區域合併
- Stage2: CNN for classification
- Support Vector Machine
- 解決是否為該類別的任務
是貓、是狗、是人?
- 知道是什麼物件,判斷物件的類別
- Bounding Box Regression
修正框的大小
- NMS
選擇最好的框

YOLO

- You Only Look Once
- 直接預測物件的類別和位置
- regression problem
- Fast
- Global context
- Better Generalization
可以跨越資料集
- one-stage object detection
- Grid Division
- Bounding Box Prediction
- Non-Maximum Suppression

Architecture

- Input: 448x448x3
- Output: 7x7x30
- 7x7 grid
- 2 bounding boxes
- 20 classes
- [S, S, B * 5 + C]
- S: grid size
- B: bounding boxes(x, y, w, h, confidence)
- C: classes
- 告訴我們哪些格子有物件,物件的位置,物件的類別以及信心度
Loss Function
- Corrdinate Loss(Bound Box Prediction Loss)
- Confidence Loss
- Classifcation Loss
Lecture 7. Lightweighting Methods of CNN
LightWeight
- 問題:模型太大
- 移動端
- Real-time
- Cloud Computing cost
- 目標:模型輕量化
- 方法
- Method-based
- Structure-based
從現有模型去優化
Knowledge Distillation

- Teacher Model
- Student Model
讓 Student Model 學習 Teacher Model 的行為
有同樣或近似的機率分佈
- same input/ output
- softmax: 得到機率分佈
- KL Divergence: 計算兩個分佈的差異

Structure Optimization
- Pruning
並不是所有的神經元都是重要的
- Weight Pruning
丟棄不重要的權重
- L1/L2 Regularization
讓權重變得平均
- Global Pruning
去除整個模型的不重要權重
- Layer-wise Pruning
去除每個層的不重要權重(如5%)
- Structured Pruning
丟棄不重要的神經元
- Neuron Pruning
- Filter Pruning
- Block Pruning
- Dynamic Pruning
動態找出沒有貢獻的神經元
- Adaptive Pruning
- Gating Mechanism
- Conditional Computation
- Quantization
- 降低精度
儲存的權重從FP32到INT8
從INT8去推論
- 降低參數量
- Architecture Optimization
網路結構的優化
- Group Convolution

- Pointwise Convolution(1x1 Convolution)

降維,融合特徵
- Depthwise Separable Convolution
- Depthwise Convolution
- Pointwise Convolution
- Bottleneck Block

- Dilated Convolution

Lecture 8. Crafting Realities with Probabilistic Distribution
Unsupervised Learning

- 無監督學習
- 目標:是讓模型學會資料的潛在分布或結構,即使沒有標籤,也能從中找出模式或生成類似的資料。
- 常見方法:
- Clustering(K-Means):將資料分群,使同群內資料彼此相似、群與群之間差異大。

- Dimensionality Reduction(PCA):將高維資料投影到低維空間,保留最多變異量以簡化資料結構。
- PCA 1st Dimension(主成分 1):
- 是資料中變異量最大的方向(資料最「分散」的方向)。
- 投影在這個軸上可以保留最多資訊。
- PCA 2nd Dimension(主成分 2):
- 是剩餘變異量最大的方向。
- 投影在這個方向補充資料中較小的變化。

Overview of Generative Models

- 目標:生成新資料(如圖片或文字)
- 常見架構:
- Autoencoder (AE)
- Variational Autoencoder (VAE)
- GAN
- Diffusion Models
- 原理:
- 從簡單分布(如高斯分布)取樣 latent 變數
- 經過模型轉換成 output
- Latent Space 是一個結構化的低維表示空間,它將高維數據壓縮成更少的維度,同時保留數據中的關鍵變化和模式,使得相似的數據在這個空間中靠近,而不同的數據則區分開來。
Autoencoder (AE)

Autoencoder 將輸入壓縮成低維的潛在表示 ,再重建回輸出
,若重建效果好,代表抓住了輸入的關鍵特徵。

- AE
- 離散:點對點的學習(AE 學到的是固定、確定性(deterministic) 的 latent 表示,每筆輸入對應唯一一個 latent 向量。)
- 無法學習 latent space 的分布
- 單純的學習重建
- 無法生成新的資料:AE 雖然可以將某些 latent 向量丟入 decoder 產生資料,但因 latent space 沒有結構化,隨機抽樣結果不可控也難以合理生成。
- 架構:
- 學習目標:
- 限制:
- Mapping 是 deterministic
- 缺乏生成多樣性
- 無法涵蓋資料空間中未見過的區域
Variational Autoencoder (VAE)

- VAE
- 連續性:增加 latent space 的 mapping
- 透過 KL divergence 來學習 latent space 的分布
- 具有生成的能力
- Recall that Autoecoder consists of :
- Maximize:
- minimizing the reconstruction error
- Minimize:
- pulling the approximated distribution
closer to the prior
- VAE loss
- reconstruction loss + KL divergence
- 引入 機率模型:
- 編碼器輸出 ,用於生成 latent vector
VAE 架構
VAE 目標:最大化 Log-Likelihood 讓模型生成的資料分布盡可能接近真實資料分布
- Log-Likelihood 是衡量模型對觀察資料「解釋能力」的一個指標,用的是「對數後的機率值」。
- 數值更穩定
- 機率值通常很小,例如:0.00002。
- 多筆資料的 likelihood 是機率的連乘:
- 取對數後變成加總,更穩定:
- 方便計算梯度
- 訓練模型時常用 梯度下降法。
- 相乘的形式微分困難,對數轉加總後更容易對參數求導數。
- 數學性質好
- log 函數是單調遞增的,最大化 likelihood 和最大化 log-likelihood 等價。
- 但 log-likelihood 更容易優化與分析。
- VAE 透過最大化 ELBO,讓模型同時重建輸入資料並讓潛在分布接近先驗分布,以有效近似真實的資料分布。
- 因 難以計算,透過變分近似轉為 Evidence Lower Bound (ELBO):
- 重建項:最大化
- KL 項:最小化與先驗分布的差距
VAE Loss Function
KL closed-form 表達式(高斯):
Reparameterization Trick
- 目標:允許對隨機變數 ( z ) 進行反向傳播
- 方法:
- 優點:將隨機性移出模型參數,允許 gradient 傳遞
AE & VAE

CVAE (Conditional VAE)

「有條件的 VAE」,能根據輸入的 條件變數(label 或 context) 控制生成結果。
- 目標:條件生成(例如指定 class)
- 修改方式:
- Loss Function:
β-VAE

- 模型應該學到一個能夠將複雜資料(如圖像)拆解成獨立語意因子(如狗、水、草地) 的 latent 表示,這就是 disentangled representation 的目標。
- Disentangled representation(解耦表示) 是一種潛在表示方式,讓每一個維度對應到資料的一個獨立、可解釋的變因(factor of variation)。
- “我想讓這張狗照變成在雪地裡,但不改狗的品種或姿勢。”
- 在 VAE 的損失函數中,加強對 latent 分布的約束,讓每個 latent 維度能學到更獨立的語意特徵。
- 在 Loss 中放大 KL 項:
- β > 1 時鼓勵 disentangled representation(獨立變因)
Tilted VAE

- 「重新調整機率分布的形狀」,讓潛在空間的密度不再集中在中心,而是平均地分佈在球殼(spherical shell)上。
- 「改變 latent space 分布密度的結構」,讓模型能更有效使用潛在空間並產生更好的生成結果。
- 問題:高維空間下,高斯分布密度集中於殼層,表示能力不足
- 解法:
- 調整 latent space 的密度,使其分布在球殼而非中心
- 增加高密度區域的體積,提高生成樣本多樣性

VAE 缺點
- 重建圖像模糊:
- Pixel-wise loss 無法捕捉高頻細節
- 高斯先驗導致過於平滑的 latent 空間
Lecture 9. GAN- Image Generation Through Competition

- Generator (G): 生成器
- Discriminator (D): 判別器
GAN Training Process

- Step 1: Train D
- : 真實資料的機率
- : 生成資料的機率
- : 真實資料的分布
- : 隨機噪音的分布
- Maximize:
- 判別器的目標是讓真實資料的機率最大,生成資料的機率最小
- Step 2: Train G
- Minimize:
- 改良後的目標函數
- 生成器的目標是讓判別器無法分辨生成資料和真實資料
- step 3: Adversarial Process
- G 和 D 在訓練過程中輪流對抗。
- → G 試著生成更真實的資料,讓 D 必須變得更聰明來分辨真偽。
DL divergence
- KL Divergence 測量的是用 Q 來近似 P 會失去多少資訊,具方向性、常用於變分推論(如 VAE)。
-
-
-
JS divergence
- JS Divergence 是對稱的版本,適合衡量兩個分布的相似度,但在 GAN 中會有梯度消失問題。
-
-
- 有界性
- 代表 P 和 Q 完全沒有重疊(如互斥事件)
- 代表兩個分布完全不同
- 在 GAN 訓練早期,若 Generator 產出的分布與真實資料幾乎沒有重疊,會導致 JS divergence 的梯度接近 0(非無限大),這會讓 Generator 學不到東西 → 這就是所謂的「vanishing gradient problem」。
- 因此,GAN 不直接最小化 JS divergence,而是使用替代的損失(如 non-saturating loss 或 WGAN 使用 Wasserstein 距離)。
問題
⚠ GAN 中的重要觀察:
在 GAN 訓練初期,若生成器 的輸出分布與真實資料分布 幾乎沒有重疊:
- JS divergence 幾乎達到上限()
- 這時 JS divergence 對 G 的梯度幾乎為 0
- ⛔ 這會導致 Generator 無法學習(Vanishing Gradient Problem)
✅ 解法:
- 原始 GAN 改用 non-saturating loss
- Non-saturating loss 是 GAN 中為了避免 Generator 的梯度消失而設計的替代損失函數,透過最大化 提供更穩定的學習訊號。
- 更進一步的改進 → WGAN 改用 Wasserstein Distance,解決 JS divergence 的梯度問題
WGAN
- WGAN: Wasserstein GAN
- 設計一個更穩定的損失函數
- 用 Wasserstein 距離來取代 JS divergence
- 因為 JS divergence 在某些情況下會有梯度消失的問題
- 如果分布完全不重疊,JS divergence 的梯度會接近 0
- 這樣會導致 Generator 學不到東西
- Wasserstein 距離
- : 所有聯合分布為 P 和 Q 的集合
- : infimum,即所有可能值中的最小上界(不一定能被實際達到)

- 找到一個最佳的對應方式,使得兩個分布之間的距離最小
- Wasserstein 距離也被稱為 Earth Mover’s Distance,代表把一堆「土」從一個分布移動到另一個分布所需的最小「成本」。
Conclusion
- 希望判別器(Discriminator, D)能夠分辨真實資料與生成資料。
- 希望生成器(Generator, G)能夠生成越來越真實的資料。
- GAN 在訓練過程中可能會面臨以下挑戰:
- Training Instability:訓練過程不穩定,難以收斂
- Mode Collapse:生成器只學會產生少數樣本模式,缺乏多樣性
- Lack of Theoretical Guarantees:缺乏完整的收斂理論基礎
- GAN 是一個兩個模型(G 與 D)彼此對抗的訓練過程,最終目標是達成一種納許平衡(Nash Equilibrium)。
- WGAN 使用 Wasserstein 距離 取代 JS divergence,有效解決 JS divergence 在分布不重疊時產生的 梯度消失問題,使訓練更穩定。
Lecture 11. Transfomer: Sequential Model
Sequence-to-Sequence with Attention
- 序列的前後關係具有重要意義。
- 輸入序列與輸出序列的長度可以不同。
- 架構說明:
- Encoder:將輸入序列(例如英文句子)編碼成一個上下文向量(Context Vector),提取其特徵。
- Hidden Representation:將上下文向量轉換為輸出所需的隱藏特徵表示(例如抽象的語義與文法結構)。
- Decoder:根據上下文向量和隱藏特徵表示,逐步產生輸出序列(例如中文翻譯)。
Sequential Model vs Generative Model
1. 核心概念
- Generative Model:
- 目標是模擬資料的真實分佈(Learning Data Distribution)。
- 從學到的分佈中抽樣,生成新的樣本。
- 著重於「資料的可能性」以及「創造全新資料」的能力。
- Sequential Model:
- 目標是建模資料的順序性結構(Modeling Temporal/Sequential Dependencies)。
- 理解序列中前後元素之間的關聯與演變規律。
- 著重於「元素間的連貫性」與「時間上的依賴關係」。
- Example:
- 差異在於:
- Generative Model:試圖「生成」符合某個分佈的資料。
- Sequential Model:試圖「預測」序列中下一個正確的元素。
- 具體例子:
- GAN:直接生成一句自然的句子,例如 "The cat sat on the mat."
- Sequential Model:在混亂的輸入中推理正確的順序,例如從 "The mat cat sat the on." 預測正確的排列。
2. 對比整理
|
Sequential Model |
Generative Model |
核心目標 |
捕捉資料中元素之間的順序依賴 |
模擬資料的生成分佈 |
關注重點 |
時序結構(Temporal/Sequential Structure) |
整體資料分佈(Data Distribution) |
輸出特性 |
根據過去的資訊預測或理解未來元素 |
生成與訓練資料類似的新資料 |
典型範例 |
RNN, LSTM, GRU, Transformer (for sequential tasks) |
GAN, VAE, Diffusion Models, Autoregressive Models (like GPT) |
交集 |
可用於建立序列型生成模型(如 GPT、WaveNet) |
在序列資料上,許多生成式模型也採用 sequential 架構 |
3. 簡單總結
Generative Model 是在模擬「資料的分布」,Sequential Model 是在建模「資料的順序依賴」。
在處理序列資料時,兩者常常結合使用,例如:以自回歸(Autoregressive)的方式逐步生成新資料。
Introduction to Sequence-to-Sequence Model
1. The Basic Sequence Model: RNN
- RNN:
- Recurrent Neural Network:循環神經網路。
- 優點:
- 缺點:
- 記憶力有限,難以捕捉長期依賴關係(Long-term Dependencies)。
- 隨著時間步(time steps)增加,容易發生梯度消失或梯度爆炸的問題,導致訓練不穩定。
- 計算效率低,不易並行化處理。
- 因為每個時間步的計算結果依賴於前一個時間步,無法同時計算。
2. Improvement of RNN: LSTM
- LSTM:
- Long Short-Term Memory:長短期記憶網路。
- 相較於 RNN,LSTM 能夠更有效地篩選與保留重要資訊。
- 結構:
- Cell State:負責儲存長期記憶。
- Input Gate:控制新資訊的寫入量。
- Forget Gate:控制舊資訊的遺忘比例。
- Output Gate:控制輸出的資訊內容。
- 優點:
- 能夠捕捉長期依賴關係,緩解梯度問題。
- 相較於傳統 RNN,計算更穩定,部分步驟可實現並行加速。
- 缺點:
- 結構較為複雜,導致計算量增加。
- 訓練時間較長,資源需求較高。
3. 兩者的問題
- 結構差異:
- 雖然 RNN 和 LSTM 架構大體相似,但 LSTM 在每個時間步引入了更多的門控機制,以更有效地控制資訊流動。
- 共同問題:
- 長期依賴問題依然存在:
- "The cat jumped onto the branch and saw the bird's colorful feathers."
- 在非常長的序列中,早期重要資訊(如 "cat")容易在多次狀態更新後逐漸消失,導致無法有效連結遠距離的元素(如 "feathers")。
- 難以並行處理:
- 由於序列資料需要逐步處理,每個時間步依賴前一步結果,因此無法有效並行,特別在長序列下效率低下。
- 結構特點:
- 保留Encoder–Decoder架構,但不再使用 RNN 或 LSTM。
- 改用:
- 自注意力機制(Self-Attention Mechanism)
- 多頭注意力(Multi-Head Attention)
- 關鍵優勢:
- 無需循環結構,可以同時處理整個序列(並行運算)。
- 大幅提升計算效率。→平行化處理。
- 更容易捕捉長距離的依賴關係(Long-Range Dependencies)。→不會忘記早期的資訊。
- 運作方式:
- Encoder:處理輸入序列,將其轉換成上下文表示(Contextual Representations)。
- Decoder:在每個步驟中,同時關注(Attend)Encoder的輸出與先前已生成的輸出(Past Tokens),逐步產生新的序列。
1 Attention Mechanism
- 功能:根據輸入序列中各元素的關係,動態分配注意力權重。
- 簡單例子:
- 當翻譯句子 "The cat sat on the mat",在翻譯 "sat" 時,模型會特別關注 "cat",因為動作與主詞有關。
- 補充:
- Attention 可以讓模型即時選擇重要資訊,而不是平均處理所有詞。
- self-attention:
- 在同一序列內部計算注意力權重,強調詞與詞之間的關聯性。
- Self-Attention 是將當前位置的 Query 向量與所有位置的 Key 向量相乘以計算注意力權重,並利用這些權重加權該位置的 Value 資訊,從而表示該 Query 與其他位置的關聯性。
- 計算方式:
- Query、Key、Value:
- Query:當前詞的表示。
- Key:其他詞的表示。
- Value:其他詞的實際內容。
- 計算公式:
- Attention(Q, K, V) =
- Q:Query 向量。
- K:Key 向量。
- V:Value 向量。
- d_k:Key 向量的維度,用於縮放。
- 計算步驟:
- 計算 Query 和 Key 的相似度(通常用 dot product)來獲得注意力權重。
- 將注意力權重應用於 Value,得到加權平均的輸出。
2 Add & Layer Normalization
- 功能:加速訓練並穩定模型,防止梯度爆炸或消失。
- 簡單例子:
- 每個子層(例如 Attention 或 Feedforward)執行完後,會把輸出加回原輸入(Add Residual),然後做 Layer Normalization。
- 補充:
- Add:保留原始訊息。
- Layer Norm:讓每層的輸出分布更穩定,加快收斂速度。
3. Feedforward Network (FFN)
- 功能:
- 在每個位置(token)上獨立應用的小型神經網路,用來提升模型的表達能力。
- 對每個字(token)施加位置內(position-wise)變換,引入非線性,增加模型的擬合與理解能力。
- 簡單例子:
- 對每個字(token)單獨套用一個兩層的 MLP(例如:先升維、再降維),以更精細地描述該 token 所蘊含的語意資訊。
- 補充說明:
- Shared Weights:所有位置的 FFN 使用相同的參數,但彼此獨立運算,不會跨位置混合資訊。
- 作用目的:
- 引入非線性變換:Attention 機制本身偏線性,缺少非線性會使模型無法學習如強調(emphasis)、否定(negation)、情感轉折(sentiment shift)等抽象概念。
- 賦予每個 token 獨立處理能力:Attention 讓 token 互相學習,FFN 則讓每個 token 能夠自行加工自己的表達,猶如給每個 token 一個「思考過程」。
- 加強層與層之間的轉換能力:若缺少 FFN,每層模型的計算將過於類似,難以隨深度推進進行更豐富的特徵變換,削弱了模型的表達深度。
- 小提醒:
- FFN 是 Transformer 中的重要組件,去除後會大幅限制模型的表達能力和理解力。
4. Cross-Attention
- 功能:
- 在 Decoder 端,讓每個輸出位置能夠關注 Encoder 的輸出資訊。
- 有助於將輸入序列的重要資訊正確地整合到輸出中。
- 是序列到序列任務(Sequence-to-Sequence Tasks)(如翻譯)的關鍵機制。
- 簡單例子:
- 當 Decoder 要產生 "牠"(it)時,會查詢 Encoder 輸出的資訊,例如 "cat",以決定 "牠"實際指的是「貓」。
- 補充說明:
- 目的(Purpose):
- 使 Decoder 能夠直接「查看」Encoder 的輸出,以提取必要的上下文資訊。
- 協助對齊(align)並融合(incorporate)輸入序列的內容,提升生成品質。
- 運作機制(Mechanism):
- Query 來自 Decoder 的當前狀態。
- Key 和 Value 來自 Encoder 的輸出。
- Decoder 將自己的 Query 與 Encoder 的 Key 進行比對,計算出注意力權重(Attention Weights)。
- 這些權重決定從 Encoder 的每個位置取用多少 Value 的資訊。
- 最後輸出為加權和(Weighted Sum of Values),並傳遞到 Decoder 的下一層。
- 學習行為:
- Decoder 透過 Cross-Attention,學習在每個生成步驟中,應該聚焦 Encoder 輸入的哪個部分。
- 最終形成的輸出向量,捕捉了與原始輸入序列對齊的語意資訊(Context-Aware Representation)。
5 Masked Self-Attention
- 功能:在 Decoder 裡,避免「偷看」未來的詞,保證自回歸性(Autoregressive)。
- 簡單例子:
- 產生第三個字時(例如 "sat"),只能看到前兩個字 "The cat",不能看到後面的字。
- 補充:
- 透過「遮罩」(Mask)將未來資訊遮掉,確保訓練與推論一致。
6 From Representation to Prediction
- 功能:將 Transformer 輸出的向量轉成實際的預測結果。
- 簡單例子:
- 將最後的 hidden state 通過線性層(Linear Layer),映射到字典大小(Vocabulary Size),做 softmax 預測下一個單字。
- 補充:
- 這是最後一層,將高維表示(Representation)轉為具體輸出(Prediction)。