# Summary
# Cues
# Notes
我来用通俗的方式解释范数的概念。
## 什么是范数?
**范数就是"长度"或"大小"的数学表达**。就像我们用尺子量物体的长度,范数是用来量向量或矩阵"有多大"的工具。
## 常见的范数类型
### 1. L1范数(曼哈顿距离)
想象你在城市里,只能沿着街道走(不能穿墙):
```Java
从A点到B点:
A ●━━━━━┓
┃
┃
┗━━● B
向量 v = [3, 4]
L1范数 = |3| + |4| = 7
```
**实际意义**:
- 稀疏性:L1范数常用于让模型参数变稀疏(很多参数变成0)
- 特征选择:在机器学习中用于自动选择重要特征
- 鲁棒性:对异常值不太敏感
### 2. L2范数(欧几里得距离)
这就是我们平时说的"直线距离":
```Java
从A点到B点:
A ●
╱
╱
●━━━● B
向量 v = [3, 4]
L2范数 = √(3² + 4²) = √25 = 5
```
**实际意义**:
- 平滑性:L2范数让参数更平滑,不会有极端值
- 能量:在物理中表示能量或强度
- 梯度裁剪:防止梯度爆炸(就像你的代码例子)
### 3. 无穷范数(最大值范数)
找出最大的那个分量:
```Java
向量 v = [3, -8, 2]
L∞范数 = max(|3|, |-8|, |2|) = 8
```
**实际意义**:
- 最坏情况:关注最极端的值
- 边界控制:确保所有值都在某个范围内
## 生活中的例子
### 1. 导航软件
- **L1范数**:实际开车距离(沿着道路)
- **L2范数**:两点间的直线距离(飞鸟距离)
### 2. 评价学生成绩
```python
成绩 = [数学:85, 语文:90, 英语:75]
# L1范数:总分
总分 = 85 + 90 + 75 = 250
# L2范数:综合能力
综合 = √(85² + 90² + 75²) = 145.3
# L∞范数:最高分
最高 = max(85, 90, 75) = 90
```
### 3. 健身数据
```python
运动量 = [跑步:30分钟, 游泳:20分钟, 骑车:40分钟]
# L1:总运动时间
# L2:运动强度的综合指标
# L∞:最长的单项运动时间
```
## 在机器学习中的应用
### 1. 正则化
```python
# L1正则化(LASSO)
损失 = 预测误差 + λ * Σ|权重|
# 效果:产生稀疏模型,自动特征选择
# L2正则化(Ridge)
损失 = 预测误差 + λ * Σ(权重²)
# 效果:防止过拟合,让权重更均匀
```
### 2. 梯度裁剪(你的代码)
```python
# 如果梯度太大(L2范数 > 阈值)
# 就等比例缩小所有梯度
# 保持方向不变,只改变大小
```
### 3. 相似度计算
```python
# 余弦相似度用到L2范数
相似度 = (A·B) / (||A||₂ * ||B||₂)
```
## 直观理解
把范数想象成:
- **L1范数**:像计程车费,每个维度的贡献是相加的
- **L2范数**:像测量距离,考虑整体的"能量"
- **L∞范数**:像限高杆,只看最高的那个
范数帮助我们:
1. **度量大小**:知道向量或矩阵有多"大"
2. **比较相似性**:判断两个向量有多"像"
3. **控制复杂度**:防止模型参数过大
4. **优化稳定性**:避免数值爆炸或消失
这就是为什么范数在机器学习中如此重要——它给了我们一个统一的方式来衡量和控制各种"大小"。