Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

1.4.1 回归与分类基本问题设置

在具身智能场景中,“模型”最常干两件事: 预测一个数值(如机械臂末端未来 0.1s 的位移),或预测一个** 类别**(如“这次抓取会不会成功”)。前者是** 回归**,后者是** 分类**。这两类问题构成了监督学习的根基。


1.4.1.1 回归问题

定义与形式化

回归问题中,目标是从输入特征 \(\mathbf{x}\in\mathbb{R}^d\) 预测一个或多个连续实数 输出 \(y\in\mathbb{R}\) 或 \(\mathbb{R}^k\):

\[ f_\theta: \mathbf{x} \mapsto \hat{y} \]

其中 \(\theta\) 是模型参数(例如线性回归中的权重向量)。损失函数常用均方误差(MSE)

\[ \mathcal{L}(\theta)=\frac{1}{N}\sum_{i=1}^N (\hat{y}_i - y_i)^2 \]

通过最小化损失来学习参数。

典型例子

  • 预测机器人末端执行器在下一时刻的位姿偏移量(连续 3D 坐标与角度)。
  • 预测接触力、扭矩、滑动速度等物理量。
  • 预测电机温度、能耗等运行指标。

与具身智能的关系

在具身智能中,回归通常用于:

  • 动力学建模:根据当前状态和控制输入预测下一个状态(状态转移模型)。
  • 代价函数学习:用回归拟合“动作是否优良”的连续评分,为后续规划或强化学习服务。

【可插图:二维平面上一条拟合数据点的直线或曲线,展示回归模型拟合连续目标的直观图像。】


1.4.1.2 分类问题

定义与形式化

分类问题中,目标是预测一个离散标签

\[ f_\theta: \mathbf{x} \mapsto \hat{y},\quad \hat{y}\in{1,2,\dots,C} \]

通常模型先输出每个类别的概率 \(\hat{p}_c = P(y=c|\mathbf{x})\),再取概率最大的类别作为预测。

典型例子

  • 场景识别:桌面是否“整理干净/未整理完”。
  • 抓取可行性:当前抓取姿态是“可抓取 / 不可抓取”。
  • 障碍物类型分类:行人 / 桌子 / 箱子 / 墙面等。

常用损失:交叉熵

对于单标签多分类,标准损失为交叉熵:

\[ \mathcal{L}(\theta)=-\frac{1}{N}\sum_{i=1}^N \sum_{c=1}^C \mathbf{1}(y_i=c)\log \hat{p}_{i,c} \]

与前面在深度学习章节中出现的交叉熵损失是一致的,只是这里强调其在一般分类问题中的意义。(Google for Developers)


1.4.1.3 输入特征与模型输出的关系

监督学习的基本设定

给定训练数据集 \(\mathcal{D}={(\mathbf{x}_i,y_i)}_{i=1}^N\),我们假设存在某个未知的“真实函数”:

\[ y = f^*(\mathbf{x}) + \epsilon \]

其中 \(\epsilon\) 是噪声或未建模因素。模型的目标 就是在一个预先选好的“假设空间”(例如线性函数、决策树、神经网络等)内,找到一个 \(f_\theta\) 尽量逼近 \((f^*)\)。

  • 输入 \(\mathbf{x}\) 称为特征:可以是原始传感器读数(图像像素、关节角度),也可以是经过预处理的高层特征(PCA 主成分、CNN 的特征向量等)。
  • 输出 \(\displaystyle y\) 是我们关心的目标(回归中的数值,分类中的类别)。

经验风险最小化

大多数监督学习算法可以统一理解为经验风险最小化(ERM)

\[ \hat{\theta} = \arg\min_\theta \frac{1}{N}\sum_{i=1}^N \ell(f_\theta(\mathbf{x}_i), y_i) \]

其中 \(\ell(\cdot,\cdot)\) 是合适的损失函数(回归用 MSE,分类用交叉熵等)。(科学导向)

