《神经网络与深度学习》学习笔记一
本文档整理自邱锡鹏教授的《神经网络与深度学习》教材内容
目录
人工智能发展概述
AI发展历程
本课程从人工智能的发展历史出发,帮助学习者理解神经网络和深度学习在AI领域中的核心地位。人工智能经历了多个重要发展阶段,从早期的符号主义AI到现代的深度学习,每个阶段都为后续技术的发展奠定了基础。
深度学习框架概览
在当前的深度学习生态中,存在多个重要的开源和商业框架,各自具有不同的特点和应用场景:
- TensorFlow:由Google开发的开源机器学习框架,具有强大的生产部署能力
- PyTorch:由Meta开发的动态计算图框架,因其易用性在研究领域广泛应用
- Keras:高级神经网络API,提供用户友好的接口
- MXNet:支持多种编程语言的深度学习框架
- MindSpore:由华为开发的深度学习框架,专为端边云场景设计,为Ascend AI处理器提供原生支持,实现软硬件协同优化
深度学习基本概念
特征表示与编码方式
独热编码(One-Hot Encoding)
独热编码是一种常见的分类变量表示方法。其核心特点是:
- 每个类别用一个向量表示,向量长度等于类别总数
- 对应类别的位置为1,其余位置为0
- 本质上等同于单维向量的多维表示
示例:对于三分类问题,各类别编码如下:
类别A: [1, 0, 0]
类别B: [0, 1, 0]
类别C: [0, 0, 1]
嵌入(Embedding)
嵌入是将高维的稀疏表示(如独热编码)映射到低维的密集向量空间的过程。
- 本质:嵌入就是一种映射关系,将离散符号映射到连续向量空间
- 优势:降低维度,提高计算效率,发现特征之间的隐含关系
- 应用:广泛用于自然语言处理(词嵌入)和推荐系统等领域
映射示例:
独热编码 [0, 1, 0] ------映射→ 嵌入向量 [0.2, 0.8, 0.1]
端到端学习(End-to-End Learning)
定义
端到端学习(End-to-End Learning)也称为端到端训练,是指在学习过程中不进行分模块或分阶段训练,而是直接优化任务的总体目标。
核心特征
- 整体优化:不将任务分解成多个子任务分别优化,而是在单一目标函数下进行全局优化
- 简化流程:减少中间步骤,从原始输入直接映射到最终输出
- 自动特征学习:网络自动学习所需的中间特征表示,无需人工设计
端到端学习的优势
- 性能提升:全局优化通常能获得更优的整体性能
- 减少误差传播:避免了模块化方法中各阶段错误的累积
- 降低开发成本:无需设计中间表示和多个优化目标
- 更强的适应性:网络能够自动调整内部表示以适应任务需求
应用场景
- 图像识别:从原始像素直接预测物体类别
- 机器翻译:从源语言直接翻译到目标语言
- 自动驾驶:从传感器数据直接输出控制指令
- 语音识别:从声学信号直接输出文本
线性模型与经典算法
概述
线性模型是深度学习的基础。虽然单个线性模型的表达能力有限,但通过堆叠多层线性和非线性变换,可以构建表达能力强大的深度神经网络。
主要线性模型对比
下表总结了常见线性模型的主要特征、激活函数、损失函数和优化方法:
1. 线性回归
| 属性 | 内容 |
|---|---|
| 激活函数 | 恒等函数(Identity): g ( w T x ) g(\mathbf{w}^T\mathbf{x}) g(wTx) |
| 损失函数 | 均方误差(MSE): ( y − w T x ) 2 (y - \mathbf{w}^T\mathbf{x})^2 (y−wTx)2 |
| 优化方法 | 最小二乘法、梯度下降 |
| 用途 | 连续值预测 |
原理:假设输出与输入呈线性关系,通过最小化预测值与真实值的平方差来学习参数。
2. Logistic回归
| 属性 | 内容 |
|---|---|
| 激活函数 | Sigmoid函数: σ ( w T x ) = 1 1 + e − w T x \sigma(\mathbf{w}^T\mathbf{x}) = \frac{1}{1+e^{-\mathbf{w}^T\mathbf{x}}} σ(wTx)=1+e−wTx1 |
| 损失函数 | 交叉熵: − y log σ ( w T x ) -\mathbf{y}\log\sigma(\mathbf{w}^T\mathbf{x}) −ylogσ(wTx) |
| 优化方法 | 梯度下降 |
| 用途 | 二分类问题 |
原理:虽然名称含有"回归",但Logistic回归是一个分类模型。通过Sigmoid函数将线性模型的输出压缩到(0,1)区间,表示正类的概率。
3. Softmax回归
| 属性 | 内容 |
|---|---|
| 激活函数 | Softmax函数: softmax ( W T x ) \text{softmax}(\mathbf{W}^T\mathbf{x}) softmax(WTx) |
| 损失函数 | 交叉熵: − y log softmax ( W T x ) -\mathbf{y}\log\text{softmax}(\mathbf{W}^T\mathbf{x}) −ylogsoftmax(WTx) |
| 优化方法 | 梯度下降 |
| 用途 | 多分类问题 |
原理:Softmax是Sigmoid的多分类推广。对多个类别的线性输出进行指数化和归一化,得到各类别的概率分布。
Softmax函数公式 :
softmax i ( z ) = e z i ∑ j e z j \text{softmax}_i(\mathbf{z}) = \frac{e^{z_i}}{\sum_j e^{z_j}} softmaxi(z)=∑jezjezi
4. 感知器(Perceptron)
| 属性 | 内容 |
|---|---|
| 激活函数 | 符号函数: sgn ( w T x ) \text{sgn}(\mathbf{w}^T\mathbf{x}) sgn(wTx) |
| 损失函数 | 感知器损失 |
| 优化方法 | 梯度下降 |
| 用途 | 二分类问题 |
原理:最早的神经网络模型,使用符号函数作为激活函数,输出为-1或1。对线性可分的问题有很好的效果。
5. 支持向量机(SVM)
| 属性 | 内容 |
|---|---|
| 激活函数 | 符号函数: sgn ( w T x ) \text{sgn}(\mathbf{w}^T\mathbf{x}) sgn(wTx) |
| 损失函数 | Hinge损失: max ( 0 , − y w T x ) \max(0, -y\mathbf{w}^T\mathbf{x}) max(0,−ywTx) 或 max ( 0 , 1 − y w T x ) \max(0, 1-y\mathbf{w}^T\mathbf{x}) max(0,1−ywTx) |
| 优化方法 | 随机梯度下降、二次规划、SMO等 |
| 用途 | 二分类和多分类问题 |
原理:通过最大化分类间隔来学习最优的决策边界。Hinge损失只在预测错误或置信度不足时产生损失。
各模型的关键激活函数详解
Sigmoid函数
σ ( z ) = 1 1 + e − z \sigma(z) = \frac{1}{1+e^{-z}} σ(z)=1+e−z1
- 特点:将任意输入映射到(0,1)区间
- 导数 : σ ′ ( z ) = σ ( z ) ( 1 − σ ( z ) ) \sigma'(z) = \sigma(z)(1-\sigma(z)) σ′(z)=σ(z)(1−σ(z))
- 缺点:梯度消失问题,易导致网络学习缓慢
Softmax函数
将向量 z = [ z 1 , z 2 , ... , z K ] \mathbf{z} = [z_1, z_2, \ldots, z_K] z=[z1,z2,...,zK]映射到概率分布:
softmax ( z ) i = e z i ∑ j = 1 K e z j \text{softmax}(\mathbf{z})i = \frac{e^{z_i}}{\sum{j=1}^K e^{z_j}} softmax(z)i=∑j=1Kezjezi
- 特点:输出为概率分布,各分量和为1
- 应用:多分类问题的标准选择
损失函数与优化目标
均方误差(MSE)
L = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 L = \frac{1}{n}\sum_{i=1}^n (y_i - \hat{y}_i)^2 L=n1i=1∑n(yi−y^i)2
适用于回归问题,度量预测值与真实值的平方差。
交叉熵(Cross-Entropy)
对于二分类(Logistic回归):
L = − [ y log y ^ + ( 1 − y ) log ( 1 − y ^ ) ] L = -[y\log\hat{y} + (1-y)\log(1-\hat{y})] L=−[ylogy^+(1−y)log(1−y^)]
对于多分类(Softmax回归):
L = − ∑ i = 1 K y i log y ^ i L = -\sum_{i=1}^K y_i\log\hat{y}_i L=−i=1∑Kyilogy^i
其中 y i y_i yi是独热编码的真实标签, y ^ i \hat{y}_i y^i是模型预测的概率。
优势:相比MSE,交叉熵更适合分类问题,梯度性质更好,有助于加速收敛。
Hinge损失
L = max ( 0 , 1 − y ⋅ y ^ ) L = \max(0, 1 - y \cdot \hat{y}) L=max(0,1−y⋅y^)
其中 y ∈ { − 1 , 1 } y \in \{-1, 1\} y∈{−1,1}是真实标签, y ^ \hat{y} y^是预测的决策函数值。
- 特点:只在分类错误或置信度不足时产生损失
- 应用:支持向量机的标准损失函数
- 优势:稀疏性,只有支持向量对决策边界有影响
优化方法概览
最小二乘法
直接求解使损失函数最小的参数的解析解:
w ∗ = ( X T X ) − 1 X T y \mathbf{w}^* = (\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{y} w∗=(XTX)−1XTy
适用场景:线性回归,数据量较小,矩阵可逆的情况。
梯度下降(Gradient Descent)
参数更新规则:
w ← w − α ∇ L ( w ) \mathbf{w} \leftarrow \mathbf{w} - \alpha \nabla L(\mathbf{w}) w←w−α∇L(w)
其中 α \alpha α是学习率, ∇ L ( w ) \nabla L(\mathbf{w}) ∇L(w)是损失函数的梯度。
变体:
- 批量梯度下降(BGD):每次更新使用全部数据
- 随机梯度下降(SGD):每次更新使用单个样本
- 小批量梯度下降(Mini-batch GD):每次更新使用小批量数据
随机梯度下降(SGD)
w ← w − α ∇ L ( w , x i ) \mathbf{w} \leftarrow \mathbf{w} - \alpha \nabla L(\mathbf{w}, x_i) w←w−α∇L(w,xi)
其中只使用单个样本 x i x_i xi计算梯度。
优势:计算高效,在线学习能力强;引入的噪声有助于逃离局部最优。
二次规划与SMO
二次规划:用于求解支持向量机的对偶问题。
SMO(Sequential Minimal Optimization):一种高效的SVM训练算法,每次只优化两个拉格朗日乘数,大大降低了计算复杂度。
总结
本篇学习笔记介绍了神经网络与深度学习的基础内容:
- 理论基础:理解了特征表示(独热编码和嵌入)与端到端学习的核心概念
- 经典模型:掌握了线性回归、Logistic回归、Softmax回归、感知器和SVM的基本原理
- 关键技术:了解了激活函数、损失函数和优化方法在不同模型中的应用
- 深度学习框架:认识了主流的深度学习框架及其特点
这些基础知识为后续学习多层神经网络、卷积神经网络、循环神经网络等深度学习模型奠定了坚实的理论基础。