# 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. **优化稳定性**:避免数值爆炸或消失 这就是为什么范数在机器学习中如此重要——它给了我们一个统一的方式来衡量和控制各种"大小"。