在具身智能场景中,这种“输入特征 \(\to\) 输出预测”的监督学习模块,往往嵌在更大系统中(如用于状态估计、成功预测),与后续的规划或强化学习协同工作。


1.4.2 过拟合、欠拟合与偏差–方差权衡

仅靠在训练集上“把损失压到很低”并不等于模型就好用。真正重要的是:在未见过的新数据上的表现——即泛化能力。(bmc.com)


1.4.2.1 过拟合

现象

  • 模型在训练集上的损失很低,准确率很高;
  • 但在验证集/测试集上表现显著变差。

这说明模型不仅学到了有用规律,还记住了训练数据中的** 噪声和偶然性模式**。在机器人场景中,这常表现为:在实验台上训练得很好,换一个桌面或灯光条件就“智商骤降”。(Interview Coder)

典型原因

  • 模型过于复杂(参数太多、结构太灵活),相对训练数据量而言容量过大。
  • 训练轮数太多,在训练集上“磨”过头。
  • 特征维度远大于样本数,模型可以用复杂组合记住具体样本。

【可插图:横轴为模型复杂度,画出训练误差持续下降,而验证误差先下降后上升的两条曲线,说明过拟合区域。】


1.4.2.2 欠拟合

现象

  • 模型在训练集和测试集上表现都不好(误差都很大)。
  • 换用更复杂的模型或加入更多有用特征后,训练误差和测试误差都会明显下降。

这是因为模型过于简单,表达能力不足,无法捕捉数据内在规律,称为高偏差 情形。(geeksforgeeks.org)

在具身智能中,例如你用一个简单的线性模型预测高度非线性的机械臂动力学,结果就是无论如何调参都拟合不好——典型欠拟合。


1.4.2.3 偏差–方差权衡

误差分解直觉

可以将预测误差(例如 MSE)拆成三部分: “不可约噪声 + 偏差² + 方差”,其中:(bmc.com)

  • 偏差(Bias):模型“平均”预测与真实函数 \((f^*)\) 的系统性偏离,反映模型是否“想错了问题”。
    • 模型太简单 → 高偏差。
  • 方差(Variance):因训练数据不同(采样不同)导致模型预测波动的程度。
    • 模型太复杂 → 容易对数据的小扰动反应剧烈 → 高方差。

权衡

  • 提高模型复杂度:偏差下降,但方差上升(更容易过拟合)。
  • 降低模型复杂度:方差下降,但偏差上升(更容易欠拟合)。

目标是在某个适中复杂度 处,使二者综合导致的测试误差最小。这就是偏差–方差权衡的核心。(compneuro.neuromatch.io)

【可插图:三条曲线——偏差²随模型复杂度单调下降,方差单调上升,总测试误差呈 U 形,最低点对应最优复杂度。】

在具身机器人中,这个权衡尤其关键:

  • 过于复杂的模型在真实机器人数据有限的情况下几乎必然过拟合;
  • 过于简单的模型又无法应对复杂接触动力学和视觉变化。

后续我们会通过正则化、早停、交叉验证等手段,在工程上实现这种权衡。


1.4.3 正则化(L1/L2)、早停与交叉验证

这一节可以理解为:如何在实践中与过拟合打“持久战”


1.4.3.1 L1/L2 正则化

基本思想

在经验风险最小化的目标函数中加入对参数大小的惩罚项,鼓励模型“更简单”、参数“更小”,从而降低方差、提升泛化能力。(Built In)

给定原始损失 \(\mathcal{L}_0(\theta)\),加正则化后变为:

\[ \mathcal{L}(\theta) = \mathcal{L}_0(\theta) + \lambda \Omega(\theta) \]

其中 \(\lambda\) 控制惩罚强度。

L2 正则化(Ridge)

\[ \Omega_{L2}(\theta) = |\theta|_2^2 = \sum_j \theta_j^2 \]

特点:

  • 倾向将所有参数“缩小”但不变为 0。
  • 对异常值更敏感。
  • 在许多线性模型、深度学习中非常常用(权重衰减)。(Medium)

L1 正则化(LASSO)

