1. 课程引言:概览与学习指南

1.1 课程设计背景

随着人工智能技术的快速发展,机器学习与深度学习已成为各行业(如电商、医疗、金融)的核心支撑技术。本课程从基础概念出发,结合实战项目,帮助学习者构建 “理论理解 - 工具使用 - 实际应用” 的完整知识体系,掌握解决真实业务问题的能力。

1.2 课程设计思路

  • 循序渐进:从传统机器学习到深度学习,再到强化学习,逐步深入复杂概念
  • 理论 + 实战:每个知识点配套代码示例,最终通过实战项目(电商 SKU 卡片生成)串联核心技能
  • 问题导向:以实际业务场景(如图像分类、文本摘要)为驱动,理解技术适用边界

1.3 学习建议

  • 重视基础概念:如 “损失函数”" 梯度下降 " 等核心概念是后续复杂模型的基础
  • 动手实践:PyTorch 代码需逐行调试,理解数据流转逻辑
  • 关联应用:思考每个算法在实际业务中的可能场景(如电商中的商品分类、用户评论情感分析)
  • 总结对比:同类技术(如不同激活函数、归一化方法)需对比优缺点及适用场景

1.4 实战环境说明

  • 开发工具:Python 3.8+、PyTorch 1.10+、Jupyter Notebook
  • 依赖库:torchvision(图像处理)、transformers(文本处理)、scikit-learn(评估工具)
  • 硬件建议:CPU 可运行基础代码,GPU(如 NVIDIA GTX 1080+)加速深度学习训练

2. 机器学习基础

2.1 常见机器学习任务

机器学习任务按 “是否有标签” 可分为监督学习无监督学习,此外还有半监督学习、自监督学习等衍生类型。

2.1.1 监督学习
  • 核心特点:输入数据包含标签(目标值),模型学习 “输入 - 标签” 的映射关系
  • 典型任务:
    • 回归:标签为连续值(如房价预测、用户点击率预估)
      • 输入:特征(如房屋面积、楼层、地段)
      • 输出:连续数值(如房价)
    • 分类:标签为离散值
      • 二分类:标签只有 2 类(如垃圾邮件识别:“垃圾"vs"正常”)
      • 多分类:标签有 3 类及以上(如手写数字识别:0-9 共 10 类)
      • 输入:特征(如邮件文本特征、图像像素)
      • 输出:类别标签或类别概率
2.1.2 无监督学习
  • 核心特点:输入数据无标签,模型从数据中挖掘内在规律(如结构、分布)
  • 典型任务:
    • 聚类:将相似样本归为一类(如用户分群:根据购买行为划分用户群体)
      • 输入:无标签样本(如用户购买记录)
      • 输出:簇标签(表示样本所属群体)
    • 降维:减少特征维度,保留关键信息(如高维图像特征压缩)
      • 输入:高维特征(如 1000 维的图像特征)
      • 输出:低维特征(如 200 维的压缩特征)

2.2 常见机器学习算法

算法类型 适用场景 优点 缺点
线性回归 回归任务(如房价预测) 简单易解释,训练快 只能拟合线性关系,对非线性数据效果差
逻辑回归 二分类任务(如 churn 预测) 输出概率可解释,计算高效 表达能力有限,需手动设计特征
支持向量机(SVM) 小样本分类 / 回归 泛化能力强,适合高维数据 大规模数据训练慢,参数调优复杂
决策树 分类 / 回归(如信贷风控) 可解释性强,无需特征归一化 易过拟合,不稳定(微小数据变化影响大)
随机森林 分类 / 回归(工业界常用) 抗过拟合,性能稳定 模型较复杂,解释性弱于单棵决策树
K - 均值(K-Means) 聚类任务(如用户分群) 实现简单,适用于大规模数据 需预设 K 值,对异常值敏感
主成分分析(PCA) 降维(如数据可视化、去噪) 计算高效,保留主要信息 仅保留线性相关信息,解释性有限

3. 深度学习核心

3.1 深度学习任务版图

