阶段 1:深度学习基础
1.1 机器学习基础
目标:掌握机器学习的基本概念、分类方法和常用评估指标,为深度学习打下坚实的理论基础。
-
机器学习概念
- 监督学习:模型学习已标注数据的输入-输出映射关系,用于分类和回归任务。
- 无监督学习:利用未标注数据发现隐藏模式,常用于聚类和降维。
- 强化学习:模型通过试错学习如何在环境中选择行动以最大化累积奖励。
-
常见机器学习算法
- 线性回归:用于预测连续值,掌握其损失函数(均方误差)和梯度下降优化。
- 逻辑回归:一种用于二分类问题的算法,了解其与线性回归的区别。
- 决策树与随机森林:树结构模型,适用于分类和回归问题,能处理特征间非线性关系。
- 支持向量机(SVM):用于分类和回归,理解其在高维空间中划分数据的机制。
- K-均值聚类:一种常用的无监督学习算法,用于将数据分成K个簇。
-
模型评估方法
- 分类评估指标:准确率、精度(Precision)、召回率(Recall)、F1值。
- 回归评估指标:均方误差(MSE)、平均绝对误差(MAE)。
- 交叉验证:K折交叉验证法,提高模型的泛化能力。
-
过拟合与欠拟合
- 过拟合:模型过度拟合训练数据,表现为在训练集上表现好但在测试集上表现差。防止方法:正则化、数据增强、减少模型复杂度等。
- 欠拟合:模型未能很好地拟合训练数据。防止方法:增加模型复杂度、训练时间或数据量。
-
数据预处理
- 标准化与归一化:确保特征分布均匀,提升模型性能。
- 缺失值处理:填补或删除缺失值,确保数据完整性。
- 类别编码:将分类数据转换为数值形式,如独热编码(One-Hot Encoding)。
1.2 神经网络基础
目标:掌握神经网络的基本构造、前向传播与反向传播过程,理解常用激活函数与优化方法。
-
神经网络概念
- 神经网络模仿人脑神经元结构,基本构件是神经元(节点),通常包括输入层、隐藏层和输出层。
- 激活函数:激活函数引入非线性,使神经网络能够拟合复杂模式。
- ReLU(Rectified Linear Unit):常用于隐藏层,可缓解梯度消失问题。
- Sigmoid:用于二分类问题,能将输出值限制在0到1之间。
- Tanh:类似于Sigmoid,但输出范围在-1到1,梯度更平滑。
-
前向传播与反向传播
- 前向传播:输入数据经过各层计算得到预测输出。
- 损失函数:衡量模型预测与真实标签的差异。
- 均方误差(MSE):用于回归任务。
- 交叉熵损失:用于分类任务。
- 反向传播:利用梯度下降法最小化损失函数,更新各层权重。
- 链式法则:用于计算梯度。
- 学习率:控制梯度下降的步长,影响收敛速度。
-
优化算法
- 梯度下降(Gradient Descent):通过迭代调整参数来减少损失。
- 随机梯度下降(SGD):在每次迭代中使用一个小批量数据进行更新,提升训练效率。
- Adam:结合了动量和自适应学习率,适用于处理噪声较大的数据。
- RMSProp:对SGD的改进,防止梯度震荡,适合深度网络训练。
-
梯度消失与梯度爆炸
- 梯度消失:网络层数增加后,梯度在传递过程中不断缩小,导致前层更新几乎停止。
- 梯度爆炸:梯度在传递过程中不断增大,可能导致数值溢出。
- 解决方法:使用合适的激活函数(如ReLU)、权重初始化方法、批量归一化(Batch Normalization)等。
1.3 深度学习框架简介
目标:了解并掌握常用的深度学习框架和工具,学会使用TensorFlow、Keras或PyTorch搭建和训练基础神经网络。
-
深度学习框架选择
- TensorFlow:由Google开发,支持大规模分布式训练和生产环境应用。
- Keras:高级深度学习API,易于上手,内置于TensorFlow中。
- PyTorch:由Facebook开发,动态计算图设计更灵活,适合研究与实验。
- MXNet:Amazon支持的框架,适合大规模分布式训练和云端部署。
-
安装与环境配置
- 在Anaconda或虚拟环境中安装TensorFlow或PyTorch。
- 使用Google Colab或Jupyter Notebook进行实验,方便在线运行。
-
框架基本使用
- TensorFlow:搭建一个简单的多层感知机(MLP),实现二分类任务。
- 数据加载与预处理(如MNIST数据集)
- 模型定义、编译、训练和评估
- Keras:使用Keras快速构建一个简单的深度学习模型。
- Sequential模型与Functional API的使用
- 常见层(Dense, Conv2D, LSTM等)介绍
- PyTorch:创建基本神经网络模型,实现前向传播与反向传播。
- 定义模型、损失函数和优化器
- 使用DataLoader加载批量数据
- 模型训练、评估与保存
- TensorFlow:搭建一个简单的多层感知机(MLP),实现二分类任务。
阶段 2:核心深度学习模型
2.1 多层感知机(MLP, Multi-Layer Perceptron)
目标:掌握多层感知机的基本结构和原理,学习如何构建简单的神经网络并进行分类和回归任务。
-
MLP的结构与工作原理
- 输入层、隐藏层、输出层:理解每层的功能和作用。
- 激活函数:在隐藏层中常用ReLU激活函数,输出层根据任务不同使用Sigmoid(用于二分类)或Softmax(多分类)。
- 全连接层(Dense Layer):每一层的神经元与前一层的所有神经元相连,适合结构化数据处理。
-
MLP的实现与训练
- 使用TensorFlow/Keras和PyTorch构建一个简单的MLP模型。
- 损失函数:选择适合的损失函数,如均方误差(MSE)或交叉熵损失。
- 优化器:Adam、SGD等常用优化器的选择和调参。
- 训练过程:模型编译、训练、验证、测试流程。
-
权重初始化与激活函数选择
- Xavier初始化与He初始化:改善模型训练效率。
- 如何根据任务选择激活函数(例如,隐藏层ReLU,输出层Sigmoid或Softmax)。
2.2 卷积神经网络(CNN, Convolutional Neural Network)
目标:掌握CNN的原理和应用,能够构建卷积神经网络用于图像分类和目标识别任务。
-
卷积层(Convolutional Layer)
- 卷积操作:理解卷积核的作用和局部感受野。
- 特征提取:通过多个卷积层逐步提取图像特征。
- 卷积核大小与步长:卷积核大小(如3x3,5x5)、步长和填充的选择对特征提取的影响。
-
池化层(Pooling Layer)
- 最大池化(Max Pooling)与平均池化(Average Pooling):减小特征图大小,减少参数量并防止过拟合。
- 池化窗口与步长:池化窗口大小的选择和步长调整。
-
经典CNN架构
- LeNet-5:早期的手写数字识别模型,适用于简单分类任务。
- AlexNet:引入数据增强和Dropout,大幅提升图像分类性能。
- VGG:通过堆叠小卷积核提高网络深度和表现。
- ResNet:提出残差结构,解决深度网络的梯度消失问题,适用于更复杂的视觉任务。
-
CNN的实现与图像分类实战
- 构建一个简单的CNN网络并在MNIST/CIFAR-10数据集上进行训练。
- 数据增强:使用旋转、裁剪、翻转等方法扩充数据集,提升模型的泛化能力。
- 正则化:L2正则化、Dropout的应用。