\[ \Omega_{L1}(\theta) = |\theta|_1 = \sum_j |\theta_j| \]

特点:

  • 更倾向把一部分参数直接压到 0,产生稀疏解,起到类似“自动特征选择”的作用。
  • 对异常值更鲁棒。(neptune.ai)

在机器人应用中,L1 可用于从大量传感器特征中“自动挑出更重要的一小部分”;L2 更适合作为通用的稳定化手段。

【可插图:二维参数空间中,L2 约束是圆,L1 约束是菱形,展示为什么 L1 更容易压出稀疏解(交点落在坐标轴上)。】


1.4.3.2 早停策略

早停(Early Stopping)是深度学习中最实用的“隐式正则化”之一,本质思想非常简单:

  1. 将数据分为训练集与验证集。
  2. 训练过程中监控验证集的损失或评价指标。
  3. 一旦发现验证性能在若干轮内不再提升,甚至开始变差,就停止训练,并回滚到验证集性能最好的那一轮的模型参数。(Interview Coder)

从偏差–方差的角度看:

  • 前期训练:模型偏差快速下降,方差还不高;
  • 后期训练:模型开始对训练集噪声“死磕”,方差明显上升,验证误差反而上升。

早停把学习过程“截断”在最佳点附近,相当于对参数大小施加了一种时间维度上的约束,可以视作一种正则化。

在具身机器人系统训练中,早停尤其常用,因为:

  • 真实数据很贵,不希望过拟合少量轨迹;
  • 训练时间长,多跑几轮意味着真实机器人磨损和风险增加。

1.4.3.3 交叉验证

核心目的:更可靠地评估模型与超参数

单次划分训练/验证集往往运气成分大。交叉验证(Cross-Validation) 通过多次划分并平均结果,得到更稳健的性能估计。(RCAC)

K 折交叉验证(K-fold CV)

  1. 将数据随机划分为 K 个大小近似相等的子集。
  2. 每次选其中 1 折作为验证集,其余 K-1 折作为训练集,训练并评估模型。
  3. 循环 K 次,K 个验证结果取平均,作为这个模型/超参数的最终评价。

留一交叉验证(LOO CV)

  • 特殊情况:K = N,每次只留出 1 个样本做验证,其余 N-1 个样本训练。
  • 理论上偏差很小,但计算开销极大。

交叉验证常用于:

  • 比较不同模型(如线性回归 vs 带核的 SVM);
  • 搜索正则化系数 \(\lambda\)、核函数参数等超参数的“最佳组合”。

在具身智能项目中,由于收集到的数据往往结构复杂(多机器人、多任务),可以按任务或场景划分折,从而评估模型的任务泛化能力,而不仅仅是随机样本的泛化。

【可插图:把数据集切成 K 份的小块,依次轮流作为验证集的示意图。】


1.4.4 核方法与高维特征空间直觉

当数据在原始特征空间中非线性可分 时,我们可以尝试将它映射到一个更高维的空间,使其线性可分,然后再在该空间里做线性模型。这就是** 核方法**背后的核心直觉。(维基百科)


1.4.4.1 核技巧

假设有一个显式特征映射:

\[ \phi: \mathcal{X} \to \mathcal{H} \]

将原始输入 \(\mathbf{x}\) 映射到高维(甚至无限维)特征空间 \(\mathcal{H}\)。在该空间中,我们做的是线性模型,例如线性分类或线性回归。

问题在于:\(\phi(\mathbf{x})\) 可能极高维,显式计算代价巨大

核技巧(Kernel Trick) 利用如下事实:许多线性算法只依赖于数据点之间的内积 \(\phi(\mathbf{x}_i)^\top\phi(\mathbf{x}_j)\)。如果我们找到一个函数 \(\displaystyle K\) 使得:(维基百科)

\[ K(\mathbf{x}_i,\mathbf{x}_j) = \phi(\mathbf{x}_i)^\top\phi(\mathbf{x}_j) \]

