---
title: 评估结果
description: DP、SFP（、SFPJ）的评估结果
---

本实验主要验证 SFP 的性能、相对于 DP 的优势。

## 评估结果

### 训练损失曲线

![DP、SFP 和 SFPJ 的训练损失曲线](asserts/training_loss.png)

横坐标是训练轮次（`epoch`），每个点对应训练日志中的一条记录；纵坐标是该轮次的训练损失（`loss`）。曲线用于比较 DP、SFP 和 SFPJ 在训练过程中的收敛速度、最终损失和波动情况，损失越低表示模型对当前训练目标的拟合误差越小。这里的损失只反映训练目标，不等同于环境中的任务奖励或成功率。

### 200 步奖励曲线

![DP、SFP 和 SFPJ 在 200 个环境步中的奖励曲线](asserts/reward_over_steps.png)

横坐标是单个任务（一个 episode）的环境执行步数，范围为第 1 步到第 200 步；纵坐标是该步得到的环境奖励。曲线表示随着动作持续执行，奖励如何变化，可用来观察模型获得有效行为的速度、奖励是否持续上升，以及执行后段是否出现回落。各方法的曲线按照相同步数对齐，便于比较 DP、SFP 和 SFPJ 在同一任务进度下的行为表现；它描述的是逐步奖励，不是一个 episode 的最大奖励或奖励总和。

### 最大奖励箱线图

![不同方法的最大奖励箱线图](asserts/boxplot.png)

横坐标是不同方法，纵坐标是每个 episode 运行期间出现的最大奖励（`max_reward`）。每个箱体展示 20 个 episode 的中间 50% 数据范围，中线是中位数，须线和离群点反映整体波动与极端情况。箱体位置越高表示典型任务表现越好，箱体越短表示不同随机种子下的结果越稳定。

### 最大奖励值分布

![不同方法的最大奖励值分布](asserts/eval/image.png)

该图按方法展示 20 个 episode 的最大奖励值分布。每个样本取对应 episode 的 `rewards` 序列中的最大值，因此它关注任务过程中曾达到的最好状态，而不是最后一步的奖励；分布的位置反映平均表现，分布宽度则反映不同 seed 之间的一致性。成功判定使用同一字段：`max_reward = 1`。

### 单步推理延迟分布

![不同方法的单步推理延迟分布](asserts/inference_latency.png)

横坐标是方法，纵坐标是单步推理延迟，单位为毫秒。每个 episode 的总推理耗时除以实际执行步数得到 `inference_time_ms_per_step`，再在 20 个 episode 上比较其分布。数值越低表示单步推理越快，分布越集中表示延迟抖动越小；该指标只衡量模型推理吞吐，不等同于环境最终控制频率。

### 成功率（最大奖励为 1 即成功）

![不同方法的成功率](asserts/success_rate.png)

横坐标是不同方法，纵坐标是成功率。成功率定义为 20 个 episode 中 `max_reward = 1` 的 episode 数量除以总 episode 数量，因此每个方法的结果以 5% 为一个样本比例单位。该图反映任务是否达到成功状态，需结合最大奖励分布一起判断，不能仅凭单步奖励曲线的局部峰值推断。

## SFPJ 相对 SFP 的主要变化

`sfpj`（Joint Streaming Flow Policy）是在 `sfp`（Streaming Flow Policy）基础上的联合版本，主要变化如下。

### 1. 模型增加动作历史建模

- `sfp` 的 U-Net 每次只根据当前动作、时间和观测条件预测一个动作速度。
- `sfpj` 保留 U-Net 主干，但加入动作历史投影、因果 Transformer 和历史到当前查询的交叉注意力。
- 训练时可以同时输入整个预测窗口（`pred_horizon` 个动作查询）；推理时输入单个动作查询，并逐步追加已经执行/生成的动作历史。

![alt text](asserts/eval/image-1.png)

![alt text](asserts/eval/image-2.png)

### 2. 训练目标从单点改为联合速度场

- `sfp` 在随机时间采样一条轨迹上的一个位置，训练单个速度目标。
- `sfpj` 使用连续的 `pred_horizon + 1` 个动作节点，为窗口内每个节点构造时间、加噪动作和速度目标，使用整个窗口的平均 MSE 训练。
- 为提高对历史误差的鲁棒性，`sfpj` 训练时会对动作历史加入按时间衰减、并随训练步数线性升高的高斯噪声（由 `history_noise_scale` 和 `history_noise_ramp_steps` 控制）。

![alt text](asserts/eval/image-5.png)

![alt text](asserts/eval/image-3.png)

![alt text](asserts/eval/image-4.png)