概率论、统计学与最优化方法
把"不确定性、数据分布、参数寻优"翻译成概率模型和优化算法——这是机器学习、强化学习和机器人控制的数学基础。
1. 概率论基础
为什么机器人需要概率
传感器噪声、执行器误差、环境变化——机器人永远活在不确定的世界里。概率论让机器人量化不确定性并做出最优决策。
贝叶斯定理是机器人定位、目标跟踪、传感器融合的数学基石:
$$P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)}$$
条件概率:$P(A|B) = \frac{P(A \cap B)}{P(B)}$,在已知B发生时A的概率。
贝叶斯定位
# 贝叶斯更新示例:机器人定位
class BayesianLocalization:
def __init__(self, num_locations):
self.belief = np.ones(num_locations) / num_locations
def update(self, likelihood):
self.belief = self.belief * likelihood
self.belief /= self.belief.sum()
return self.belief
def predict(self, transition_matrix):
self.belief = transition_matrix @ self.belief
return self.belief
2. 随机变量与分布
| 分布 | 符号 | 使用场景 |
|---|---|---|
| 伯努利 | $B(p)$ | 抓取成功/失败 |
| 高斯 | $\mathcal{N}(\mu,\sigma^2)$ | 传感器噪声建模 |
| GMM | $\sum\pi_k\mathcal{N}(\mu_k,\Sigma_k)$ | 多模态抓取姿态 |
高斯分布
$$\mathcal{N}(x | \mu, \sigma^2) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp(-\frac{(x-\mu)^2}{2\sigma^2})$$
中心极限定理:大量独立随机变量的和趋近高斯分布→传感器噪声普遍服从高斯分布。
3. 统计学推断
MLE:$$\hat{\theta}_{MLE} = \arg\max_\theta \prod_{i=1}^{n} p(x_i | \theta)$$
MAP:$$\hat{\theta}_{MAP} = \arg\max_\theta \, p(\mathcal{D} | \theta) \cdot p(\theta)$$——MLE+先验=正则化
偏差-方差权衡:$$\text{MSE} = \text{Bias}^2 + \text{Variance} + \text{Noise}$$
机器人类比:高偏差≈机械臂太刚动不了;高方差≈太软乱抖。
4. 信息论入门
熵:$$H(X) = -\sum_x p(x) \log_2 p(x)$$——衡量不确定性
KL散度:$$D_{KL}(P \| Q) = \sum_x P(x) \log \frac{P(x)}{Q(x)}$$——PPO用KL限制策略更新
互信息:$$I(X;Y) = H(X) - H(X|Y)$$——RL中好奇心驱动的内在奖励
5. 最优化方法
梯度下降:$$\theta_{t+1} = \theta_t - \eta \nabla_\theta \mathcal{L}(\theta_t)$$
| 方法 | 创新 | 机器人适用 |
|---|---|---|
| SGD+Momentum | 动量 | 通用 |
| Adam | 自适应学习率 | 默认首选 |
| AdamW | 解耦weight decay | RL训练 |
class Adam:
def step(self, params, grad):
self.t += 1
self.m = 0.9 * self.m + 0.1 * grad
self.v = 0.999 * self.v + 0.001 * grad**2
m_hat = self.m / (1 - 0.9**self.t)
v_hat = self.v / (1 - 0.999**self.t)
params -= self.lr * m_hat / (np.sqrt(v_hat) + 1e-8)
6. 凸优化与约束优化
凸函数:局部最优=全局最优
拉格朗日乘子法:$$\mathcal{L}(x, \lambda, \mu) = f(x) + \lambda^T g(x) + \mu^T h(x)$$
应用:关节限位约束优化、MPC二次规划、接触力优化
7. 机器人中的概率应用
卡尔曼滤波
class KalmanFilter:
def __init__(self, Q=0.01, R=0.1):
self.Q, self.R = Q, R
def predict(self, u, dt=1.0):
self.x += u * dt; self.P += self.Q
def update(self, z):
K = self.P / (self.P + self.R)
self.x += K * (z - self.x)
self.P *= (1 - K)
蒙特卡洛
用随机采样估计关节不确定性对末端位姿的影响——$n=10000$次FK计算→末端位置分布。
阶段总结
概率论是处理不确定性的语言,优化方法是所有ML算法的引擎。贝叶斯思维贯穿SLAM、目标跟踪、传感器融合全过程。
知识地图
从数学到机器人算法
概率论回答“我有多确定”,统计学回答“如何从数据估计规律”,最优化回答“怎样找到最好的参数或动作”。三者共同支撑机器学习、强化学习、SLAM、MPC和机器人控制。
| 知识点 | 连接到后续内容 | 典型落地场景 |
|---|---|---|
| 贝叶斯公式 | 卡尔曼滤波、粒子滤波、SLAM后端 | 移动机器人定位、目标跟踪 |
| 高斯分布与协方差 | 多传感器融合、状态估计 | RGB-D+IMU融合、关节噪声建模 |
| MLE/MAP | 监督学习、策略学习、系统辨识 | 动力学参数估计、抓取成功率建模 |
| 梯度下降 | 深度学习、RL策略优化、VLA训练 | 训练视觉编码器、训练动作策略 |
| 凸优化与约束优化 | MPC、轨迹优化、接触力分配 | 机械臂避障、力控装配、全身控制 |
能力清单
- 能用概率分布描述传感器噪声和执行误差,并解释均值、方差、协方差的物理意义。
- 能从实验数据中估计模型参数,区分MLE、MAP和正则化之间的关系。
- 能手写一维卡尔曼滤波和贝叶斯网格定位,并用RMSE评估状态估计质量。
- 能解释梯度下降、动量、Adam、学习率衰减对训练稳定性的影响。
- 能识别一个机器人优化问题中的目标函数、约束、决策变量和可行域。
实验任务
- 传感器噪声建模:采样1000次距离测量,拟合高斯分布并画出直方图、均值线和3σ区间。
- 贝叶斯定位:实现“预测-更新”循环,比较错误观测概率从0.05到0.3时的定位稳定性。
- 梯度下降可视化:在二次函数和Rosenbrock函数上比较SGD、Momentum、Adam的收敛轨迹。
- 约束优化小项目:为2D机械臂设计末端到目标点的最短轨迹,同时满足关节角限位。
常见面试题
- 为什么SLAM和传感器融合常用高斯噪声假设?什么时候这个假设会失效?
- MLE和MAP有什么区别?为什么L2正则化可以看作高斯先验?
- 梯度下降陷入局部最优和鞍点时,学习率、动量、Adam分别有什么作用?
- MPC为什么通常会被写成带约束的优化问题?机器人里常见约束有哪些?
下一阶段前置要求
进入机器学习与深度学习前,应能熟练读懂概率密度、损失函数、梯度、正则化和训练/验证误差曲线。若这些概念仍模糊,优先完成本阶段4个实验,不要急着进入神经网络。
代码挑战
1. 贝叶斯定位器:10格网格预测-更新循环
2. MLE参数估计:关节摩擦模型(速度,力矩)→参数估计
3. 卡尔曼滤波:调整Q/R使位置估计RMSE<0.05m
推荐论文与项目
📖 Probabilistic Robotics · 📖 PRML - Bishop · 📖 Stanford EE364A 凸优化
教材式自测与学习进度
概念自测
- 解释先验、似然、后验在机器人定位中的含义。
- 说明为什么协方差矩阵能表示二维/三维不确定性椭圆。
- 比较MLE和MAP在小样本噪声数据上的差异。
- 解释KL散度为什么不是对称距离。
- 说明学习率过大和过小时训练曲线分别会怎样。
- 解释凸优化中局部最优为什么就是全局最优。
- 举例说明机器人任务中的等式约束和不等式约束。
- 说明拉格朗日乘子在约束优化中的直觉意义。
推导练习
- 从条件概率推导贝叶斯公式。
- 推导一维高斯分布负对数似然与平方误差的关系。
- 写出带L2正则的线性回归目标,并解释其MAP视角。
- 推导梯度下降在一维二次函数上的收敛条件。
- 写出带关节限位的机械臂末端误差最小化问题。
进度追踪
| 里程碑 | 验收标准 | 完成 |
|---|---|---|
| 概率基础 | 能用贝叶斯公式完成一次定位更新 | □ |
| 统计推断 | 能从数据估计均值、方差和模型参数 | □ |
| 优化算法 | 能画出不同优化器的收敛轨迹 | □ |
| 约束优化 | 能写出目标函数、约束和决策变量 | □ |
| 机器人应用 | 能解释卡尔曼滤波、SLAM和MPC为何需要本阶段知识 | □ |