Advanced Learning Algorithms

Advanced Learning Algorithms

第四周:神经网络(Neural Networks)——从直觉到实现

1. 神经网络直觉
  • 灵感来源:生物神经元简化模型。
  • 能力:自动学习复杂特征,解决非线性问题(如需求预测、图像识别)。
2. 神经网络模型
  • **层 (Layer)**:输入层、隐藏层、输出层的堆叠。
  • **前向传播 (Forward Propagation)**:逐层计算激活值,最终输出预测。
  • 数学表达a[l] = g(W[l]·a[l-1] + b[l]),其中 g 为激活函数(如 Sigmoid)。
  • 架构演变:单层 → 多隐藏层(深度网络),层数越多能学习越抽象的特征。
3. 两种实现方式
  • TensorFlow / Keras

    1
    2
    3
    4
    5
    6
    model = Sequential([
    Dense(units=25, activation='sigmoid'),
    Dense(units=15, activation='sigmoid'),
    Dense(units=1, activation='sigmoid')
    ])
    model.predict(X)
  • 从零实现(NumPy):手动编写矩阵乘法与激活函数,加深对向量化理解。

  • 向量化(可选):用矩阵运算替代显式 for 循环,利用并行计算加速。

项目应用提示

  • 遇到线性回归/逻辑回归误差依然很高时,尝试使用包含一两个隐藏层的神经网络。
  • 先用 TensorFlow 快速搭建原型,再根据需要手动实现关键部分以加深调试能力。

第五周:神经网络训练与多分类

1. 模型训练细节
  • 步骤:指定损失函数和优化器后,调用 model.fit(X, y, epochs=...)
  • 训练本质:通过反向传播与梯度下降不断更新权重和偏置。
2. 激活函数选择
  • Sigmoid:输出 (0,1),只用于二分类输出层
  • ReLUmax(0, z),计算快、缓解梯度消失,隐藏层默认首选
  • 线性激活:直接输出加权和,用于回归输出层
  • 为什么需要非线性:若无激活函数(或线性激活),多层网络仍等价于线性模型。
3. 多分类 (Multiclass Classification)
  • Softmax 回归:输出层采用 Softmax,输出每个类别的概率,和为 1。
  • 损失函数:稀疏分类交叉熵 SparseCategoricalCrossentropy
  • 代码改进:输出层设为 linear,损失函数加 from_logits=True,提升数值稳定性。
  • 多标签分类(可选):每个样本可属于多个类别,输出层用 Sigmoid 分别独立判断。
4. 高级优化与层类型
  • Adam 优化器:自适应学习率,通常比梯度下降收敛更快、更稳定。
  • 其他层类型:课程引入卷积层、全连接层等概念(后续课程会深入)。
5. 反向传播(可选)
  • 利用链式法则逐层计算损失对各参数的梯度。
  • 计算图帮助可视化梯度流动。

项目应用提示

  • 隐藏层统一用 ReLU;二分类输出层用 Sigmoid;多分类输出层用 Softmax;回归输出层用 线性
  • 训练时优先使用 Adam 优化器,通常无需手动细调学习率。
  • 从二分类扩展到多分类,只需改输出层单元数和损失函数,其余结构可复用。

第六周:应用机器学习的实践建议

1. 模型评估与选择
  • 数据集划分:训练集 / 交叉验证集 / 测试集(如 60%/20%/20%)。
  • 诊断工具
    • 高偏差 (欠拟合):训练误差和验证误差都高,且接近。
    • 高方差 (过拟合):训练误差很低,但验证误差远高于训练误差。
    • 学习曲线:判断添加数据或增加复杂度是否有帮助。
  • 基线:与人类表现或简单模型比较,判断是否有改善空间。
2. 偏差与方差的处理
  • 高偏差:增加模型复杂度(更多层/节点)、增加特征、减小正则化 λ。
  • 高方差:增加训练数据、减少特征、加大正则化 λ、使用数据增强。
  • 神经网络特点:大型网络往往低偏差,只要正则化和数据足够,可以同时实现低方差。
3. 迭代开发流程
  • 误差分析:抽查错误样本,找出错误模式(如漏检某个类别),指导下一步改进方向。
  • 数据扩充:数据增强(图像旋转/裁剪)、合成数据、收集更多真实数据。
  • 迁移学习:复用预训练模型(如在大规模图像上训练好的网络),仅针对特定任务微调最后几层,大幅节省数据和训练时间。
  • 完整项目周期数据收集 → 模型训练 → 误差分析 → 改进数据/模型 的循环。
  • 公平与伦理:注意数据的偏见(如性别、种族)及其对模型预测产生的社会影响。
