机器学习研讨平台

为帮助大家系统掌握机器学习基础知识,我们组织学习班,结合经典教材与实践项目,从理论到应用全面提升

2
核心教材
12
学习周数
50+
练习题
8
实践项目

学习目标

通过系统化学习,掌握机器学习核心知识与实践技能

掌握基础理论

理解机器学习与深度学习的核心概念、原理和算法,建立完整的知识体系

提升实践能力

能够使用主流框架实现经典模型,解决实际问题,具备独立开发能力

培养科研思维

了解领域前沿动态,掌握阅读学术论文的方法,培养独立思考与创新能力

增强交流能力

通过讨论与分享,提升技术表达能力,形成互助学习的良好氛围

学习资源

以指定教材为核心,配套丰富的学习资料与工具资源

《动手学深度学习》教材封面

《动手学深度学习》

作者:阿斯顿·张 (Aston Zhang)、李沐 (Mu Li)、扎卡里·C. 立顿 (Zachary C. Lipton)、亚历山大·J. 斯莫拉 (Alexander J. Smola)

本书注重实践,通过可运行的代码示例引导读者逐步学习深度学习的核心概念和技术。书中包含大量图表和示例,帮助读者直观理解复杂概念,并提供了基于PyTorch的实现代码。

第3章 练习题

  • 习题3.1:实现一个简单的全连接神经网络
    对应教材P89
    使用PyTorch实现一个包含输入层、隐藏层和输出层的全连接神经网络,其中隐藏层包含256个神经元并使用ReLU激活函数。实现前向传播过程,并测试网络对随机输入的输出。

    实现代码如下:

    import torch
    import torch.nn as nn
    
    # 定义简单的全连接神经网络
    class SimpleNN(nn.Module):
        def __init__(self, input_size, hidden_size, output_size):
            super(SimpleNN, self).__init__()
            self.fc1 = nn.Linear(input_size, hidden_size)  # 输入层到隐藏层
            self.relu = nn.ReLU()                          # ReLU激活函数
            self.fc2 = nn.Linear(hidden_size, output_size) # 隐藏层到输出层
        
        def forward(self, x):
            out = self.fc1(x)
            out = self.relu(out)
            out = self.fc2(out)
            return out
    
    # 测试网络
    if __name__ == "__main__":
        # 超参数
        input_size = 784  # 例如MNIST图像大小28x28
        hidden_size = 256
        output_size = 10   # 例如10个类别
        
        # 创建模型
        model = SimpleNN(input_size, hidden_size, output_size)
        
        # 随机输入测试
        random_input = torch.randn(1, input_size)  # 批量大小为1的随机输入
        output = model(random_input)
        print(f"输出形状: {output.shape}")
        print(f"输出值: {output}")

    代码说明:

    1. 我们定义了一个SimpleNN类,继承自nn.Module,这是PyTorch中定义神经网络的标准方式。

    2. 在__init__方法中,我们定义了两个全连接层(fc1和fc2)和一个ReLU激活函数。

    3. forward方法定义了前向传播过程:输入→全连接层1→ReLU激活→全连接层2→输出。

    4. 测试部分创建了一个随机输入张量,并通过模型得到输出,验证了网络的基本功能。

  • 习题3.2:解释反向传播算法的基本原理
    对应教材P95
    详细解释反向传播算法的基本原理、计算过程和在神经网络训练中的作用。说明链式法则在反向传播中的应用。

    反向传播算法是训练神经网络的核心算法,其基本原理如下:

    1. 基本原理:

    反向传播算法利用链式法则,从神经网络的输出层开始,逐层计算损失函数对各层参数的梯度,从而为参数更新提供依据。它将复杂的梯度计算分解为一系列简单的局部计算,大幅提高了计算效率。

    2. 计算过程:

    ① 前向传播:将输入数据通过网络计算,得到输出结果和各层的中间变量;

    ② 计算损失:根据网络输出和真实标签计算损失函数;

    ③ 反向传播:从输出层开始,计算损失函数对输出层参数的梯度,然后逐层向前计算损失函数对各层参数的梯度;

    ④ 参数更新:使用计算得到的梯度,通过梯度下降等优化算法更新网络参数。

    3. 在神经网络训练中的作用:

    反向传播算法解决了深层神经网络的参数优化问题,使得训练深层网络成为可能。没有反向传播,计算深层网络的梯度将变得极其复杂和低效。

    4. 链式法则的应用:

    链式法则是反向传播的数学基础,用于计算复合函数的导数。在神经网络中,损失函数是网络参数的复合函数,通过链式法则可以将损失函数对某一层参数的梯度表示为损失函数对下一层输入的梯度与该层参数对输入的梯度的乘积。这种递归关系使得我们可以从输出层开始,逐层计算各层参数的梯度。

《深度学习》教材封面

《深度学习》(Deep Learning)

作者:伊恩·古德费洛 (Ian Goodfellow)、约书亚·本吉奥 (Yoshua Bengio)、亚伦·库维尔 (Aaron Courville)