深度学习通过多层神经网络拟合复杂数据分布,已广泛应用于多模态任务:

  • 计算机视觉(CV)

    • 核心任务:图像分类、目标检测、语义分割、图像生成(如电商商品图分类)
    • 代表模型:ResNet、YOLO、Stable Diffusion
  • 自然语言处理(NLP)

    • 核心任务:文本分类、命名实体识别、机器翻译、文本摘要(如商品描述生成)
    • 代表模型:BERT、GPT、T5
  • 音频处理

    • 自动语音识别(ASR):语音转文本(如客服语音转工单)
    • 文本转语音(TTS):文本合成语音(如商品信息语音播报)
    • 代表模型:Wav2Vec、Tacotron
  • 多模态学习

    • 核心任务:跨模态检索(图搜文 / 文搜图)、图文生成(如根据商品图生成描述)
    • 代表模型:CLIP、DALL・E

3.2 深度学习训练要素

3.2.1 神经网络基础
  • 结构:由输入层、隐藏层、输出层组成,层与层之间通过权重(参数) 连接
  • 功能:通过权重学习数据特征,实现从输入到输出的映射
3.2.2 激活函数

激活函数为神经网络引入非线性,使其能拟合复杂关系(核心知识点):

激活函数 公式 特点 应用场景
Sigmoid σ(x)=1/(1+e−x) 输出在 (0,1),可表示概率;易梯度消失 二分类输出层、早期网络隐藏层
Softmax softmax(xi​)=exi​/∑exj​ 输出和为 1,可表示多类别概率 多分类输出层
Tanh tanh(x)=(ex−e−x)/(ex+e−x) 输出在 (-1,1),零中心化;仍有梯度消失 循环神经网络(RNN)隐藏层
ReLU ReLU(x)=max(0,x) 计算快,缓解梯度消失;存在死亡 ReLU 卷积神经网络(CNN)隐藏层
GELU GELU(x)=x⋅Φ(x)(Φ为高斯分布 CDF) 平滑非线性,对噪声鲁棒 Transformer(如 BERT、GPT)
3.2.3 损失函数

衡量模型预测与真实标签的差距,是训练的 “优化目标”:

  • 回归任务:均方误差(MSE)、平均绝对误差(MAE)
  • 分类任务:交叉熵损失(二分类用二元交叉熵,多分类用 categorical 交叉熵)
  • 特殊任务:对比损失(用于度量学习)、Dice 损失(用于分割任务)
3.2.4 训练超参数
  • 学习率(Learning Rate):控制权重更新幅度(如 0.001),过大会发散,过小会训练慢
    • 学习率调度器:动态调整学习率(如 StepLR、CosineAnnealing)
  • 批大小(Batch Size):每次迭代输入模型的样本数(如 32、64),影响训练稳定性和速度
  • Epoch/Step
    • Epoch:遍历完所有训练数据的次数
    • Step:每处理一个批次数据为一个 Step(1 Epoch = 总样本数 / 批大小 个 Step)
  • 早停(Early Stopping):当验证集性能不再提升时停止训练,防止过拟合
3.2.5 优化器

用于更新权重以最小化损失函数:

  • SGD:随机梯度下降,基础优化器,可加动量(Momentum)加速收敛
  • Adam:结合动量和自适应学习率,适用于大多数场景(推荐新手优先使用)
  • RMSprop:自适应学习率优化器,适合处理非平稳目标

3.3 正则化与归一化(核心知识点)

3.3.1 正则化:防止过拟合
  • L1 正则化:损失函数中加入权重绝对值之和(L1=λ∑∣w∣),会产生稀疏权重(部分权重为 0)
  • L2 正则化:损失函数中加入权重平方和(L2=λ∑w2),使权重趋于较小值,更稳定
  • Dropout:训练时随机让部分神经元失效(如概率 0.5),迫使网络学习鲁棒特征,测试时恢复所有神经元
3.3.2 归一化:稳定训练
  • BatchNorm:对每个批次的特征做归一化(均值 0,方差 1),加速收敛,缓解内部协变量偏移
    • 适用:CNN(输入分布较稳定的场景)
  • LayerNorm:对单个样本的所有特征做归一化,不依赖批次
    • 适用:RNN、Transformer(序列长度可变的场景)
  • GroupNorm:将特征分组,对每组做归一化,平衡 BatchNorm 和 LayerNorm
    • 适用:小批量数据(如目标检测)
  • RMSNorm:基于均方根的归一化,计算更高效
    • 适用:大模型(如 GPT 系列)

