Wikipedia 元学习与迁移学习核心概念 (Wikipedia Meta-Learning and Transfer Learning Concepts)¶
来源: Wikipedia (英文维基百科)
编译时间: 2026-06-01
状态: 中英对照编译
基于: Meta-learning, Transfer learning, Few-shot learning 等条目
关联: 深度学习概念, 强化学习概念
📚 目录 (Table of Contents)¶
1. 迁移学习基础 (Transfer Learning Basics)¶
英文定义 (English Definition):
Transfer learning is a machine learning technique where a model trained on one task is reused as the starting point for a model on a second, related task. It enables leveraging knowledge from a source domain to improve learning in a target domain.
中文翻译 (Chinese Translation):
迁移学习是一种机器学习技术,其中在一个任务上训练的模型被重新用作第二个相关任务模型的起点。它使得能够利用源领域的知识来改进目标领域的学习。
迁移学习场景 (Transfer Learning Scenarios):
源域 (Source Domain) 目标域 (Target Domain)
┌─────────────────┐ ┌─────────────────┐
│ 大量标注数据 │ │ 少量标注数据 │
│ ImageNet 100 万 │ → │ 医疗图像 1000 │
│ 通用图像分类 │ │ 疾病诊断分类 │
└─────────────────┘ └─────────────────┘
│ │
└─────────→ 迁移 ──────────┘
预训练权重
迁移学习类型 (Transfer Learning Types):
| 类型 | 英文 | 中文 | 说明 |
|---|---|---|---|
| Inductive | Inductive Transfer | 归纳迁移 | 源和目标任务不同 |
| Transductive | Transductive Transfer | 直推迁移 | 源和目标任务相同,数据分布不同 |
| Unsupervised | Unsupervised Transfer | 无监督迁移 | 源和目标都无标注 |
2. 迁移学习方法 (Transfer Learning Methods)¶
2.1 特征提取 (Feature Extraction)¶
英文:
In feature extraction, the pretrained network's convolutional layers are used as fixed feature extractors, and only the final classification layer is trained on the new task.
中文:
在特征提取中,预训练网络的卷积层被用作固定特征提取器,只有最终的分类层在新任务上训练。
特征提取流程 (Feature Extraction Pipeline):
预训练模型 (如 ResNet-50)
↓
┌─────────────────┐
│ 卷积层 (冻结) │ ← 不更新梯度
│ Conv Layers │
│ (Frozen) │
└────────┬────────┘
│
↓
提取的特征
│
↓
┌─────────────────┐
│ 新分类层 (训练) │ ← 随机初始化,训练
│ New Classifier │
│ (Trainable) │
└────────┬────────┘
│
↓
目标域预测
Python 实现 (Python Implementation):
import torch
import torch.nn as nn
from torchvision import models
def feature_extraction_transfer(num_classes, freeze_layers=True):
"""
使用预训练 ResNet 进行特征提取
"""
# 加载预训练模型
model = models.resnet50(pretrained=True)
# 冻结卷积层
if freeze_layers:
for param in model.parameters():
param.requires_grad = False
# 替换最后的全连接层
num_features = model.fc.in_features
model.fc = nn.Linear(num_features, num_classes)
return model
# 使用示例
model = feature_extraction_transfer(num_classes=10)
# 只有新分类层的参数需要优化
optimizer = torch.optim.Adam(
filter(lambda p: p.requires_grad, model.parameters()),
lr=0.001
)
2.2 微调 (Fine-tuning)¶
英文:
Fine-tuning involves unfreezing some or all of the pretrained layers and training them on the new task with a lower learning rate.
中文:
微调涉及解冻一些或所有预训练层,并用较低的学习率在新任务上训练它们。
微调策略 (Fine-tuning Strategies):
| 策略 | 英文 | 中文 | 适用场景 |
|---|---|---|---|
| Full fine-tuning | 全量微调 | 所有层都训练 | 目标域数据充足 |
| Partial fine-tuning | 部分微调 | 仅训练高层 | 目标域数据较少 |
| Layer-wise LR | 分层学习率 | 不同层不同 LR | 精细调优 |
| Differential LR | 差异学习率 | 预训练层 LR 更低 | 防止灾难性遗忘 |
Python 实现 (Python Implementation):
def fine_tune_with_differential_lr(model, base_lr=0.001):
"""
使用差异学习率进行微调
"""
# 早期层使用更小的学习率
early_layers_lr = base_lr * 0.1
# 后期层使用较大学习率
later_layers_lr = base_lr
# 分类层使用最大学习率
classifier_lr = base_lr * 10
# 参数分组
early_params = []
later_params = []
classifier_params = []
for name, param in model.named_parameters():
if 'layer4' in name or 'fc' in name:
classifier_params.append(param)
elif 'layer3' in name:
later_params.append(param)
else:
early_params.append(param)
optimizer = torch.optim.Adam([
{'params': early_params, 'lr': early_layers_lr},
{'params': later_params, 'lr': later_layers_lr},
{'params': classifier_params, 'lr': classifier_lr}
])
return optimizer
2.3 域自适应 (Domain Adaptation)¶
英文:
Domain adaptation is a type of transfer learning where the source and target domains have different data distributions, and the goal is to adapt the model to the target domain.
中文:
域自适应是一种迁移学习,其中源域和目标域有不同的数据分布,目标是使模型适应目标域。
域对抗训练 (Domain Adversarial Training):
域对抗神经网络 (DANN):
输入 x
│
↓
┌──────────────┐
│ 特征提取器 │ G
│ Feature │
│ Extractor │
└──────┬───────┘
│
├──────────────┬──────────────┐
↓ ↓ ↓
┌───────────┐ ┌───────────┐ ┌───────────┐
│ 标签预测器 │ │ 域分类器 │ │ 梯度反转层 │
│ Label │ │ Domain │ │ Gradient │
│ Predictor│ │ Classifier│ │ Reversal │
└─────┬─────┘ └─────┬─────┘ └─────┬─────┘
│ │ │
↓ ↓ │
任务损失 域损失 │
L_task L_domain │
│ │ │
└──────┬──────┘ │
↓ │
总损失 = L_task - λ×L_domain │
│
←────────────────────┘
反转梯度
Python 实现 (Python Implementation):
import torch
import torch.nn as nn
class GradientReversal(torch.autograd.Function):
"""梯度反转层"""
@staticmethod
def forward(ctx, x, alpha):
ctx.alpha = alpha
return x.view_as(x)
@staticmethod
def backward(ctx, grad_output):
return grad_output.neg() * ctx.alpha, None
def grad_reverse(x, alpha=1.0):
return GradientReversal.apply(x, alpha)
class DANN(nn.Module):
"""域对抗神经网络"""
def __init__(self, num_classes, feature_dim=2048):
super(DANN, self).__init__()
# 特征提取器
self.feature_extractor = nn.Sequential(
nn.Linear(feature_dim, 256),
nn.ReLU(),
nn.Dropout(0.5)
)
# 标签预测器
self.label_predictor = nn.Linear(256, num_classes)
# 域分类器
self.domain_classifier = nn.Sequential(
nn.Linear(256, 128),
nn.ReLU(),
nn.Linear(128, 2) # 源域/目标域
)
def forward(self, x, alpha=1.0):
features = self.feature_extractor(x)
# 标签预测
label_output = self.label_predictor(features)
# 域分类 (带梯度反转)
reversed_features = grad_reverse(features, alpha)
domain_output = self.domain_classifier(reversed_features)
return label_output, domain_output
def dann_loss(label_output, labels, domain_output, domain_labels, alpha=1.0):
"""DANN 损失"""
criterion = nn.CrossEntropyLoss()
# 标签损失
label_loss = criterion(label_output, labels)
# 域损失
domain_loss = criterion(domain_output, domain_labels)
# 总损失
total_loss = label_loss - alpha * domain_loss
return total_loss, label_loss, domain_loss
3. 元学习基础 (Meta-Learning Basics)¶
英文定义:
Meta-learning, also known as "learning to learn", is a machine learning approach where models are trained to quickly adapt to new tasks with limited data by learning the learning algorithm itself.
中文翻译:
元学习,也称为"学会学习",是一种机器学习方法,其中模型通过学习学习算法本身来快速适应具有有限数据的新任务。
元学习 vs 传统学习 (Meta-Learning vs Traditional Learning):
| 方面 | 传统机器学习 | 元学习 |
|---|---|---|
| 学习目标 | 解决特定任务 | 学会快速适应新任务 |
| 训练数据 | 单个任务的大量数据 | 多个任务的分布 |
| 测试 | 同分布数据 | 新任务,少样本 |
| 优化 | 最小化任务损失 | 最小化适应后的损失 |
元学习设置 (Meta-Learning Setting):
元训练 (Meta-Training):
任务分布 P(T)
│
↓
采样任务 T₁, T₂, ..., Tₙ
│
↓
每个任务有支持集和查询集
│
↓
学习元参数 θ
│
↓
能够快速适应新任务
元测试 (Meta-Test):
新任务 T_new
│
↓
使用少量支持集样本
│
↓
快速适应 (几步梯度)
│
↓
在查询集上评估
4. 元学习算法 (Meta-Learning Algorithms)¶
4.1 MAML (Model-Agnostic Meta-Learning)¶
英文:
MAML is a meta-learning algorithm that learns model parameters such that a small number of gradient steps on a new task will produce good generalization on that task.
中文:
MAML 是一种元学习算法,它学习模型参数,使得在新任务上进行少量梯度步数就能在该任务上产生良好的泛化。
MAML 算法 (MAML Algorithm):
MAML 流程:
1. 采样一批任务 {Tᵢ}
2. 对于每个任务 Tᵢ:
a. 从支持集采样训练数据 Dᵢ^train
b. 计算适应参数: θᵢ' = θ - α∇θ L(θ, Dᵢ^train)
c. 从查询集采样测试数据 Dᵢ^test
d. 计算测试损失: L(θᵢ', Dᵢ^test)
3. 更新元参数:
θ ← θ - β∇θ Σᵢ L(θᵢ', Dᵢ^test)
4. 重复直到收敛
MAML 公式 (MAML Formula):
Python 实现 (Python Implementation):
import torch
import torch.nn as nn
import torch.optim as optim
class MAML:
def __init__(self, model, inner_lr=0.01, outer_lr=0.001, num_inner_steps=1):
self.model = model
self.inner_lr = inner_lr
self.outer_lr = outer_lr
self.num_inner_steps = num_inner_steps
self.outer_optimizer = optim.Adam(model.parameters(), lr=outer_lr)
def inner_loop(self, support_data, support_labels):
"""内循环:任务特定的适应"""
# 创建模型的副本用于内循环
adapted_model = type(self.model)()
adapted_model.load_state_dict(self.model.state_dict())
adapted_model.train()
# 内循环优化器
inner_optimizer = optim.SGD(adapted_model.parameters(), lr=self.inner_lr)
# 内循环梯度步
for _ in range(self.num_inner_steps):
inner_optimizer.zero_grad()
outputs = adapted_model(support_data)
loss = nn.functional.cross_entropy(outputs, support_labels)
loss.backward()
inner_optimizer.step()
return adapted_model
def outer_loop(self, tasks):
"""外循环:元参数更新"""
self.outer_optimizer.zero_grad()
total_outer_loss = 0
for task in tasks:
support_data, support_labels = task['support']
query_data, query_labels = task['query']
# 内循环适应
adapted_model = self.inner_loop(support_data, support_labels)
# 在查询集上评估
query_outputs = adapted_model(query_data)
query_loss = nn.functional.cross_entropy(query_outputs, query_labels)
total_outer_loss += query_loss
# 元更新
total_outer_loss.backward()
self.outer_optimizer.step()
return total_outer_loss.item() / len(tasks)
4.2 原型网络 (Prototypical Networks)¶
英文:
Prototypical Networks learn a metric space where classification is performed by comparing the distance to prototype representations of each class.
中文:
原型网络学习一个度量空间,其中通过比较到每个类原型表示的距离来执行分类。
原型计算 (Prototype Computation):
其中: - \(c_k\): 类 k 的原型 - \(S_k\): 类 k 的支持集样本 - \(f_\theta\): 嵌入网络
预测公式 (Prediction Formula):
其中 \(d\) 是距离函数 (如欧氏距离)。
4.3 关系网络 (Relation Networks)¶
英文:
Relation Networks learn a deep distance metric for few-shot classification, where both the embedding and the distance metric are learned.
中文:
关系网络学习用于少样本分类的深度距离度量,其中嵌入和距离度量都被学习。
关系分数 (Relation Score):
其中: - \(f_\theta\): 嵌入网络 - \(c_k\): 类 k 的原型 - \(g_\phi\): 关系网络 - \([\cdot, \cdot]\): 拼接操作
5. 少样本学习 (Few-Shot Learning)¶
5.1 少样本学习设置 (Few-Shot Learning Setting)¶
英文:
Few-shot learning is the problem of learning to recognize new classes given only a few labeled examples per class.
中文:
少样本学习是在每个类只有少量标注样本的情况下学习识别新类的问题。
N-way K-shot 设置 (N-way K-shot Setting):
| 参数 | 英文 | 中文 | 示例 |
|---|---|---|---|
| N-way | N-way | N 路 | 5 个不同的类 |
| K-shot | K-shot | K 样本 | 每个类 5 个样本 |
| Query | Query | 查询 | 每个类 15 个查询样本 |
示例:5-way 5-shot: - 5 个类 - 每个类 5 个支持样本 (共 25 个) - 每个类 15 个查询样本 (共 75 个)
5.2 少样本学习方法对比 (Few-Shot Methods Comparison)¶
| 方法 | 类型 | 优点 | 缺点 | 典型应用 |
|---|---|---|---|---|
| MAML | 基于优化 | 模型无关,灵活 | 二阶导数,计算量大 | 分类、回归、RL |
| 原型网络 | 基于度量 | 简单高效 | 固定距离度量 | 图像分类 |
| 关系网络 | 基于度量 | 学习距离度量 | 需要额外网络 | 图像分类 |
| 匹配网络 | 基于度量 | 注意力机制 | 内存密集 | 文本、图像 |
| Reptile | 基于优化 | 一阶近似,简单 | 效果略逊于 MAML | 通用 |
6. 应用与比较 (Applications and Comparison)¶
6.1 迁移学习应用 (Transfer Learning Applications)¶
| 应用领域 | 英文 | 中文 | 典型方法 |
|---|---|---|---|
| 计算机视觉 | Computer Vision | 计算机视觉 | ImageNet 预训练 |
| 自然语言处理 | NLP | 自然语言处理 | BERT、GPT 微调 |
| 医疗影像 | Medical Imaging | 医疗影像 | 自然图像→医疗图像 |
| 语音识别 | Speech Recognition | 语音识别 | 多语言迁移 |
| 推荐系统 | Recommendation | 推荐系统 | 跨域推荐 |
6.2 元学习应用 (Meta-Learning Applications)¶
| 应用领域 | 英文 | 中文 | 典型方法 |
|---|---|---|---|
| 少样本分类 | Few-Shot Classification | 少样本分类 | MAML、原型网络 |
| 少样本回归 | Few-Shot Regression | 少样本回归 | MAML |
| 强化学习 | Reinforcement Learning | 强化学习 | Meta-RL |
| 神经架构搜索 | NAS | 神经架构搜索 | Meta-NAS |
| 超参数优化 | Hyperparameter Optimization | 超参数优化 | 学习优化器 |
6.3 预训练模型比较 (Pre-trained Model Comparison)¶
视觉模型 (Vision Models):
| 模型 | 训练数据 | 参数量 | 典型用途 |
|---|---|---|---|
| ResNet-50 | ImageNet | 25M | 通用特征提取 |
| ViT-B/16 | ImageNet-21K | 86M | 视觉 Transformer |
| CLIP | 4 亿图像 - 文本对 | 150M | 零样本迁移 |
| DINO | ImageNet (自监督) | 86M | 无标注特征 |
语言模型 (Language Models):
| 模型 | 训练数据 | 参数量 | 典型用途 |
|---|---|---|---|
| BERT-base | Wikipedia + Books | 110M | 文本理解 |
| GPT-3 | 互联网文本 | 175B | 文本生成 |
| T5 | C4 语料 | 11B | 文本到文本 |
| RoBERTa | 更大规模语料 | 355M | 改进版 BERT |
🔑 关键术语对照表 (Glossary)¶
| English | 中文 | 定义 |
|---|---|---|
| Transfer learning | 迁移学习 | 利用源领域知识改进目标领域学习 |
| Fine-tuning | 微调 | 在预训练模型上进一步训练 |
| Domain adaptation | 域自适应 | 适应不同数据分布的目标域 |
| Meta-learning | 元学习 | 学会如何快速学习新任务 |
| Few-shot learning | 少样本学习 | 从少量样本中学习 |
| N-way K-shot | N 路 K 样本 | 少样本学习的标准设置 |
| MAML | MAML | 模型无关元学习算法 |
| Prototypical network | 原型网络 | 基于原型的少样本分类 |
| Support set | 支持集 | 用于适应的少量训练样本 |
| Query set | 查询集 | 用于评估的测试样本 |
| Pre-trained model | 预训练模型 | 在大规模数据上预训练的模型 |
| Feature extraction | 特征提取 | 使用预训练模型提取特征 |
| Domain adversarial | 域对抗 | 对抗训练用于域适应 |
编译完成时间: 2026-06-01
来源: Wikipedia Transfer learning, Meta-learning, Few-shot learning 等条目
关联文档: deep-learning-concepts-zh-en.md