那么就可以直接在原空间计算 \(K(\mathbf{x}_i,\mathbf{x}_j)\),而不必显式计算 \(\phi(\mathbf{x})\) 本身,从而“隐式地”在高维空间里做线性学习——这就是核技巧。

【可插图:左边是原空间中无法线性分开的红蓝点;右边是高维特征空间中被超平面分开的示意,中间标注“\(\phi(x)\)”与“\(K(x,x’)\)”的关系。】


1.4.4.2 常见核函数

常用核函数包括:(维基百科)

  1. 线性核

    \[ K(\mathbf{x},\mathbf{z}) = \mathbf{x}^\top\mathbf{z} \]

    对应没有显式映射(\(\phi\) 为恒等映射),即普通线性模型。

  2. 多项式核(Polynomial Kernel)

    \[ K(\mathbf{x},\mathbf{z}) = (\gamma \mathbf{x}^\top\mathbf{z} + r)^d \]

    • 参数 \(\displaystyle d\) 控制多项式次数,\(\displaystyle r\) 是偏置项,\(\gamma\) 控制尺度。
    • 对应在高维空间里包含各种单项式组合(如 \((x_1^2x_2)\) 等)。
  3. 高斯核 / RBF 核(Radial Basis Function)

    \[ K(\mathbf{x},\mathbf{z}) = \exp\left(-\frac{|\mathbf{x}-\mathbf{z}|^2}{2\sigma^2}\right) \]

    • \(\sigma\) 控制“影响范围”。
    • 对应于无限维特征空间,具有很强的非线性拟合能力。

在机器人具身智能中,核方法可以用于:

  • 在低维状态特征上构造非线性回归模型(如动力学、接触力预测);
  • 在有限训练数据下构建较强的非线性分类器(如“可抓取 vs 不可抓取”)。

1.4.4.3 支持向量机中的核方法

线性 SVM 回顾

支持向量机(SVM)是一类通过最大化分类间隔来获得鲁棒决策边界的监督学习方法,可用于分类与回归。其线性版在特征空间中学习一个超平面:(Particle Data Group)

\[ f(\mathbf{x}) = \text{sign}(\mathbf{w}^\top\mathbf{x} + b) \]

训练目标可以写成仅依赖于样本之间的内积 \(\mathbf{x}_i^\top\mathbf{x}_j\)。

核 SVM

将内积替换为核函数:

\[ \mathbf{x}_i^\top\mathbf{x}_j \quad \Rightarrow \quad K(\mathbf{x}_i,\mathbf{x}_j) \]

得到的就是核 SVM 。它等价于:

  • 首先用 \(\phi\) 将数据映射到高维空间;
  • 然后在该空间里寻找最大间隔的线性超平面。

优点在于我们从未显式构建高维特征,只是通过核函数计算内积。(Cross Validated)

在具身智能早期研究中(尤其在深度学习尚未主导的时期),核 SVM 曾是处理中小规模机器人数据(如力觉分类、简单视觉识别)的经典选择。即使在深度学习时代,核方法仍为理解高维特征空间和相似度度量提供重要直觉基础。


1.4.5 评价指标(准确率、精确率、召回率、AUC 等)

训练好模型之后,需要用统一、可比较的评价指标 量化其性能,尤其在类别不平衡、错误代价不对称的场景中,仅看“准确率”会非常误导。(Google for Developers)

我们先从二分类的混淆矩阵讲起。

混淆矩阵

以“正类 = 机器人成功抓取”的二分类为例,模型输出“抓取/不抓取”,与真实标签对比得到四种情况:

  • TP(True Positive):真实成功,预测也成功。
  • FN(False Negative):真实成功,但预测失败(错杀)。
  • FP(False Positive):真实失败,但预测成功(误报)。
  • TN(True Negative):真实失败,预测也失败。

所有衡量指标都可以用 TP, FP, TN, FN 表达。


1.4.5.1 准确率

定义

\[ \text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN} \]

即预测正确的样本占总样本的比例。(Google for Developers)

适用场景

  • 类别相对均衡,且正负样本的重要性相近。
  • 比如机器人在大量正常状态与异常状态中识别异常,其中两类比例相近时,可直接用准确率。

