Course 3:机器学习策略(下)
课程简介
迁移学习、多任务学习、端到端学习等高级项目设计策略。
一、迁移学习
迁移学习是在大型数据集上预训练模型,然后在目标任务上微调。
1.1 核心流程
预训练→替换输出层→微调:
# 加载预训练模型
base_model = load_model('imagenet_weights.h5')
base_model.pop() # 移除输出层
# 添加新分类器
x = base_model.output
x = Dense(256, activation='relu')(x)
output = Dense(num_classes, activation='softmax')(x)
model = Model(inputs=base_model.input, outputs=output)
# 冻结预训练层(数据少时)
for layer in model.layers[:-3]:
layer.trainable = False
model.compile(optimizer=Adam(lr=1e-4), loss='categorical_crossentropy')
model.fit(X_train, y_train, epochs=10)
1.2 微调策略选择
- 数据极少:冻结所有预训练层,只训练新分类器
- 数据中等:微调最后几层
- 数据充足:全网络微调,使用较小学习率
1.3 迁移学习何时失效
预训练与目标任务分布差异太大(自然图像→医学影像),或目标任务数据充足。
二、多任务学习
一个网络同时学习多个任务。示例:自动驾驶同时检测行人、车辆、交通标志、交通灯。
损失函数:$J = \frac{1}{m}\sum_i\sum_j \mathcal{L}(\hat{y}_j^{(i)}, y_j^{(i)})$
有效条件:任务共享低层特征、单个任务数据有限、网络足够大。
三、端到端学习
传统流水线:音频→特征提取→声学模型→语言模型→文本
端到端:音频→神经网络→文本
优点:免去手工特征工程、简化系统设计、全局联合优化
缺点:需要大量数据、排除有用先验知识、可解释性差
Andrew Ng建议:数据不足时用混合方法;随数据增长逐步向端到端推进。
四、项目实践建议
- 快速搭建第一个系统(能跑通就行)
- 分析系统瓶颈(偏差/方差分析、误差分析)
- 针对性改进(基于分析结果)
- 重复步骤2-3
数据质量常比模型复杂度更重要。持续收集和标注真实场景数据。
延伸阅读
- 📺 B 站播放列表:Deep Learning Specialization — 深度学习专项课程
- 📚 更多学习资源,请访问 deeplearning.ai 官网