feat: add comprehensive backend topics and fix build issues
## 新增内容 ### 附录文档扩展 - 扩展前端项目架构文档 (frontend-project-architecture.md) - 扩展后端项目架构文档 (backend-project-architecture.md) - 扩展数据治理文档 (data-governance.md) - 扩展数据可视化文档 (data-visualization.md) - 扩展分布式系统文档 (distributed-systems.md) - 扩展高可用文档 (high-availability.md) - 扩展单体到微服务文档 (monolith-to-microservices.md) - 扩展系统设计方法论文档 (system-design-methodology.md) - 扩展 Docker 容器文档 (docker-containers.md) - 扩展 Kubernetes 文档 (kubernetes.md) - 扩展 Linux 基础文档 (linux-basics.md) - 扩展神经网络文档 (neural-networks.md) ### 新增交互式组件 - 数据治理组件: DataQualityDemo, DataGovernanceFrameworkDemo, DataLineageDemo - 数据可视化组件: ChartTypeSelectorDemo, DashboardLayoutDemo - 分布式系统组件: CAPTheoremDemo, ConsistencyModelsDemo, DistributedChallengesDemo - 高可用组件: AvailabilityCalculatorDemo, FailoverStrategyDemo - 系统设计组件: SystemDesignStepsDemo, CapacityEstimationDemo - Docker 容器组件: DockerArchitectureDemo, DockerLifecycleDemo - Kubernetes 组件: K8sArchitectureDemo, K8sWorkloadsDemo - Linux 基础组件: LinuxFileSystemDemo, LinuxCommandDemo, LinuxPermissionsDemo - 神经网络组件: NeuronDemo, NetworkLayersDemo, NetworkArchitectureDemo - 单体到微服务组件: ArchEvolutionDemo - 项目架构组件: ProjectArchitectureComparisonDemo - 附录导航组件: AppendixFlowMap ### 英文版重构 - 将 en-us 目录重命名为 en - 更新相关配置和组件中的语言代码 ## Bug 修复 - 修复 index.js 中重复的组件导入语句导致的 build 失败 - 恢复被注释的 InvertedIndexDemo 和 SearchRelevanceDemo 导入 - 修复 HomeFeatures.vue 中 en-us 与 config.mjs 中 en 不一致导致的语言切换问题 ## 其他改进 - 添加构建脚本 (scripts/build.mjs) - 更新依赖版本
This commit is contained in:
@@ -1,3 +1,315 @@
|
||||
# 神经网络与深度学习
|
||||
|
||||
> 待实现
|
||||
::: tip 前言
|
||||
**神经网络是 AI 革命的引擎。** 从 ChatGPT 的语言理解到自动驾驶的图像识别,背后都是神经网络在工作。它不是魔法,而是一套精巧的数学框架——通过大量数据"学习"出输入到输出的映射关系。理解它的基本原理,能帮你更好地使用和调试 AI 工具。
|
||||
:::
|
||||
|
||||
**这篇文章会带你学什么?**
|
||||
|
||||
学完这章后,你将获得:
|
||||
|
||||
- **核心概念**:理解神经元、层、前向传播、反向传播的基本原理
|
||||
- **网络类型**:了解 CNN、RNN、Transformer 等主流架构的特点和适用场景
|
||||
- **训练过程**:明白模型是如何从数据中"学习"的
|
||||
- **关键技巧**:掌握过拟合、学习率、正则化等实用概念
|
||||
- **发展脉络**:了解从感知机到大语言模型的演进历程
|
||||
|
||||
| 章节 | 内容 | 核心概念 |
|
||||
|-----|------|---------|
|
||||
| **第 1 章** | 从神经元到网络 | 感知机、激活函数、前向传播 |
|
||||
| **第 2 章** | 网络如何学习 | 损失函数、梯度下降、反向传播 |
|
||||
| **第 3 章** | 主流网络架构 | CNN、RNN、Transformer |
|
||||
| **第 4 章** | 训练的艺术 | 过拟合、正则化、超参数调优 |
|
||||
| **第 5 章** | 发展历程与前沿 | 从感知机到 GPT |
|
||||
|
||||
---
|
||||
|
||||
## 1. 从神经元到网络
|
||||
|
||||
### 单个神经元
|
||||
|
||||
神经网络的最小单元是**神经元**(Neuron)。它模拟了生物神经元的工作方式:接收多个输入信号,加权求和,通过激活函数产生输出。
|
||||
|
||||
```
|
||||
输入 x1 ──→ ×w1 ──┐
|
||||
输入 x2 ──→ ×w2 ──┼──→ Σ(加权求和) + b(偏置) ──→ f(激活函数) ──→ 输出
|
||||
输入 x3 ──→ ×w3 ──┘
|
||||
```
|
||||
|
||||
数学表达:**y = f(w₁x₁ + w₂x₂ + w₃x₃ + b)**
|
||||
|
||||
<NeuronDemo />
|
||||
|
||||
### 激活函数:为什么需要非线性?
|
||||
|
||||
如果没有激活函数,无论多少层神经元叠加,最终都等价于一个线性变换(矩阵乘法)。激活函数引入**非线性**,让网络能学习复杂的模式。
|
||||
|
||||
| 激活函数 | 公式 | 特点 | 常用场景 |
|
||||
|---------|------|------|---------|
|
||||
| ReLU | max(0, x) | 简单高效,训练快 | 隐藏层的默认选择 |
|
||||
| Sigmoid | 1/(1+e⁻ˣ) | 输出 0~1 | 二分类输出层 |
|
||||
| Tanh | (eˣ-e⁻ˣ)/(eˣ+e⁻ˣ) | 输出 -1~1 | RNN 中常用 |
|
||||
| Softmax | eˣᵢ/Σeˣⱼ | 输出概率分布 | 多分类输出层 |
|
||||
|
||||
### 从神经元到网络
|
||||
|
||||
把多个神经元组织成**层**,多个层串联起来,就构成了神经网络:
|
||||
|
||||
```
|
||||
输入层 隐藏层1 隐藏层2 输出层
|
||||
(特征) (提取低级特征) (提取高级特征) (预测结果)
|
||||
|
||||
x1 ──→ [○ ○ ○ ○] ──→ [○ ○ ○] ──→ [○ ○]
|
||||
x2 ──→ [○ ○ ○ ○] ──→ [○ ○ ○] ──→ 猫/狗
|
||||
x3 ──→ [○ ○ ○ ○] ──→ [○ ○ ○]
|
||||
```
|
||||
|
||||
| 概念 | 说明 |
|
||||
|------|------|
|
||||
| 输入层 | 接收原始数据(图片像素、文本向量等) |
|
||||
| 隐藏层 | 中间处理层,层数越多网络越"深"(深度学习的"深") |
|
||||
| 输出层 | 产生最终预测(分类概率、回归值等) |
|
||||
| 前向传播 | 数据从输入层逐层流向输出层的过程 |
|
||||
|
||||
::: tip 为什么叫"深度"学习?
|
||||
传统机器学习通常只有 1-2 层。当隐藏层数量增加到几十甚至上百层时,就叫"深度"学习。更深的网络能学习更抽象的特征:第一层学边缘,第二层学纹理,第三层学部件,更深的层学到"这是一只猫"。
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## 2. 网络如何学习
|
||||
|
||||
神经网络的"学习"本质上是一个**优化问题**:找到一组权重(w)和偏置(b),使得网络的预测尽可能接近真实答案。
|
||||
|
||||
### 训练三步曲
|
||||
|
||||
```
|
||||
1. 前向传播:输入数据,得到预测结果
|
||||
2. 计算损失:用损失函数衡量预测与真实值的差距
|
||||
3. 反向传播:根据损失,计算每个权重的梯度,更新权重
|
||||
↓
|
||||
重复以上步骤,直到损失足够小
|
||||
```
|
||||
|
||||
### 损失函数:衡量"错得有多离谱"
|
||||
|
||||
损失函数(Loss Function)量化了预测值和真实值之间的差距。训练的目标就是最小化损失。
|
||||
|
||||
| 损失函数 | 公式简述 | 适用场景 |
|
||||
|---------|---------|---------|
|
||||
| MSE(均方误差) | 预测值与真实值差的平方的均值 | 回归问题 |
|
||||
| Cross-Entropy(交叉熵) | -Σ y·log(ŷ) | 分类问题 |
|
||||
| Binary Cross-Entropy | 交叉熵的二分类版本 | 二分类问题 |
|
||||
|
||||
### 梯度下降:找到最低点
|
||||
|
||||
想象你站在一座山上,蒙着眼睛要走到最低点。你能做的就是**摸一下脚下的坡度,然后往下坡方向走一步**。这就是梯度下降。
|
||||
|
||||
```
|
||||
损失值
|
||||
↑
|
||||
│ ╱╲
|
||||
│ ╱ ╲ ← 当前位置
|
||||
│ ╱ ╲ ↙ 沿梯度方向下降
|
||||
│ ╱ ╲╱ ← 局部最小值
|
||||
│╱ ╲╱ ← 全局最小值
|
||||
└──────────────→ 权重值
|
||||
```
|
||||
|
||||
| 概念 | 说明 |
|
||||
|------|------|
|
||||
| 梯度 | 损失函数对每个权重的偏导数,指示"往哪个方向调整能减少损失" |
|
||||
| 学习率 | 每一步走多远。太大会跳过最低点,太小会收敛太慢 |
|
||||
| 批量大小 | 每次用多少样本计算梯度。全量太慢,单样本太抖,小批量(mini-batch)是折中 |
|
||||
|
||||
### 反向传播:链式法则的胜利
|
||||
|
||||
反向传播(Backpropagation)是计算梯度的高效算法。它利用微积分的**链式法则**,从输出层开始,逐层向后计算每个权重对损失的贡献。
|
||||
|
||||
```
|
||||
前向传播:输入 → 隐藏层1 → 隐藏层2 → 输出 → 损失
|
||||
反向传播:损失 → 输出 → 隐藏层2 → 隐藏层1 → 更新所有权重
|
||||
```
|
||||
|
||||
::: tip 直觉理解反向传播
|
||||
把神经网络想象成一条流水线。产品(预测)出了问题(损失大),你需要从最后一道工序开始往回查,看每道工序(每层权重)对最终问题贡献了多少,然后按贡献大小调整。贡献大的多调,贡献小的少调。
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## 3. 主流网络架构
|
||||
|
||||
不同类型的数据需要不同的网络架构。选对架构,事半功倍。
|
||||
|
||||
<NetworkLayersDemo />
|
||||
|
||||
### 3.1 CNN(卷积神经网络)
|
||||
|
||||
CNN 是处理图像的王者。核心思想:用小的卷积核在图像上滑动,提取局部特征。
|
||||
|
||||
```
|
||||
输入图像 → [卷积层→激活→池化] × N → 全连接层 → 输出
|
||||
28×28 提取边缘/纹理/形状 分类结果
|
||||
```
|
||||
|
||||
| 特点 | 说明 |
|
||||
|------|------|
|
||||
| 局部连接 | 每个神经元只看一小块区域,而非整张图 |
|
||||
| 参数共享 | 同一个卷积核在整张图上复用,大幅减少参数 |
|
||||
| 平移不变性 | 猫在图片左边还是右边,都能识别 |
|
||||
| 层级特征 | 浅层学边缘,深层学语义 |
|
||||
|
||||
代表模型:LeNet、AlexNet、VGG、ResNet、EfficientNet
|
||||
|
||||
### 3.2 RNN(循环神经网络)
|
||||
|
||||
RNN 专为**序列数据**设计。它的隐藏状态会传递到下一个时间步,让网络具有"记忆"能力。
|
||||
|
||||
```
|
||||
时间步 t1 时间步 t2 时间步 t3
|
||||
"我" ──→ "喜欢" ──→ "猫"
|
||||
↓ ↓ ↓
|
||||
[h1] ──→ [h2] ──→ [h3] ──→ 输出
|
||||
↑ ↑ ↑
|
||||
隐藏状态在时间步之间传递(记忆)
|
||||
```
|
||||
|
||||
| 变体 | 解决的问题 | 核心机制 |
|
||||
|------|-----------|---------|
|
||||
| 原始 RNN | 基础序列建模 | 简单循环连接 |
|
||||
| LSTM | 长序列梯度消失 | 遗忘门、输入门、输出门 |
|
||||
| GRU | LSTM 参数太多 | 简化为重置门和更新门 |
|
||||
| 双向 RNN | 只能看到过去 | 同时从前往后和从后往前处理 |
|
||||
|
||||
::: tip LSTM 的门控机制
|
||||
LSTM 的精妙之处在于三个"门":**遗忘门**决定丢弃哪些旧记忆,**输入门**决定存入哪些新信息,**输出门**决定输出哪些内容。就像你读一本书,会选择性地记住重要情节、忘掉无关细节。
|
||||
:::
|
||||
|
||||
### 3.3 Transformer:注意力就是一切
|
||||
|
||||
2017 年 Google 发表的 "Attention Is All You Need" 论文提出了 Transformer,彻底改变了 AI 领域。它用**自注意力机制**替代了循环结构,是 GPT、BERT、Claude 等大模型的基础。
|
||||
|
||||
```
|
||||
输入序列 → 嵌入 + 位置编码 → [多头注意力 → 前馈网络] × N → 输出
|
||||
↑
|
||||
每个词都能"看到"所有其他词
|
||||
```
|
||||
|
||||
| 优势 | 说明 |
|
||||
|------|------|
|
||||
| 并行计算 | 不像 RNN 必须逐步处理,Transformer 可以并行处理整个序列 |
|
||||
| 长距离依赖 | 任意两个位置之间直接建立联系,不受距离限制 |
|
||||
| 可扩展性 | 模型越大、数据越多,效果越好(Scaling Law) |
|
||||
|
||||
**自注意力的直觉**:读"小猫坐在垫子上,因为**它**很累"这句话时,"它"需要关注"小猫"才能理解含义。自注意力让模型学会这种关联——为序列中的每对词计算一个"相关性分数"。
|
||||
|
||||
<NetworkArchitectureDemo />
|
||||
|
||||
## 4. 训练的艺术
|
||||
|
||||
有了好的架构还不够,训练过程中有很多"坑"需要避开。
|
||||
|
||||
### 4.1 过拟合 vs 欠拟合
|
||||
|
||||
| 问题 | 表现 | 原因 | 解决方案 |
|
||||
|------|------|------|---------|
|
||||
| 过拟合 | 训练集表现好,测试集表现差 | 模型太复杂,"背答案"而非学规律 | 正则化、Dropout、数据增强、早停 |
|
||||
| 欠拟合 | 训练集和测试集都表现差 | 模型太简单,学不到规律 | 增加模型容量、训练更久、更好的特征 |
|
||||
|
||||
```
|
||||
误差
|
||||
↑
|
||||
│ ╲ 训练误差 测试误差 ╱
|
||||
│ ╲ ╱
|
||||
│ ╲─────────────────╱
|
||||
│ 欠拟合 ← 最佳点 → 过拟合
|
||||
└──────────────────────────→ 模型复杂度
|
||||
```
|
||||
|
||||
### 4.2 关键超参数
|
||||
|
||||
超参数是训练前需要人为设定的参数(不是模型自己学的):
|
||||
|
||||
| 超参数 | 作用 | 常见范围 | 调优建议 |
|
||||
|--------|------|---------|---------|
|
||||
| 学习率 | 每步更新的幅度 | 1e-5 ~ 1e-1 | 最重要的超参数,通常从 1e-3 开始 |
|
||||
| 批量大小 | 每次训练用多少样本 | 16 ~ 512 | 越大训练越稳定,但需要更多显存 |
|
||||
| 训练轮数(Epoch) | 遍历整个数据集的次数 | 10 ~ 100+ | 配合早停法,验证集不再提升就停 |
|
||||
| 优化器 | 梯度更新策略 | Adam、SGD | Adam 是默认选择,SGD+动量适合精调 |
|
||||
|
||||
### 4.3 正则化技巧
|
||||
|
||||
防止过拟合的常用手段:
|
||||
|
||||
| 技巧 | 原理 | 使用方式 |
|
||||
|------|------|---------|
|
||||
| Dropout | 训练时随机关闭部分神经元 | 通常 p=0.1~0.5 |
|
||||
| 权重衰减 | 在损失函数中加入权重大小的惩罚 | L2 正则化,λ=1e-4 |
|
||||
| 数据增强 | 对训练数据做随机变换(翻转、裁剪、旋转) | 图像任务必备 |
|
||||
| 早停法 | 验证集损失不再下降时停止训练 | patience=5~10 |
|
||||
| Batch Normalization | 标准化每层的输入分布 | 加速收敛,有轻微正则化效果 |
|
||||
|
||||
::: tip 训练的经验法则
|
||||
1. 先用小数据集跑通整个流程,确认代码没 bug
|
||||
2. 从已有的预训练模型开始微调,而非从零训练
|
||||
3. 学习率是最值得花时间调的超参数
|
||||
4. 如果训练损失不下降,先检查数据和代码,再怀疑模型
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## 5. 发展历程与前沿
|
||||
|
||||
神经网络的发展经历了几次"寒冬"和"复兴",每次突破都源于关键的技术创新。
|
||||
|
||||
| 年代 | 里程碑 | 关键突破 |
|
||||
|------|--------|---------|
|
||||
| 1958 | 感知机(Perceptron) | 第一个神经网络模型,只能处理线性问题 |
|
||||
| 1986 | 反向传播算法 | 让多层网络的训练成为可能 |
|
||||
| 1998 | LeNet(CNN) | 卷积网络在手写数字识别上大获成功 |
|
||||
| 2012 | AlexNet | 深度 CNN 在 ImageNet 上碾压传统方法,深度学习爆发 |
|
||||
| 2014 | GAN(生成对抗网络) | 两个网络对抗训练,能生成逼真图像 |
|
||||
| 2017 | Transformer | "Attention Is All You Need",注意力机制取代 RNN |
|
||||
| 2018 | BERT | 预训练+微调范式,NLP 全面突破 |
|
||||
| 2020 | GPT-3 | 1750 亿参数,展示了大模型的涌现能力 |
|
||||
| 2022 | ChatGPT | RLHF 对齐技术,AI 进入大众视野 |
|
||||
| 2023+ | 多模态大模型 | GPT-4V、Claude 等,同时理解文本和图像 |
|
||||
|
||||
### 当前趋势
|
||||
|
||||
| 方向 | 说明 |
|
||||
|------|------|
|
||||
| 大模型(LLM) | 参数量从亿级到万亿级,涌现出推理、编程等能力 |
|
||||
| 多模态 | 同一个模型处理文本、图像、音频、视频 |
|
||||
| 高效微调 | LoRA、QLoRA 等技术让普通开发者也能微调大模型 |
|
||||
| AI Agent | 让大模型使用工具、规划任务、自主完成复杂目标 |
|
||||
| 小模型蒸馏 | 用大模型的知识训练小模型,在端侧部署 |
|
||||
|
||||
::: tip 对开发者的启示
|
||||
你不需要从零训练神经网络。现代 AI 开发更多是**调用 API**(如 OpenAI、Claude API)或**微调预训练模型**(如用 Hugging Face)。但理解底层原理能帮你更好地选择模型、设计 prompt、诊断问题。
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## 总结
|
||||
|
||||
| 核心概念 | 一句话总结 |
|
||||
|---------|-----------|
|
||||
| 神经元 | 加权求和 + 激活函数,网络的最小计算单元 |
|
||||
| 前向传播 | 数据从输入层逐层流向输出层,产生预测 |
|
||||
| 反向传播 | 从损失出发,逐层计算梯度,更新权重 |
|
||||
| CNN | 卷积核提取局部特征,图像处理的首选 |
|
||||
| RNN/LSTM | 循环连接保持记忆,处理序列数据 |
|
||||
| Transformer | 自注意力并行处理,大模型的基础架构 |
|
||||
| 过拟合 | 模型"背答案",用正则化、Dropout 等手段防止 |
|
||||
| 迁移学习 | 站在巨人肩膀上,用预训练模型微调解决新问题 |
|
||||
|
||||
---
|
||||
|
||||
## 延伸阅读
|
||||
|
||||
- [3Blue1Brown - 神经网络系列视频](https://www.3blue1brown.com/topics/neural-networks) — 最直观的可视化讲解
|
||||
- [Stanford CS231n](http://cs231n.stanford.edu/) — 经典的卷积神经网络课程
|
||||
- [The Illustrated Transformer](https://jalammar.github.io/illustrated-transformer/) — 图解 Transformer 架构
|
||||
- [Neural Networks and Deep Learning](http://neuralnetworksanddeeplearning.com/) — 免费在线教材
|
||||
- [Hugging Face 课程](https://huggingface.co/learn) — 动手实践 Transformer 和大模型
|
||||
|
||||
Reference in New Issue
Block a user