3.4 数据增强(核心知识点)

通过对原始数据进行变换,扩充数据集,提升模型泛化能力:

  • 图像增强

    • 几何变换:随机裁剪、翻转(水平 / 垂直)、旋转、缩放
    • 像素变换:颜色抖动(亮度 / 对比度 / 饱和度)、高斯噪声、模糊
    • 应用:电商商品图分类(减少拍摄角度、光线对模型的影响)
  • 文本增强

    • 同义替换:用同义词替换部分词语(如 “优秀"→"杰出”)
    • 回译:将文本翻译成其他语言再译回(如中→英→中)
    • 随机插入 / 删除:在文本中插入无关词或删除部分词语
    • 应用:商品标题摘要(提升模型对不同表述的鲁棒性)
  • 音频增强

    • SpecAugment:在频谱图上随机遮挡部分频率或时间区域
    • 噪声注入:加入环境噪声(如背景人声)
    • 应用:语音识别(提升在嘈杂环境中的性能)

4. 评估指标与可解释性

4.1 分类任务评估指标

4.1.1 混淆矩阵

二分类混淆矩阵(4 个核心指标):

  • TP(True Positive):正例被正确预测为正例
  • TN(True Negative):负例被正确预测为负例
  • FP(False Positive):负例被错误预测为正例(误报)
  • FN(False Negative):正例被错误预测为负例(漏报)
4.1.2 核心指标
  • 准确率(Accuracy):(TP+TN)/(TP+TN+FP+FN),整体正确率(不适用于不平衡数据)
  • 精确率(Precision):TP/(TP+FP),预测为正例的样本中真实正例的比例(关注 “预测准不准”)
  • 召回率(Recall):TP/(TP+FN),真实正例中被正确预测的比例(关注 “漏没漏”)
  • F1 分数:精确率和召回率的调和平均(2∗(P∗R)/(P+R)),平衡两者
  • ROC-AUC
    • ROC 曲线:以假正例率(FPR=FP/(FP+TN))为横轴,真正例率(TPR=Recall)为纵轴
    • AUC:ROC 曲线下面积,衡量模型区分正负例的能力(越接近 1 越好)
  • PR-AUC
    • PR 曲线:以召回率为横轴,精确率为纵轴
    • 适用于不平衡数据(如罕见疾病检测,正例极少)

