本文来源于数据从业者全栈知识库,更多体系化内容请访问知识库。
为什么要学深度学习?
在 机器学习基础 中,我们学习了让机器从数据中学习的基本方法。但传统机器学习有一个”天花板”——特征工程太依赖人的经验。
一、神经网络:模拟大脑的计算系统
1.1 什么是神经网络?
神经网络的灵感来源于人类大脑。我们的大脑有约860亿个神经元,通过突触相互连接,共同完成思考、记忆、决策等任务。
graph LR
subgraph "人脑神经元"
A[树突<br/>接收信号] --> B[细胞体<br/>处理信号]
B --> C[轴突<br/>传递信号]
end
subgraph "人工神经元"
D[输入层<br/>接收数据] --> E[隐藏层<br/>处理数据]
E --> F[输出层<br/>给出结果]
end
1.2 神经元的工作原理
每个人工神经元做三件事:
| 步骤 | 动作 | 生活类比 |
|---|---|---|
| 1. 接收 | 收集所有输入信号 | 听取所有人的意见 |
| 2. 加权求和 | 给不同输入不同的重要性 | 有的人意见更重要 |
| 3. 激活判断 | 决定是否”激活”输出 | 综合判断后做决定 |
1.3 激活函数:让神经网络”活”起来
如果神经元只做线性计算(加权求和),那叠加再多层也只是一条直线。激活函数让网络能够学习复杂的非线性关系。
graph TD
subgraph "常用激活函数"
A[Sigmoid] --> A1[输出0-1之间<br/>像概率]
B[ReLU] --> B1[负数变0,正数不变<br/>简单高效]
C[Tanh] --> C1[输出-1到1之间<br/>中心对称]
D[Softmax] --> D1[多个输出加起来=1<br/>用于分类]
end
二、深度学习的”深度”从何而来?
2.1 从浅层到深层
“深度”指的是神经网络的层数。
| 网络类型 | 层数 | 能力 | 类比 |
|---|---|---|---|
| 单层感知机 | 1层 | 只能解决线性问题 | 小学生 |
| 浅层网络 | 2-3层 | 简单的非线性问题 | 中学生 |
| 深度网络 | 几十层 | 复杂模式识别 | 大学生 |
| 超深网络 | 上百层 | 图像/语音/语言 | 博士 |
2.2 深度学习的三大支柱
深度学习能在2012年后爆发,靠的是三大支柱的同时成熟:
graph TD
A[深度学习爆发] --> B[大数据]
A --> C[大算力]
A --> D[好算法]
B --> B1[互联网产生海量数据<br/>ImageNet等标注数据集]
C --> C1[GPU并行计算<br/>云计算普及]
D --> D1[反向传播优化<br/>Dropout/BatchNorm等技巧]
三、主流神经网络架构速览
3.1 全连接网络(MLP):基础中的基础
每一层的每个神经元都与下一层的所有神经元相连。
适用场景:结构化数据(表格数据)的分类和回归
优点:简单直观 缺点:参数太多,处理图像/文本效率低
3.2 卷积神经网络(CNN):图像处理之王
核心概念:
| 概念 | 作用 | 生活类比 |
|---|---|---|
| 卷积核 | 提取局部特征 | 放大镜扫描图片 |
| 池化层 | 降低分辨率,保留关键信息 | 缩略图 |
| 特征图 | 不同卷积核提取的特征 | 从不同角度看同一张照片 |
graph LR
A[原始图片] --> B[卷积层<br/>提取边缘]
B --> C[池化层<br/>压缩信息]
C --> D[卷积层<br/>提取形状]
D --> E[池化层<br/>再压缩]
E --> F[全连接层<br/>综合判断]
F --> G[输出:猫/狗]
经典模型演进:
- LeNet(1998):开山鼻祖,识别手写数字
- AlexNet(2012):深度学习元年,ImageNet冠军
- VGG(2014):更深更简洁
- ResNet(2015):残差连接,可以训练上千层
- EfficientNet(2019):效率与精度的平衡
应用领域:
- 图像分类(这是什么?)
- 目标检测(在哪里?)→ 详见 计算机视觉
- 图像分割(精确边界在哪?)
- 人脸识别、医学影像分析
3.3 循环神经网络(RNN):处理序列数据
为什么需要RNN?
普通神经网络把每个输入当作独立的个体,但很多数据是有顺序的:
- 文本:“我 喜欢 吃 苹果” → 顺序很重要
- 语音:声波是连续的时间序列
- 股票:今天的价格和昨天有关
RNN的问题与解决:
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 短期记忆 | 信息传递会逐渐衰减 | LSTM(长短期记忆) |
| 梯度消失 | 反向传播时梯度越来越小 | GRU(门控循环单元) |
| 无法并行 | 必须顺序处理 | Transformer(注意力机制) |
3.4 Transformer:当今AI的基石
核心创新:自注意力机制(Self-Attention)
Transformer为什么这么强?
| 优势 | 说明 |
|---|---|
| 并行计算 | 所有位置可以同时处理,训练超快 |
| 长距离依赖 | 再远的词也能直接建立联系 |
| 可扩展性 | 模型越大、数据越多,效果越好 |
graph TB
subgraph "Transformer架构"
A[输入序列] --> B[词嵌入+位置编码]
B --> C[多头自注意力]
C --> D[前馈神经网络]
D --> E[重复N层]
E --> F[输出]
end
基于Transformer的模型家族:
| 模型类型 | 代表 | 特点 | 应用 |
|---|---|---|---|
| Encoder-only | BERT | 双向理解 | 文本分类、问答 |
| Decoder-only | GPT系列 | 自回归生成 | 文本生成、对话 |
| Encoder-Decoder | T5, BART | 序列到序列 | 翻译、摘要 |
四、深度学习的训练过程
4.1 训练的本质:调整参数
graph LR
A[输入数据] --> B[神经网络<br/>当前参数]
B --> C[预测结果]
C --> D{与正确答案<br/>对比}
D --> E[计算损失]
E --> F[反向传播<br/>计算梯度]
F --> G[更新参数]
G --> B
4.2 关键概念速查
| 概念 | 含义 | 类比 |
|---|---|---|
| 损失函数 | 衡量预测与真实的差距 | 考试分数(越低越好) |
| 梯度 | 参数调整的方向和幅度 | 下山时的坡度 |
| 学习率 | 每次参数调整的步长 | 下山时的步子大小 |
| 反向传播 | 从输出层往回计算梯度 | 从结果倒推原因 |
| 优化器 | 具体的参数更新策略 | 下山的具体走法 |
4.3 常见训练问题与对策
| 问题 | 症状 | 解决方案 |
|---|---|---|
| 过拟合 | 训练集很好,测试集很差 | Dropout、数据增强、正则化 |
| 欠拟合 | 训练集和测试集都不好 | 增加模型复杂度、更多特征 |
| 梯度消失 | 深层网络学不动 | ResNet残差连接、BatchNorm |
| 训练不稳定 | 损失剧烈波动 | 降低学习率、梯度裁剪 |
五、深度学习 vs 传统机器学习
| 维度 | 传统机器学习 | 深度学习 |
|---|---|---|
| 特征工程 | 人工设计特征 | 自动学习特征 |
| 数据需求 | 小数据也能work | 需要大量数据 |
| 计算资源 | CPU就够 | 需要GPU/TPU |
| 可解释性 | 较强 | 较弱(黑盒) |
| 适用场景 | 结构化数据 | 图像/语音/文本 |
| 模型复杂度 | 相对简单 | 可能有数十亿参数 |
六、深度学习实践要点
6.1 开发流程概览
graph TD
A[明确问题] --> B[数据收集与清洗]
B --> C[选择/设计网络架构]
C --> D[训练模型]
D --> E[评估与调优]
E --> F{效果达标?}
F -->|否| G[分析问题]
G --> C
F -->|是| H[部署上线]
H --> I[持续监控]
6.2 常用框架选择
| 框架 | 特点 | 适合人群 |
|---|---|---|
| PyTorch | 灵活、动态图、学术界主流 | 研究人员、想深入理解原理 |
| TensorFlow | 生产级、静态图、生态完善 | 工程部署、企业应用 |
| Keras | 简单易用、高层API | 快速原型、初学者 |
| HuggingFace | 预训练模型库、NLP首选 | 使用现成模型 |
6.3 学习建议
七、与其他主题的联系
graph TD
A[深度学习基础] --> B[大语言模型LLM]
A --> C[计算机视觉CV]
A --> D[自然语言处理NLP]
A --> E[推荐系统]
B --> F[Prompt Engineering]
B --> G[RAG技术]
B --> H[AI Agent]
C --> I[目标检测]
C --> J[图像生成]
D --> K[文本分类]
D --> L[机器翻译]
推荐学习路径:
- 本文(深度学习基础)
- → NLP基础 或 CV基础
- → 大语言模型
- → Prompt Engineering
- → AI Agent
八、本章小结
本文节选自数据从业者全栈知识库。知识库包含 2300+ 篇体系化技术文档,覆盖数据分析、数据工程、数据治理、AI 等全栈领域。了解更多 ->