局限性

高度不平衡数据集 上(如异常率 1%),模型只要“全部预测为负类”,准确率也能达到 99%——显然毫无实际意义。因此在具身智能的安全相关任务(异常检测、碰撞预测)中,准确率通常不足以单独使用。(Jinwoo’s Devlog)


1.4.5.2 精确率与召回率

精确率(Precision)

\[ \text{Precision} = \frac{TP}{TP + FP} \]

表示:模型预测为“正类”的样本中,有多少是真的正类。精确率高意味着误报少 。(Google for Developers)

召回率(Recall)

\[ \text{Recall} = \frac{TP}{TP + FN} \]

表示:真实为正类的样本中,有多少被模型找出来。召回率高意味着漏报少 。(Google for Developers)

在具身智能中的典型权衡:

  • 机器人抓取任务中,“抓空/掉落”带来中等损失,“误抓危险物体”带来巨大损失时,可能希望高精确率(预测要谨慎)。
  • 安全监控或异常检测任务中,更重要的是不要漏检危险情况,往往更关注高召回率

F1 分数(可简单提一下)

为了在单个数值中综合考虑精确率和召回率,可以使用 F1:

\[ F1 = 2\cdot\frac{\text{Precision}\cdot\text{Recall}}{\text{Precision}+\text{Recall}} \]

当精确率与召回率相近且都较高时,F1 也会高;两者有一者很低时,F1 会被拉低。(Google for Developers)


1.4.5.3 ROC 曲线与 AUC

许多分类模型(如逻辑回归、神经网络)并不是直接给出“正/负”标签,而是给出“属于正类的概率”或“得分”。我们通过设置一个阈值(例如 0.5)将概率转为类别。改变阈值就会改变 TP、FP、TN、FN,从而改变精确率与召回率。

ROC 曲线

ROC(Receiver Operating Characteristic)曲线以:(Jinwoo’s Devlog)

  • 横轴:假正例率

\[ \text{FPR} = \frac{FP}{FP + TN} \]

  • 纵轴:真正例率(也就是召回率)

\[ \text{TPR} = \frac{TP}{TP + FN} \]

为不同阈值下得到的一系列点连成的曲线。

直观理解:

  • 随着阈值从 1 降到 0,模型会把越来越多样本判为正类,TPR 和 FPR 都会增加。
  • 一个完美分类器的 ROC 曲线接近左上角(高 TPR,低 FPR)。
  • 完全随机的分类器 ROC 曲线接近对角线(TPR≈FPR)。

AUC(Area Under ROC Curve)

AUC 是 ROC 曲线下的面积,介于 0 和 1 之间:(Jinwoo’s Devlog)

  • AUC = 0.5:与随机猜测差不多。
  • AUC → 1:越接近完美分类器。

一个重要解释是:AUC 等于“随机抽取一个正样本和一个负样本时,模型给正样本的得分高于负样本的概率”。

在具身智能中的使用建议

  • 二分类任务(例如“当前姿态是否危险”、“当前轨迹是否会导致碰撞”)中,常用 ROC-AUC 来衡量模型区分正负样本的整体能力。
  • 当正负样本极度不平衡且我们更关心正类行为(如少数危险情况),PR 曲线(Precision-Recall Curve)及其面积 PR-AUC 往往更敏感,也值得在后续深入任务时使用。(Jinwoo’s Devlog)

【可插图:展示一个典型的 ROC 曲线(良好模型曲线高于随机对角线),并标注 AUC 区域;可以附一个简单的 PR 曲线对比。】


到这里,1.4 节从“基本监督学习任务设定(回归和分类)”出发,讨论了模型复杂度与泛化的偏差–方差权衡,并引出了控制复杂度的工具(正则化、早停、交叉验证),以及用于评价模型好坏的一整套指标体系。 在后续深度学习章节中,这些概念会以更复杂的形式再次出现——但本节提供的直观图景将持续作为理解更高级方法的“坐标系”。