本书被称为"深度学习圣经",系统全面地介绍了深度学习的理论基础、核心算法和应用场景。内容涵盖数学基础、经典模型、优化方法等,适合深入理解深度学习的理论体系。

第5章 练习题

  • 习题5.1:解释监督学习与无监督学习的区别
    对应教材P112
    详细说明监督学习与无监督学习的核心区别,分别列举3个典型应用场景,并分析两种学习方式在数据需求和模型目标上的差异。

    监督学习与无监督学习的核心区别及分析如下:

    1. 核心区别:

    监督学习使用带有标签的训练数据(即每个输入样本都对应一个已知的输出标签),模型目标是学习输入到输出的映射关系;无监督学习使用无标签的训练数据,模型目标是从数据中自动发现潜在的结构、模式或分布特征。

    2. 应用场景:

    监督学习:图像分类(如识别猫/狗)、房价预测(根据特征预测价格)、垃圾邮件识别(判断邮件是否为垃圾邮件);

    无监督学习:聚类分析(如用户行为分群)、降维可视化(如PCA处理高维数据)、异常检测(如信用卡欺诈识别)。

    3. 数据需求与模型目标差异:

    数据需求:监督学习需要大量带标签数据,标签获取成本高;无监督学习仅需无标签数据,数据获取成本低,但对数据质量要求更高;

    模型目标:监督学习目标是最小化预测值与真实标签的误差,追求精准的映射能力;无监督学习目标是最大化对数据结构的解释能力,如聚类的紧凑性或降维后的信息保留率。

  • 习题5.2:证明最小二乘法的最优解

    对应教材P115

    给定线性回归模型 $y = X\theta + \epsilon$(其中 $X$ 为特征矩阵,$\theta$ 为参数向量,$\epsilon$ 为误差项),损失函数为平方损失 $L(\theta) = \frac{1}{2}\|y - X\theta\|_2^2$,证明当 $X^TX$ 可逆时,损失函数的最优解为 $\hat{\theta} = (X^TX)^{-1}X^Ty$。

    证明过程如下:

    1. 展开损失函数:

    平方损失函数可展开为:

    $L(\theta) = \frac{1}{2}\|y - X\theta\|_2^2 = \frac{1}{2}(y - X\theta)^T(y - X\theta)$

    进一步展开矩阵乘法:

    $L(\theta) = \frac{1}{2}(y^Ty - y^TX\theta - \theta^TX^Ty + \theta^TX^TX\theta)$

    由于 $y^TX\theta$ 是标量,其转置等于自身,即 $y^TX\theta = (y^TX\theta)^T = \theta^TX^Ty$,因此:

    $L(\theta) = \frac{1}{2}(y^Ty - 2\theta^TX^Ty + \theta^TX^TX\theta)$

    2. 对 $\theta$ 求偏导:

    根据矩阵求导法则:

    - 常数项 $y^Ty$ 对 $\theta$ 的偏导为 0;

    - 线性项 $-2\theta^TX^Ty$ 对 $\theta$ 的偏导为 $-2X^Ty$;

    - 二次项 $\theta^TX^TX\theta$ 对 $\theta$ 的偏导为 $2X^TX\theta$(因 $X^TX$ 为对称矩阵);

    因此,损失函数对 $\theta$ 的偏导为:

    $\frac{\partial L(\theta)}{\partial \theta} = \frac{1}{2}(-2X^Ty + 2X^TX\theta) = X^TX\theta - X^Ty$

    3. 求最优解:

    损失函数为凸函数(因 $X^TX$ 为半正定矩阵,当 $X^TX$ 可逆时为正定矩阵),最优解满足偏导为 0:

    $X^TX\theta - X^Ty = 0$

    整理得:

    $X^TX\theta = X^Ty$

    当 $X^TX$ 可逆时,两边同时左乘 $(X^TX)^{-1}$,得最优解:

    $\hat{\theta} = (X^TX)^{-1}X^Ty$

    证毕。

学习进度安排

12周系统化学习计划,循序渐进掌握核心知识

周次 学习主题 对应教材章节 学习任务
第1周
机器学习基础概念
《深度学习》第1-2章
《动手学深度学习》第1章
完成基础概念测验
第2周
线性回归与逻辑回归
《深度学习》第5章
《动手学深度学习》第2章
实现线性回归模型
第3周
神经网络基础
《深度学习》第6章
《动手学深度学习》第3章
实现简单神经网络
第4周
深度学习计算
《深度学习》第7章
《动手学深度学习》第4章
学习反向传播算法
第5-6周
卷积神经网络
《深度学习》第9章
《动手学深度学习》第5章
图像分类项目
第7-8周
循环神经网络
《深度学习》第10章
《动手学深度学习》第6章
文本生成项目
第9-10周
优化算法
《深度学习》第8章
《动手学深度学习》第7章
优化算法对比实验
第11-12周
综合项目实践
综合应用各章知识 完成综合项目并展示

讨论区

按主题分类的讨论板块,促进学习交流与问题解决

加载中...
0个话题

正在获取讨论内容,请稍候...

查看全部话题