4. 倾斜数据集处理(可选)
  • **精确率 (Precision)**:预测为正的样本中真正为正的比例。
  • **召回率 (Recall)**:所有真正为正的样本中被成功预测的比例。
  • 权衡:设定阈值调节 P/R,使用 F1 分数综合衡量。
  • 适用场景:罕见病检测、欺诈识别等类别极不平衡的任务。

项目应用提示

  • 永远不要只盯着训练集上的准确率;认真检查验证集/测试集表现,绘制 学习曲线 诊断偏差与方差。
  • 项目遇到瓶颈时,先做 误差分析(手工检查 100 个错误样本),能发现数据或标签的系统性问题。
  • 数据量不足时,优先考虑 迁移学习 而非从头训练大模型。
  • 面对极不平衡数据,用 精确率-召回率 评估而非简单准确率。

第七周:决策树与集成学习

1. 决策树模型
  • 结构:由根节点、内部节点(判断条件)和叶节点(预测结果)构成。
  • 学习过程:递归地选择最佳特征进行划分,使子节点更“纯”。
2. 划分标准
  • 纯度:分类问题常用熵或基尼不纯度。
  • 信息增益:划分前后的不确定性下降量,选择信息增益最大的特征进行分割。
  • 处理方式
    • 分类特征:独热编码,在某个特征值上分裂。
    • 连续特征:选择一个阈值,划分为两部分。
  • 回归树(可选):预测连续值,依据划分后方差减小量来选择特征。
3. 树集成方法
  • 随机森林
    • 对训练集进行有放回抽样(Bagging)生成多份数据。
    • 每棵树随机选择一部分特征进行训练。
    • 投票(分类)或平均(回归)得出最终结果。
    • 降低过拟合,提高稳定性。
  • XGBoost (Boosting):
    • 串行训练树,每棵新树专注于纠正前面树的错误。
    • 通常比随机森林性能更强,但调参更敏感。
  • 选取准则:决策树/树集成适用于表格数据,解释性强;神经网络更适合图像/文本等非结构化数据。

项目应用提示

  • 面对表格数据(如客户信息表),XGBoost 或随机森林 经常是比神经网络更好的起点,训练快且无需特征缩放。
  • 需要向非技术人员解释模型时,决策树 可提供直观的规则链。
  • 如果单个决策树过拟合严重,尝试 随机森林;追求极致性能可用 XGBoost,并利用交叉验证调整树深度和学习率。

🔗 整体知识脉络(从线性基础到树与神经网络)

1
2
3
4
5
6
7
8
9
10
11
12
13
[入门模型]
├── 回归: 线性回归 (W1-W2) → 正则化 (W3) → 神经网络回归 (输出层线性)
├── 分类: 逻辑回归 (W3) → 神经网络二分类 (Sigmoid 输出)
└── 多分类: Softmax (W5) → 神经网络多分类

[模型优化与评估]
├── 偏差/方差诊断,学习曲线 (W6)
├── 误差分析,迁移学习 (W6)
└── 处理倾斜数据集 (W6)

[进阶模型]
├── 神经网络: 前向传播、反向传播、TensorFlow 实践 (W4-W5)
└── 决策树与集成: 随机森林、XGBoost (W7)

🧭 综合项目应用检查清单

拿到一个新项目时,你可以按以下步骤结合所有已学知识:

  1. 问题定义与数据获取

    • 明确是回归、二分类、多分类还是多标签?
    • 收集数据,初步探索分布和标签比例。
  2. 基线建立 (W6)

    • 建立一个简单模型(如线性模型或浅层决策树)作为性能基线。
    • 评估该基线的偏差和方差。
  3. 快速试验

    • 表格数据:先尝试 XGBoost / 随机森林 (W7),无需特征缩放,可快速得到较强基线。
    • 图像/文本等复杂数据:使用神经网络 (W4),借助迁移学习 (W6)。
  4. 模型诊断与迭代 (W6)

    • 画学习曲线,判断高偏差还是高方差。
    • 高偏差 → 加深网络、增加层节点、尝试多项式特征。
    • 高方差 → 收集更多数据、数据增强、增大正则化 λ、使用 Dropout(后续课程)。
    • 执行误差分析,发现模型在哪些样本上犯错,针对性改进数据或特征。
  5. 性能评估

    • 均衡数据集:准确率,结合验证/测试集。
    • 倾斜数据集:精确率、召回率、F1 分数 (W6)。
    • 多分类:关注各类别的 recall,避免类不平衡被忽略。
  6. 最终调优

    • 使用学习率衰减或 Adam 优化器 (W5) 加速神经网络收敛。
    • 对树模型进行交叉验证调参(树的深度、学习率、样本抽样比例)。
    • 集成多个强模型(stacking)可能进一步提升。