简介:这是一份基于高斯过程的机器人模仿学习研究论文PDF,面向机器人技术、机器学习与智能控制领域的科研人员和学生,可作为参考文献与专业指导。资源仅包含1个PDF文件,容量308KB。论文源自《北京工业大学学报》,围绕机器人模仿学习中控制策略获取问题,提出利用高斯过程回归模型刻画示教机器人感知与行为之间的映射关系,并将其作为模仿机器人的控制策略;文中以Braitenberg车辆为仿真对象,研究趋光模仿学习行为,并通过不同任务环境下的仿真实验验证算法有效性与适应性。阅读后可系统了解高斯过程在模仿学习中的建模思路、关键步骤(数据采集、特征提取、模型训练、行为再现)及与逆强化学习方法的对比,适合用于课题调研、论文参考或算法复现。目前已有116人学习,值得机器人/机器学习方向学习者收藏研读。
1. 高斯过程回归为什么能拿下模仿学习的控制策略获取
很多做机器人示教学习的团队,第一次尝试都会选逆强化学习,但逆强化学习要先有一个像样的代价函数,而“模仿这个动作”本身很难用代价函数描述。这篇论文的思路很直接:把示教行为看作一组样本点,用高斯过程回归去拟合传感器输入到电机输出的映射,拟合出来的函数就直接当控制策略用。严格说,它把模仿学习从一个最优控制问题降维成了一个带置信区间的回归问题。这个思路从2015年至今在机器人行为克隆、机器人导航、机械臂示教复现中一直被沿用,特别是样本量少、又需要量化策略不确定性的场景。
2. 高斯过程回归的建模原理与超参数训练过程
2.1 高斯过程的定义与核函数的角色
高斯过程不是某个具体的函数表达式,而是一族随机变量的集合,集合中任意有限个随机变量都服从联合高斯分布。一个高斯过程由均值函数 m(x) 和协方差函数 k(x, x') 唯一确定,写作 f(x) ~ GP(m(x), k(x, x'))。均值函数描述函数的整体趋势,协方差函数描述两个输入点上函数值之间的相关性。为了方便推导,论文和多数实现都取零均值函数,把全部表示能力放在协方差函数上。
协方差函数也叫核函数,是GP回归里最需要花心思的部分。它隐含了对函数光滑性、周期性和噪声水平的先验假设。论文选的是平方指数协方差函数(RBF核):
k(x_p, x_q) = σf² exp(-(x_p - x_q)² / (2l²)) + σn² δ_pq
公式里三个超参数各有明确的物理含义。参数集合 θ = [l, σf², σn²] 全部通过训练过程自动优化,不需要人工逐项调整。
2.1.1 三个超参数的物理含义与初始值设定
超参数的含义决定了模型的归纳偏置,这里整理成参数速查表:
| 超参数 | 符号 | 物理含义 | 初始值范围 | 优化方式 |
|---|---|---|---|---|
| 长度尺度 | l | 输入变化多少才会引起输出明显变化 | 0.1~10 | 负对数边际似然最小化 |
| 信号方差 | σf² | 函数值的整体幅度 | 0.1~100 | 负对数边际似然最小化 |
| 噪声方差 | σn² | 观测噪声水平 | 0.001~1 | 负对数边际似然最小化 |
l 设得过大,曲线过分平滑,传感器输出剧烈变化时电机响应跟不上;l 设得过小,模型把噪声也当成信号学进去,预测曲线剧烈抖动。σf² 决定输出幅度的先验,一般参照归一化后的样本方差来设。σn² 在有真实传感器噪声时不能设成 0,否则协方差矩阵可能奇异,数值上不稳定。
2.2 预测过程:从先验分布到后验分布的闭式解
GP回归的预测有完整的闭式解,不需要像神经网络那样反复迭代。考虑噪声模型 y = f(x) + ε,ε ~ N(0, σn²),训练观测的先验分布为:
y ~ N(0, K(X, X) + σn² I)
把测试点 X* 的预测值 f* 与训练观测 y 拼成联合高斯分布,利用条件分布性质可以得到 f* 的后验分布。均值 μ* 和协方差 cov(f*) 分别对应论文的公式(13)和(14)。μ* 就是给定传感器读数时最可能的电机输出;cov(f*) 对角线方差开根号乘以 1.96,得到 95% 置信区间,也就是论文图 6 里的灰色区域。
这套推导的工程价值在于:GP回归天然自带不确定性估计,这在模仿学习里非常实用。示教数据覆盖不到的区域,置信区间会明显变宽,机器人能据此判断“当前状态在不在我学过的范围里”,而不是盲目外推。这一点是 SVM 回归和神经网络在标准实现里给不了的。
2.3 训练过程:负对数边际似然最小化
GP 的“训练”与传统机器学习不太一样,它不做参数迭代更新,而是优化三个超参数。优化目标是最小化训练样本的负对数边际似然:
L(θ) = ½ yᵀ C⁻¹ y + ½ log|C| + (n/2) log(2π)
其中 C = K(X, X) + σn² I。这个式子的第一项是数据拟合项,第二项是复杂度惩罚项,两项的平衡让 GP 在拟合和泛化之间自动取舍。对 θ 求偏导后,可以用共轭梯度法或拟牛顿法求解。整个过程的计算瓶颈在每次迭代都要对 n×n 矩阵求逆,复杂度 O(n³)。论文取 15 个样本点,在 MATLAB 里拟合几乎瞬时完成;但样本量涨到几千时,就必须考虑稀疏 GP 或 FITC 近似了。
对比同样做模仿学习的逆强化学习:逆强化学习要先设计代价函数,再在代价函数空间里搜索,对代价函数的形式要求很高;GP 回归把问题转成监督回归,只要准备好“(传感器值, 电机值)”的成对样本,就能直接得到带置信区间的控制策略。这种低建模成本是它被选用的核心理由。
提示:负对数边际似然不是损失函数意义上的误差。它衡量的是“这个超参数组合下,观测数据出现的概率有多大”,所以训练目标是概率最大化,而不是让预测曲线严格穿过每个样本点。
3. Braitenberg 车模仿学习系统搭建与样本采集
3.1 Braitenberg 车的四种连接方式与行为特征
Braitenberg 车是认知科学家 Valentino Braitenberg 设计的最小仿真车,结构上只有光传感器和车轮电机,中间没有控制器。它的神奇之处在于:仅仅改变传感器到电机的连接方式(并行/交叉)和作用方向(正比/反比),就能涌现出不同的类情感行为。四种基本构型的差异可以用一个表讲清楚:
| 车型 | 传感器-电机连接 | 比例方向 | 典型行为 | 命名 |
|---|---|---|---|---|
| A | 并行 | 反比 | 靠近光源减速,面向光源停下 | Lover |
| B | 交叉 | 反比 | 背对光源停下,扰动后驶离 | Explorer |
| C | 并行 | 正比 | 光照越强速度越大,迅速远离 | Fear |
| D | 交叉 | 正比 | 高速冲向光源,越过或撞击 | Aggressor |
论文选 A 车(Lover)作为示教对象,理由很明确:A 车的行为是收敛且稳定的。光照强的一侧传感器输出电流大,反比连接下该侧电机转速低,车头自然向光源偏转;越靠近光源,两侧转速整体下降,最终面向光源停在附近。这个“趋光-减速-停驻”过程输入输出关系清晰,适合用来验证模仿学习算法有效性。相比之下,D 车的“侵略者”行为可能冲过头,B 车停在背光侧还不稳定,作为示教行为可控性差。
3.2 示教机器人与模仿机器人的结构差异
系统里有两台结构不同的 Braitenberg 车。示教机器人:光传感器与同侧电机并行连接,传感器输出与电机输出成反比,映射关系完全已知。模仿机器人:同样采用非交叉连接结构,但传感器输出与电机输出之间是正比还是反比、比例系数是多少,全部未知,要通过 GP 学习出来。
模仿学习的任务,就是让模仿机器人学会示教机器人那种“感知到行为”的映射。注意这里学的不是轨迹。轨迹是特定起点、光源位置下的产物,换一个起点就失效;而映射关系描述的是“看到这个光强,应该给电机多大输出”,与具体位置无关。这正是论文后面做任务环境改变实验的理论基础。
3.3 样本数据采集:15 个样本点怎么采、为什么够
论文的采样过程很朴素:示教机器人从初始位置出发,完成一次完整的趋光动作,在时间轴上随机选取 15 个时间点,每个时间点记录一对值 (s_i, m_i),s_i 是某一侧光传感器的输出电流,m_i 是对应电机的输出值。左右两侧分开采集,各得 15 个样本点,所以论文图 6 的样本点图有 (a)(c) 两幅。
15 个样本点全部用于 GP 模型训练,没有像深度学习那样划分训练集、验证集。这不是省略,而是 GP 回归的机制决定的:后验推断本来就基于全部样本点,泛化能力由核函数和超参数而不是样本数量保证。样本点少时 GP 的优势最明显——它能在小样本下给出合理的函数分布和不确定性估计,这是神经网络做不到的。
从工程角度看,样本采集需要覆盖传感器输出的有效量程。趋光过程中,传感器电流会从初始环境光强逐渐变化到光源附近的最大值,15 个点按时间随机撒在这条变化曲线上,能大致覆盖量程。如果采集点集中在某一小段量程,GP 在未覆盖区域的预测置信区间会显著变大,模仿策略在这个区域几乎不可用。采样时注意让样本点在时间轴上尽量分散,而不是集中在起始段或结束段。
4. 基于 GP 的控制策略获取与仿真实现
4.1 从示教到模仿的完整流程
论文的实现流程可以拆成五步:
- 配置示教机器人(反比连接、映射已知),光源位置任意;模仿机器人连接关系未知,等待学习。
- 示教机器人执行一次趋光动作,按时间随机采集样本点 D = {(s_i, m_i)},左右传感器各一组。
- 对样本点建立 GP 回归模型,训练超参数,得到传感器-电机映射。
- 将映射写入模仿机器人的控制策略,执行趋光行为。
- 对比示教行为与模仿行为,评估模仿效果。
整个流程的关键在第 3 步。这里额外强调一点:整个流程没有反向传播,没有学习率,没有 epoch,GP 训练的本质是超参数优化,收敛快且不需要调网络结构,这也是它在 2015 年的算力下就能跑通的直接原因。
4.2 用 Python 复现 GP 回归建模与策略提取
论文的仿真环境是 MATLAB,但 GP 回归的复现不依赖具体平台。这里用 scikit-learn 的 GaussianProcessRegressor 给出等价实现,方便没有 MATLAB 环境的人直接跑:
import numpy as np from sklearn.gaussian_process import GaussianProcessRegressor from sklearn.gaussian_process.kernels import ConstantKernel, RBF, WhiteKernel np.random.seed(42) # 模拟示教机器人左侧传感器样本点:输入为光传感器输出电流(mA) sensor_left = np.array([0.8, 1.6, 2.4, 3.1, 3.9, 4.6, 5.2, 6.0, 6.8, 7.5, 8.2, 8.9, 9.3, 9.7, 10.0]).reshape(-1, 1) # 对应电机输出,反比关系:电流越大,转速越低 motor_left = np.array([9.2, 8.6, 8.0, 7.4, 6.8, 6.3, 5.7, 5.1, 4.6, 4.0, 3.5, 2.9, 2.4, 1.8, 1.2]) # 组合核:ConstantKernel*RBF 描述信号,WhiteKernel 描述传感器噪声 kernel = ConstantKernel(1.0, (1e-3, 1e3)) * RBF(1.0, (1e-2, 1e2)) \ + WhiteKernel(0.1, (1e-3, 1e3)) gp = GaussianProcessRegressor( kernel=kernel, n_restarts_optimizer=5, # 多次随机重启,避免超参数陷入局部最优 alpha=0, # 噪声已由WhiteKernel建模,这里不再叠加 normalize_y=True # 输出零均值归一化,对应论文均值函数取0 ) gp.fit(sensor_left, motor_left) # 在传感器量程内做密集预测 x_pred = np.linspace(0.5, 10.5, 200).reshape(-1, 1) y_mean, y_std = gp.predict(x_pred, return_std=True) # 95%置信区间,对应论文图6中的灰色区域 lower = y_mean - 1.96 * y_std upper = y_mean + 1.96 * y_std # 后验均值即控制策略,对应论文图6中的蓝色/红色曲线 policy = y_mean这段代码里最需要注意的是核函数的组合方式。ConstantKernel 提供 σf² 的缩放,RBF 提供 exp(-(x_p-x_q)²/2l²) 的相关性描述,WhiteKernel 单独建模传感器噪声。三者相加,正好还原论文公式(15)的平方指数协方差函数。alpha=0 是刻意为之,因为噪声已经由 WhiteKernel 承担,再设 alpha 等于重复叠加噪声方差,会让置信区间偏宽。如果是从示教机器人实际采集的数据,直接把 sensor_left 和 motor_left 替换为数组即可,后面的建模流程完全一样。
训练完成后可以打印优化得到的超参数:
prod_kernel = gp.kernel_.k1 # ConstantKernel * RBF 的乘积核 white_kernel = gp.kernel_.k2 # WhiteKernel print(f"长度尺度 l = {prod_kernel.k2.length_scale:.3f}") print(f"信号方差 sigma_f^2 = {prod_kernel.k1.constant_value:.3f}") print(f"噪声方差 sigma_n^2 = {white_kernel.noise_level:.3f}")这三行输出就是训练过程的结果。长度尺度如果落在 0.5~2 之间,说明核函数对输入变化的响应尺度是合理的;如果优化后长度尺度接近边界,要回头检查输入是否做了标准化,或者样本点是否覆盖了完整量程。
4.3 置信区间宽度怎么用:策略选取与风险判断
论文图 6 的灰色区域是 95% 置信区间,蓝色和红色曲线选取的是后验概率最大的函数,也就是后验均值。用后验均值做策略,等价于最小化期望平方误差,这是最常规的选择。如果任务对安全性要求高,可以改用置信区间下界做策略,让机器人对不确定的传感器状态输出更保守的电机值;反过来,如果希望行为更激进,可以用上界。
置信区间宽度本身也是一个重要信号。宽度在新传感器读数处迅速增大,说明该状态远离示教数据分布,策略在此区域的可靠性低。在仿真里这种状态可能不出现,但换到真实机器人或 ROS2 部署场景时,任何未覆盖的传感器状态都会触发宽置信区间,这是 GP 方法相对其他回归方法在处理分布外输入时的独有优势。
4.4 模仿行为的判定:轨迹像不是重点,策略像才是
论文的示教行为中,机器人初始位置在 (20cm, 80cm),车头与水平方向呈 90°,光源在 (160cm, 20cm)。示教机器人快速转向光源,速度逐渐降低,最终面向光源停住。模仿机器人在同样的初始条件下复现时,判定标准不是轨迹误差多少厘米,而是行为特征是否一致:是否在起始阶段快速转向光源、是否逐步减速、是否最终停在光源附近。速率变化曲线的形态对比(论文图 5(b) 和图 7(b))比位置对比更有说服力,因为速率曲线直接反映控制策略的作用效果。实际部署到 ROS2 机器人上时,GP 模型训练完成后封装成节点,订阅光传感器话题、发布电机速度话题即可,预测只需要 numpy 和加载好的模型文件。
5. 任务环境改变下的适应性验证与 GP 落地技巧
5.1 环境改变实验怎么设计
论文的环境改变实验分三组:只改模仿机器人的初始位置、只改初始方向、位置方向都改。三组都成功复现趋光行为。这个结论的本质是:GP 学到的是从光传感器读值到电机输出的映射,光源移动、起点改变都会体现在传感器读值的变化上,而映射关系本身不受影响。与 DAGGER 这类需要在线交互采样的模仿学习方法不同,GP 方案在示教阶段完成后就不再需要示教者参与,环境改变完全由传感器读值的变化来体现。如果学的是纯轨迹,换起点必然失败;学的是感知-行为映射,换环境只是换输入,策略不需要重新训练。
5.2 从仿真到实车的三个工程注意点
注意点集中在数据分布和超参数上。第一,传感器量程要对齐。示教机器人和模仿机器人用同型号光传感器,量程不一致时,模仿机器人的读值会落进 GP 外推区,置信区间快速变宽,策略不可用。这种情况下,要么对两侧传感器读数做标准化,要么在预测前判断当前输入是否落在训练数据的最小最大值范围内。第二,超参数优化方面,n_restarts_optimizer 建议设成 10 以上。GP 的负对数似然面在低样本量时可能有多个局部极小,多随机重启能降低陷入局部最优的概率。第三,仿真实时性方面,GP 预测需要对训练集协方差矩阵求逆,样本量上千时单次预测延迟明显,要换稀疏 GP 或 FITC 近似。
5.3 用置信区间做安全兜底
一个很实用的工程技巧:给 GP 策略加一个“不确定性开关”。设定阈值,当预测标准差 y_std 超过阈值时,说明当前传感器读值在示教分布之外,机器人切换为保守行为,比如减速或请求人工干预。阈值可以直接取训练集上预测标准差的分位数。这个机制在论文里表现为“不同任务环境下的适应性”,在实车上则是一个低成本的安全兜底。
本文还有配套的精品资源,点击获取