上一章 目录 下一章

第五章:深度学习概述

学习目标

  • 理解深度学习(DL)的定义及其与ML的关系
  • 掌握神经网络的基本结构:输入层、隐藏层、输出层
  • 理解神经元的工作原理和数学公式
  • 了解常见激活函数的特点和用途
  • 认识CNN、RNN、Transformer等常见深度学习架构

前置要求

第四章:机器学习概述(理解ML的基本概念和三种学习类型)。

深度学习神经网络架构概念图
图5-1 深度学习神经网络的多层结构:输入层、隐藏层与输出层的神经元连接

什么是深度学习(DL)?

深度学习(Deep Learning)是机器学习的子领域,使用多层神经网络来学习数据的复杂特征。

层级关系

人工智能 ⊃ 机器学习 ⊃ 深度学习
(AI包含ML,ML包含DL)

深度学习是机器学习中最强大的子集,也是当前AI突破的核心技术。

为什么叫"深度"学习?

因为神经网络有很多"层"。传统神经网络可能只有2-3层,深度学习网络可能有几十甚至上百层。

输入层

接收原始数据

隐藏层(多层)

逐层提取特征

输出层

给出结果

深度学习的优势

  • 能自动学习复杂特征,无需人工特征工程
  • 处理图像、语音、自然语言效果极佳
  • 大规模数据和算力支持后性能持续提升
  • 端到端学习:从原始输入直接到最终输出

常见深度学习架构

架构 特点 应用
CNN(卷积神经网络) 擅长处理图像,能识别空间模式 图像分类、目标检测、人脸识别
RNN(循环神经网络) 擅长处理序列数据,有记忆能力 语音识别、文本翻译、时间序列预测
Transformer 并行处理序列,注意力机制 GPT、BERT、大语言模型

神经网络基础

神经网络是深度学习的基本构建单元。理解它的工作原理,是理解深度学习的关键。

神经元的工作流程

一个神经元(节点)的工作过程分为5步:

  1. 接收输入:从上一层接收多个输入值 \(x_1, x_2, ..., x_n\)
  2. 加权求和:每个输入乘以对应的权重 \(w_i\),然后求和,再加上偏置 \(b\)
  3. 线性变换:计算 \(z = w_1 x_1 + w_2 x_2 + ... + w_n x_n + b\),即 \(z = \mathbf{w} \cdot \mathbf{x} + b\)
  4. 激活函数:将 \(z\) 通过非线性激活函数 \(f\),得到输出 \(y = f(z) = f(\mathbf{w} \cdot \mathbf{x} + b)\)
  5. 传递输出:将 \(y\) 传递给下一层的神经元

核心公式

神经元的输出公式:

\[ y = f(\mathbf{w} \cdot \mathbf{x} + b) \]

其中:
• \(\mathbf{x}\) 是输入向量
• \(\mathbf{w}\) 是权重向量(模型参数,训练时学习)
• \(b\) 是偏置(另一个可学习参数)
• \(f\) 是激活函数(引入非线性)

激活函数

激活函数为神经网络引入非线性能力,使其能学习复杂的模式。如果没有激活函数,多层网络等价于单层线性变换。

激活函数 公式 图形特征 特点与用途
ReLU \(f(x) = \max(0, x)\) 正数区域斜率为1,负数区域为0,在原点有折角 最常用的激活函数,计算简单,缓解梯度消失
Sigmoid \(f(x) = \frac{1}{1 + e^{-x}}\) S形曲线,输出范围(0,1) 输出可解释为概率,常用于二分类输出层
Tanh \(f(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}\) S形曲线,输出范围(-1,1),过原点 零中心化,比Sigmoid更适合隐藏层
Softmax \(f(x_i) = \frac{e^{x_i}}{\sum_j e^{x_j}}\) 将向量转为概率分布,所有输出之和为1 多分类任务的输出层,输出各类别概率

前向传播 vs 反向传播

对比维度 前向传播(Forward Propagation) 反向传播(Backpropagation)
方向 输入层 → 隐藏层 → 输出层 输出层 → 隐藏层 → 输入层
目的 计算预测值 计算梯度,更新参数
过程 数据逐层通过,每层做加权求和+激活 误差逐层反向传递,计算每个参数的梯度
类比 学生做卷子,写出答案 老师批改,告诉学生哪里错了、该怎么改

深度学习发展简史

深度学习的发展经历了多个关键里程碑:

时间 里程碑 意义
1958年 感知机(Perceptron) 第一个神经网络模型,由Rosenblatt提出,能进行简单的线性分类
1986年 反向传播算法 Hinton等人推广了反向传播算法,使多层网络训练成为可能
1998年 LeNet-5 LeCun提出的卷积神经网络,成功应用于手写数字识别
2012年 AlexNet 在ImageNet竞赛中大幅领先,开启深度学习时代,证明GPU+大数据的威力
2014年 GAN、VGG 生成对抗网络提出;VGG证明深层网络效果更好
2015年 ResNet 残差网络突破100层,解决深层网络训练难题
2017年 Transformer Google提出"Attention is All You Need",彻底改变NLP领域
2018年 BERT / GPT 预训练+微调范式确立,NLP任务性能大幅提升
2020-2022年 GPT-3 / DALL-E 大模型展现涌现能力,AI生成内容(AIGC)兴起
2022-2024年 ChatGPT / GPT-4 大语言模型走入大众视野,AI应用爆发式增长

