一、深度学习
1 深度学习介绍
深度学习是机器学习的一个子集,其核心是构建具有多个“隐藏层”的人工神经网络。它的灵感来源于人脑神经元的工作方式,但并非严格模拟生物神经机制。
核心思想:通过“端到端”的学习方式,让模型自动从原始数据中逐层提取特征。浅层网络学习边缘、颜色等简单特征,深层网络则将这些简单特征组合成轮廓、部件乃至语义等复杂抽象概念。这一过程被称为“特征学习”或“表示学习”。
发展关键:深度学习的崛起得益于三大要素:
- 数据:互联网时代积累的海量数据(图像、文本、语音)。
- 算力:GPU(图形处理器)、TPU(张量处理器)等高性能计算硬件的普及。
- 算法:反向传播算法、ReLU激活函数、Dropout正则化、Batch Normalization(批归一化)等技术的突破,解决了深层网络难以训练的问题。
2 深度学习知识框架
学习深度学习通常遵循以下层次结构:
数学基础
- 线性代数:向量、矩阵、张量运算、特征分解。
- 概率与统计:最大似然估计、贝叶斯定理、分布。
- 优化方法:梯度下降、随机梯度下降(SGD)、Adam等优化器。
神经网络基础
- 感知机:神经网络的基本单元。
- 激活函数:Sigmoid, Tanh, ReLU, Softmax。
- 损失函数:均方误差(MSE)、交叉熵。
- 正则化:L1/L2正则、Dropout、早停法。
核心网络架构
- 多层感知机:全连接网络,基础结构。
- 卷积神经网络:处理网格状数据(如图像)。
- 循环神经网络与Transformer:处理序列数据(如文本、时间序列)。
高级技术
- 生成模型:生成对抗网络(GAN)、变分自编码器(VAE)、扩散模型。
- 自监督学习:BERT、MAE等掩码建模技术。
- 深度强化学习:DQN(深度Q网络)、PPO(近端策略优化)。
3 常用模型
| 模型类别 | 代表模型 | 特点 | 适用场景 |
|---|---|---|---|
| 卷积神经网络 | ResNet、VGG、Inception | 利用卷积核提取局部特征,参数共享,平移不变性 | 图像分类、目标检测、语义分割 |
| 循环神经网络与变体 | LSTM、GRU | 具有记忆单元,擅长处理时序依赖,但存在长程依赖瓶颈 | 机器翻译、语音识别、时间序列预测 |
| Transformer | BERT、GPT、ViT | 基于自注意力机制,并行计算能力强,可捕捉长距离依赖 | 自然语言处理(NLP)全领域、视觉大模型 |
| 生成模型 | GAN、Stable Diffusion | 能够生成高保真度的新数据样本 | 图像生成、艺术创作、数据增强 |
| 图神经网络 | GCN、GAT | 处理非欧几里得空间的数据(图结构) | 社交网络分析、分子结构预测、推荐系统 |
4 应用场景
深度学习已渗透到几乎所有人工智能应用领域:
计算机视觉
- 图像识别:人脸识别、医学影像诊断(癌症筛查)、自动驾驶中的交通标志识别。
- 目标检测与分割:安防监控、工业质检、遥感图像分析。
自然语言处理
- 大语言模型:ChatGPT、文心一言等,用于对话、写作、代码生成。
- 信息抽取:情感分析、智能客服、机器翻译。
语音处理
- 语音识别:智能音箱、实时字幕。
- 语音合成:数字人播报、语音导航。
跨模态与生成
- 文生图/视频:广告设计、游戏素材制作。
- 多模态理解:视频理解、图像描述生成。
科学计算与决策
- 生物信息学:蛋白质结构预测。
- 游戏与机器人:AlphaGo、机械臂抓取、自动驾驶决策。
5 与机器学习的区别
深度学习是机器学习的一种实现方式,但两者在多个维度存在显著差异:
| 维度 | 传统机器学习 | 深度学习 |
|---|---|---|
| 特征工程 | 人工主导。依赖专家手工设计特征(如SIFT、HOG),特征工程的质量决定了模型的上限。 | 自动提取。模型端到端学习,自动从原始数据中提取分层特征,无需人工干预。 |
| 数据依赖 | 小数据友好。在样本量较小(几百到几万条)时表现较好,不易过拟合。 | 大数据依赖。通常需要海量数据(百万级以上)才能展现优势,在小数据上往往不如传统模型。 |
| 硬件需求 | 低。普通CPU即可运行大部分算法(如随机森林、逻辑回归)。 | 高。严重依赖GPU或TPU进行并行加速,训练成本高。 |
| 可解释性 | 较高。决策树、线性回归等模型逻辑清晰,容易解释特征权重。 | 较低。常被视为“黑盒”,参数规模巨大(千亿级),难以直观解释决策逻辑。 |
| 模型复杂度 | 简单。参数数量少,训练时间短,调试相对直观。 | 复杂。网络层数深,参数规模大(亿级至万亿级),调试需要大量经验。 |
| 典型算法 | 线性回归、支持向量机、随机森林、XGBoost | 卷积神经网络(CNN)、循环神经网络(RNN)、Transformer、扩散模型 |
二、PyTorch
PyTorch 是由 Meta AI(原 Facebook AI Research)开发的开源深度学习框架,于 2017 年首次发布。它以动态计算图和Pythonic 的设计哲学著称,已成为学术界和工业界最受欢迎的深度学习框架之一。
特点:
- 张量计算
- 自动微分系统
- 深度学习库
- 动态计算图
- GPU加速
- 跨平台支持
PyTorch 安装:
condainstallpytorch torchvision torchaudio pytorch-cuda=11.8-cpytorch-cnvidiaimporttorch# 检查版本print(f"PyTorch 版本:{torch.__version__}")# 检查 CUDA 是否可用print(f"CUDA 可用:{torch.cuda.is_available()}")iftorch.cuda.is_available():print(f"CUDA 版本:{torch.version.cuda}")print(f"GPU 数量:{torch.cuda.device_count()}")print(f"当前 GPU:{torch.cuda.get_device_name()}")# 测试张量计算x=torch.rand(3,3)print(f"随机张量:\n{x}")# 测试 GPU 计算iftorch.cuda.is_available():y=x.cuda()print(f"GPU 张量设备:{y.device}")三、张量
张量(Tensor)是 PyTorch 中最基本的操作对象,本质上是一个多维数组。
- 对标 NumPy:它的功能和 NumPy 的
ndarray非常相似,都用于存储和操作多维数值数据。 - 核心区别:PyTorch 张量可以无缝地在CPU 和 GPU之间迁移,并且专门为**自动求导(Autograd)**和深度学习计算进行了优化。
你可以把张量理解为深度学习框架的“通用语言”——数据(图像、文本、音频)进入模型前都要先转化为张量。
使用张量的好处:
| 特性 | 说明 |
|---|---|
| GPU 加速 | 通过.to('cuda')或.cuda()轻松将张量移到 GPU,利用 CUDA 进行高速并行计算。 |
| 自动微分 | 设置requires_grad=True后,PyTorch 会记录张量上的所有操作,并自动计算梯度,这是训练神经网络的基础。 |
| 动态计算图 | PyTorch 使用动态图(Define-by-Run),意味着计算图在每次前向传播时都会重新构建,更灵活、更易调试。 |
| 丰富的操作函数 | 支持索引、切片、数学运算、线性代数、统计函数等,几乎涵盖所有科学计算需求。 |
| 与 NumPy 互操作 | 可以轻松地在 NumPy 数组和 PyTorch 张量之间转换(torch.from_numpy()和.numpy()),且许多情况下共享内存。 |
张量的基本用法:
importtorch# 1. 从数据直接创建a=torch.tensor([1,2,3])# 1维,整数型b=torch.tensor([[1,2],[3,4]],dtype=torch.float32)# 2维,指定类型# 2. 从NumPy创建importnumpyasnp arr=np.array([1,2,3])c=torch.from_numpy(arr)# 共享内存# 3. 创建特殊数值张量zeros=torch.zeros(3,4)# 全0,形状 3x4ones=torch.ones(2,3,4)# 全1,3维eye=torch.eye(5)# 单位矩阵rand=torch.randn(3,3)# 标准正态分布随机数# 4. 从已有张量创建(继承属性)d=torch.zeros_like(b)# 形状与b相同,值全0e=b.new_ones(2,2)# 使用b的dtype和device创建# 5. 创建可求导的张量(用于神经网络)x=torch.tensor([2.0,3.0],requires_grad=True)四、数据集
在深度学习中,数据集(Dataset)是用于训练、验证和测试模型的样本集合。每个样本通常包含:
- 特征(Features/X):模型的输入数据(如图像像素、文本词向量、表格数值)
- 标签(Labels/Y):模型需要预测的目标值(如图像类别、房价数值、翻译文本)
核心原则:数据质量和数量往往比模型架构更能决定最终效果上限——“Garbage in, garbage out”。
数据集的三大划分
| 划分 | 用途 | 占比(常见) | 是否参与梯度更新 |
|---|---|---|---|
| 训练集 | 用于模型学习参数,是梯度更新的依据 | 70%~80% | ✅ 是 |
| 验证集 | 用于调参(学习率、网络层数)和早停,防止过拟合 | 10%~15% | ❌ 否 |
| 测试集 | 最终评估模型泛化能力,严格来说只能使用一次 | 10%~15% | ❌ 否 |
常见的数据集类型
| 领域 | 经典数据集 | 任务类型 |
|---|---|---|
| 图像 | MNIST, CIFAR-10, ImageNet, COCO | 分类、检测、分割 |
| 文本 | IMDb, AG News, WikiText, GLUE | 分类、情感分析、问答 |
| 语音 | LibriSpeech, VoxCeleb | 识别、说话人验证 |
| 表格 | UCI 各数据集, Kaggle 房价 | 回归、分类 |
| 图结构 | Cora, PubMed, OGB | 节点分类、链接预测 |