本周只做了一件事:对模型进行特征归因。

对于深度学习都堪堪上手的我来说,特征归因算是一个比较深入的话题了。在 GPT 的帮助下,我认识了不少特征归因的方法,最终决定采用最简单的梯度法。

这种方法讲起来蛮简单的,就是利用输入数据预测后,再调用 backward() 来计算输入数据的梯度。但是在实际的实现中,我却碰到了不少困扰。

首先是需要完全复刻对于数据的处理方式。我构建的数据 Pipeline 有不少流程,再加上数据量很大,因此跑起来速度非常感人。为此,我花了不少时间在数据处理的加速上,可惜大概只将处理时间降低了 30% 左右。

其次是对于梯度的计算,这方面我踩了不少坑,包括梯度运算极慢、算出来没有梯度、显存爆炸等等,具体就不细说了。

总之最后还是算出来了这么个结果。可惜的是,结果表明各个特征的梯度相对比较平均,都在一个数量级。可以说模型对于每个特征的利用称得上很均衡了。也就是说,这周的工作没有起到对模型进行迭代的作用。

罢了,总会有这样的时候。