如果能把问题说出来,那问题就不成问题了。

# 碎碎念

从四月中下旬开始正经赶稿以来,发现因为时间不太够用,自己日常的反思和笔记都被按下了暂停键。最后一篇写下的笔记是四月十八日在学校听的关于关税战的讲座,而且没有更新到网站上去。要是溯及网站上更新的内容,则要到两月前的三月中旬。如今,ddl 总算过去,可以腾出一点时间,来思考一下自己上一阶段的收获以及下一步的学习和科研规划了。

# 经验总结

这一次科研经历还是蛮有价值的。相比于之前的或者其它同学的一些短平快的投稿,这次经历算是在一个领域的挖坑之作。虽然从最后的结果上看,没有完全达到我的预期,但是也有很多值得反思和总结的地方。

一项挖坑的工作,包括几项基本内容。第一是建立相应的数据集;第二是建立相应的评测标准;第三是设计或复现经典的和前沿的模型;第四是在该具体任务的约束上,找到一个适合于该任务的专用模型。这几部分,都有很多我之前不知道的会出问题的地方。

# 数据集

数据集的选择过程中,需要做几项基本的决策。

# 数据集的来源

一般来看,不管是在科学还是工程中,数据集的来源都包括两大类,即来自真实数据模拟数据

# 真实数据

真实数据一般是基于实验设备所观测到的数据,或者是在实验室中进行湿实验所得到的数据。简单罗列一下,那么真实数据的优点包括:

  1. 数据贴合现实,误差仅来源于采集设备所造成的误差,具有最直接的指导意义。
  2. 数据的分布范围广,对应数据在高维空间中会张成一个维度更高的流形。

但是,真实数据集的缺点也异常显著:

  1. 数据量较小,数据采集昂贵。数据稀疏对建模存在严重挑战。
  2. 数据的格式不一致性:要想整合一个比较大的数据集,可能需要有不同来源的数据。这些数据在某些字段可能会是缺失的。此外,不同类型的数据之间进行相互转换,可能会有转换的信息丢失或额外误差。比如,一种数据采集方式是将文献中的曲线图采点得到具体数据,这样采点的过程就会造成误差。
  3. 数据质量的不一致性:对于不同来源的数据,可能使用不同类型的采集设备。在采集设备不公开或者缺乏标准化的情况下,会出现数据质量存在差异的情况。我如何知道我模型的误差是来源于模型的能力不足,还是来源于数据质量所造成的误差呢?

# 模拟数据

得益于如今各种计算技术的发展,模拟数据作为另一种数据来源,已经正在逐步发挥越来越重要的作用。相比于真实数据,模拟数据也存在一些优缺点。其优点包括:

  1. 数据量大,数据易获取。
  2. 数据的分布均匀。一般情况下可以按照网格化采样,从而得到良好的数据分布。
  3. 数据的格式一致性:基于统一模拟数据得到的格式是基本一致的,因此在预处理和写 loader 的时候都方便很多。
  4. 数据质量一致性:模拟数据一般由相同的方式生成,比如都基于某一软件等等,因此在质量上具有一致性。模型的目标也就比较准确了:只要能拟合到模拟的数据质量就可以。

但是模拟数据也存在显著的问题:

  1. 数据的分布范围窄。模拟数据可以在常规数据上达到比较良好的拟合效果。但是在极端条件下,模拟数据的的质量一般较差。这样会导致比较严重的过拟合。然而许多科学实验都是对极端的情况做研究,因此模拟数据的应用就会受到限制。
  2. 数据不贴合现实。模拟和真实是存在一个 sim2real gap 的。如果想要将基于模拟数据的模型应用在真实的用户体验或湿实验上,那么可能效果不会那么好。

# 真实数据和模拟数据的选择

那么,到底是选择真实数据还是模拟数据?现在有几种基本的方式:

  1. 在真实数据和模拟数据上分别跑,作为两组指标来评估模型。这样的好处是没有引入一些额外的假设或误差,只是单纯比较。但是缺点是,这样训练出来的两组模型会存在差异。难以直接用于后续的应用。
  2. 在模拟数据上训练,在真实数据集上验证和测试。当模拟数据的数据量比较大时,这样可以充分利用模拟数据,同时评估模型的泛化能力。但是当模拟数据的量比较小的时候,训练会出现过拟合等问题,模型泛化到真实数据上相当困难。
  3. 在模拟数据上预训练,然后使用部分真实数据微调,在另外的真实数据上进行验证和测试。其实和上一种方法类似,但是引入部分真实数据可以有效缓解过拟合问题,也规避了部分域迁移的风险。但是这样真实数据集的划分也存在挑战。比如真实数据集中存在部分离群点,那么是否要划分到训练集中?
  4. 借助一个预训练模型。然后在模拟和真实数据集上进行微调。

# 下一步的规划