From DeepSeek-R1-web
马氏距离(Mahalanobis Distance)是一个衡量数据点之间“真实距离”的工具,它比欧氏距离更智能。我们可以通过一个简单例子来理解它。
1. 先复习欧氏距离
假设你在平面上有两个点 ( A(1,2) ) 和 ( B(4,6) ),它们的欧氏距离是:
(
4
−
1
)
2
+
(
6
−
2
)
2
=
5
\sqrt{(4-1)^2 + (6-2)^2} = 5
(4−1)2+(6−2)2=5
特点:欧氏距离默认每个坐标轴的重要性相同,且坐标轴之间完全独立(比如x轴和y轴没有关联)。
2. 马氏距离要解决的问题
假设你考试有两门科目:数学和语文。
- 情况1:数学成绩的分数范围是0-100,语文也是0-100。此时用欧氏距离合理。
- 情况2:数学成绩的范围是0-100,但语文成绩的范围是0-10(比如按10分制评分)。
问题:直接算欧氏距离时,语文的1分差异会被放大(因为范围小),而数学的1分差异被缩小。
解决方法:马氏距离通过考虑数据的分布(比如方差、协方差),自动调整不同维度的“重要性”。
3. 马氏距离的直观理解
想象一群学生的数学和语文成绩分布成一个椭圆(而不是正圆),椭圆的长轴和短轴方向代表成绩的变化趋势。
- 欧氏距离:像用圆规画圆,无论椭圆方向如何,都按正圆测量距离。
- 马氏距离:会沿着椭圆的形状“拉伸或压缩”坐标系,使椭圆变成一个正圆,再计算距离。
结果:在椭圆分布的数据中,马氏距离能更真实地反映点之间的相似性。
4. 数学定义
设数据点
x
\mathbf{x}
x,均值为
μ
\mathbf{\mu}
μ,协方差矩阵为
Σ
\Sigma
Σ,则马氏距离为:
D
Mahalanobis
=
(
x
−
μ
)
T
Σ
−
1
(
x
−
μ
)
D_{\text{Mahalanobis}} = \sqrt{ (\mathbf{x} - \mathbf{\mu})^T \Sigma^{-1} (\mathbf{x} - \mathbf{\mu}) }
DMahalanobis=(x−μ)TΣ−1(x−μ)
关键点:
- Σ − 1 \Sigma^{-1} Σ−1是协方差矩阵的逆,用来“标准化”不同维度的尺度(比如将语文成绩的10分制转换为与数学的100分制可比)。
- 如果数据各维度独立且方差相同,马氏距离退化为欧氏距离。
5. 回到课程公式
在策略 π θ ( a t ∣ s t ) \pi_{\theta}(\mathbf{a}_t | \mathbf{s}_t) πθ(at∣st)中:
- 动作 a t \mathbf{a}_t at服从以 f ( s t ) f(\mathbf{s}_t) f(st)为均值、 Σ \Sigma Σ为协方差的高斯分布。
- 使用马氏距离
∥
f
(
s
t
)
−
a
t
∥
Σ
2
\| f(\mathbf{s}_t) - \mathbf{a}_t \|_{\Sigma}^2
∥f(st)−at∥Σ2,相当于:
- 考虑不同动作维度的方差(比如某些关节的移动范围大,某些小)。
- 考虑动作维度之间的相关性(比如两个关节联动时,它们的动作可能相关)。
6. 举个具体例子
假设机器人手臂有两个关节:
- 关节1的移动范围大(方差大),关节2的移动范围小(方差小)。
- 如果直接用欧氏距离,会高估关节2的误差;用马氏距离则会自动按方差调整,更合理地衡量动作偏差。
总结
- 欧氏距离:适用于各维度独立、尺度相同的情况(比如平面几何)。
- 马氏距离:适用于数据有不同方差、维度相关的情况(比如考试成绩、传感器数据)。
- 课程中的公式:用马氏距离衡量动作与均值的偏差,能更合理地反映策略的优劣。