4.2 可解释性

  • 目的:理解模型决策依据(如 “模型为什么将这个商品归为 ’ 电子产品 '”)
  • 方法:
    • 模型层面:选择可解释模型(如决策树)
    • 事后解释:LIME(局部可解释)、SHAP(基于博弈论,全局解释)

5. 强化学习基础:最小闭环

5.1 MDP 五元组(马尔可夫决策过程)

强化学习的数学框架,包含:

  • S:状态空间(如游戏中当前画面)
  • A:动作空间(如游戏中的上下左右)
  • P:状态转移概率(P(s′∣s,a):在状态s执行动作a后到s′的概率)
  • R:奖励函数(R(s,a,s′):从s经a到s′的即时奖励)
  • γ:折扣因子(未来奖励的衰减系数,0<γ<1)

5.2 Bellman 递推

  • 核心思想:当前状态的价值由即时奖励和未来状态的价值决定
  • 状态值函数V(s):V(s)=E[R+γV(s′)∣s]
  • 动作值函数Q(s,a):Q(s,a)=E[R+γQ(s′,a′)∣s,a]

5.3 核心方法对比

方法 核心思路 优缺点
值函数(Value-Based) 学习值函数V(s)或Q(s,a),基于值选动作 稳定性好,适合简单环境;难处理连续动作空间
策略梯度(Policy Gradient) 直接学习策略 $\pi (a s)$,通过梯度上升最大化累积奖励 适合连续动作空间;样本效率低,方差大
Actor-Critic 结合两者:Actor 学策略,Critic 学值函数(指导 Actor 更新) 平衡稳定性和样本效率;实现较复杂

6. 实战:电商 SKU 卡片生成

6.1 任务目标

从电商商品原始数据(多图、长文本描述)生成标准化 SKU 卡片(含分类标签、精简描述、代表性图片)。

6.2 技术流程

  1. 数据增强

    • 图像:对商品图进行随机裁剪、翻转,扩充训练集
    • 文本:对商品长描述做同义替换,提升模型对不同表述的适应性
  2. 图片分类

    • 任务:将商品图分为预设类别(如 “服装”" 家电 "“食品”)
    • 模型:使用预训练 ResNet,冻结部分权重,微调分类头
    • 评估:用 F1 分数评估分类性能
  3. 文本摘要

    • 任务:将长描述压缩为 10-20 字的精简标题
    • 模型:使用预训练 T5 模型(“摘要生成” 任务微调)
    • 评估:用 ROUGE 分数(文本相似度)评估摘要质量
  4. 卡片整合

    • 结合分类结果、摘要、增强后的代表性图片,生成 SKU 卡片

6.3 关键代码框架

# 图像增强(PyTorch)
from torchvision import transforms
train_transform = transforms.Compose([
    transforms.RandomResizedCrop(224),
    transforms.RandomHorizontalFlip(),
    transforms.ColorJitter(brightness=0.2, contrast=0.2),
    transforms.ToTensor()
])

# 图片分类模型(基于ResNet)
import torchvision.models as models
model = models.resnet50(pretrained=True)
model.fc = torch.nn.Linear(model.fc.in_features, num_classes=10)  # 10个商品类别

# 文本摘要(基于T5)
from transformers import T5Tokenizer, T5ForConditionalGeneration
tokenizer = T5Tokenizer.from_pretrained("t5-small")
model = T5ForConditionalGeneration.from_pretrained("t5-small")
input_text = "summarize: " + 商品长描述
inputs = tokenizer(input_text, return_tensors="pt", max_length=512, truncation=True)
outputs = model.generate(inputs["input_ids"], max_length=30, num_beams=4)
summary = tokenizer.decode(outputs[0], skip_special_tokens=True)

7. PyTorch 基础(核心知识点)

7.1 核心概念

  • Tensor:张量(多维数组),PyTorch 的基本数据结构,支持 GPU 加速

    import torch
    x = torch.tensor([[1,2],[3,4]], dtype=torch.float32, device="cuda")  #  GPU上的2D张量
    
  • Module:神经网络模块基类,自定义模型需继承并实现forward方法

    class SimpleModel(torch.nn.Module):
        def __init__(self):
            super().__init__()
            self.fc = torch.nn.Linear(10, 2)  # 输入10维,输出2维
        def forward(self, x):
            return self.fc(x)
    
  • Optimizer:优化器,用于更新模型参数

    model = SimpleModel()
    optimizer = torch.optim.Adam(model.parameters(), lr=0.001)  # Adam优化器
    
  • Dataset & DataLoader:数据加载工具

    from torch.utils.data import Dataset, DataLoader
    class MyDataset(Dataset):
        def __len__(self): return 100
        def __getitem__(self, idx): return torch.tensor([idx]), torch.tensor(idx%2)
    dataloader = DataLoader(MyDataset(), batch_size=32, shuffle=True)  # 批量加载数据
    
  • AMP(自动混合精度):通过混合 float16 和 float32 加速训练,减少内存占用

    scaler = torch.cuda.amp.GradScaler()
    with torch.cuda.amp.autocast():
        outputs = model(inputs)
        loss = loss_fn(outputs, labels)
    scaler.scale(loss).backward()  # 缩放损失,避免梯度下溢
    scaler.step(optimizer)
    scaler.update()
    

7.2 核心工作流

  1. 定义模型(继承 Module)
  2. 准备数据(Dataset+DataLoader)
  3. 定义损失函数和优化器
  4. 训练循环:
    • 前向传播(计算输出和损失)
    • 反向传播(计算梯度)
    • 优化器更新参数
    • 验证集评估性能

总结与拓展

本周覆盖了机器学习与深度学习的核心基础,包括任务类型、算法原理、训练要素、评估方法及实战应用。后续学习可重点关注:

  • 复杂模型(如 Transformer)的内部结构
  • 大规模预训练模型的微调技巧
  • 实际业务中的数据清洗与特征工程
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