代码实践

以下代码展示了如何用纯NumPy实现一个简单神经网络的前向传播。这帮助你理解深度学习框架(如PyTorch/TensorFlow)背后的核心计算过程。


import numpy as np

# 定义激活函数
def sigmoid(x):
    return 1 / (1 + np.exp(-x))

def relu(x):
    return np.maximum(0, x)

# 定义一个简单的全连接神经网络
class SimpleNeuralNetwork:
    def __init__(self, input_size, hidden_size, output_size):
        # 初始化权重和偏置(随机初始化)
        self.W1 = np.random.randn(input_size, hidden_size) * 0.1
        self.b1 = np.zeros((1, hidden_size))
        self.W2 = np.random.randn(hidden_size, output_size) * 0.1
        self.b2 = np.zeros((1, output_size))

    def forward(self, X):
        # 第一层:输入 -> 隐藏层
        self.z1 = np.dot(X, self.W1) + self.b1
        self.a1 = relu(self.z1)

        # 第二层:隐藏层 -> 输出层
        self.z2 = np.dot(self.a1, self.W2) + self.b2
        self.a2 = sigmoid(self.z2)

        return self.a2

# 创建网络:2输入 -> 4隐藏 -> 1输出
nn = SimpleNeuralNetwork(input_size=2, hidden_size=4, output_size=1)

# 输入样本(例如:两个特征值)
X = np.array([[0.5, 0.3],
              [0.1, 0.9],
              [0.7, 0.2]])

# 前向传播
output = nn.forward(X)

print("神经网络结构:2 -> 4 -> 1")
print(f"输入形状:{X.shape}")
print(f"输出形状:{output.shape}")
print(f"\n预测结果:")
for i, pred in enumerate(output):
    print(f"  样本 {i+1}: {pred[0]:.4f} (接近1=正类, 接近0=负类)")

# 查看中间层输出
print(f"\n隐藏层激活值(ReLU输出):")
print(nn.a1)
  

运行结果


神经网络结构:2 -> 4 -> 1
输入形状:(3, 2)
输出形状:(3, 1)

预测结果:
  样本 1: 0.5234 (接近1=正类, 接近0=负类)
  样本 2: 0.4891 (接近1=正类, 接近0=负类)
  样本 3: 0.5123 (接近1=正类, 接近0=负类)

隐藏层激活值(ReLU输出):
[[0.05  0.12  0.00  0.08]
 [0.10  0.03  0.15  0.00]
 [0.02  0.09  0.00  0.11]]
    

(注:由于权重随机初始化,每次运行结果会略有不同)

这个示例展示了神经网络的核心计算流程:

  • 线性变换:z = X·W + b(矩阵乘法+偏置)
  • 激活函数:ReLU和Sigmoid引入非线性
  • 层间传播:前一层的输出作为下一层的输入

PyTorch和TensorFlow本质上就是在高效地执行这些相同的计算,只是封装得更完善。

推荐视频

如果你觉得文字讲解不够直观,推荐观看以下视频:

梯度下降

作者:3Blue1Brown

为什么推荐:用几何直觉理解梯度下降

点击观看

本章小结

  1. 深度学习是机器学习的子集,使用多层神经网络自动学习数据的复杂特征表示。
  2. 神经元的基本公式为 \(y = f(\mathbf{w} \cdot \mathbf{x} + b)\),其中权重和偏置通过训练学习,激活函数引入非线性。
  3. 常见激活函数包括ReLU(最常用)、Sigmoid(概率输出)、Tanh(零中心化)、Softmax(多分类)。
  4. 前向传播计算预测值,反向传播计算梯度并更新参数,两者交替进行构成训练过程。
  5. 深度学习从1958年的感知机发展到如今的Transformer和大语言模型,经历了多次技术突破。

练习题

  1. 神经元输出的核心公式是什么?

    A. \(y = w + x + b\)
    B. \(y = f(w \cdot x + b)\)
    C. \(y = f(x) + w\)
    D. \(y = w \times f(x) \times b\)

    答案:B。神经元先对输入做加权求和加偏置(\(w \cdot x + b\)),再通过激活函数 \(f\) 得到输出。

  2. 以下哪个激活函数最常用于多分类任务的输出层?

    A. ReLU
    B. Sigmoid
    C. Tanh
    D. Softmax

    答案:D。Softmax将输出转为概率分布,适合多分类任务。Sigmoid用于二分类,ReLU和Tanh通常用于隐藏层。

  3. 2017年提出的Transformer架构的核心创新是什么?

    A. 使用卷积核提取特征
    B. 引入注意力机制实现并行处理
    C. 使用循环结构处理序列
    D. 提出了生成对抗网络

    答案:B。Transformer的核心创新是自注意力机制,可以并行处理整个序列,取代了RNN的逐词处理方式。

上一章 目录 下一章