Data Mixture Inference: What do BPE Tokenizers Reveal about their Training Data?
分词器暴露了模型训练数据分布,比如Claude系列模型用了57%的代码数据
这篇文章好几天前放出来的了可能大家都看过了,但是最近似乎很难说有太多特别有趣的文章,所以还是写一下。
这篇文章提到,很多最强模型的训练数据分布都是未知的,他们在此提出一个任务叫数据混合推断(data mixture inference),目的是获取训练数据的具体分布信息。他们从BPE分词器,这一被大部分语言模型使用的方法切入,众所周知,BPE分词器学习的合并规则有序列表自然地揭示了其训练数据中token频率的信息:第一次合并是最常见的字节对,第二次合并是在合并第一个token之后最常见的对,依此类推。举个GPT-4o的例子,如果token对(, \n)是在第51步被合并的,那么它一定是在合并了50个token对之后的最高频的那个token对,在这种情况下可能标志着大量的代码数据。作者的做法是,在给定一个分词器的合并列表以及每种类别的数据样本后,利用线性规划计算出分词器训练集中的每个类别的比例。作者在实验上验证了他们攻击方法的有效性,该方法可以高精度地揭示已知数据源所混合出来的数据中的各类数据比例,而将该方法用在随着最近LM发布的现有分词器上,他们不仅确认了已经公开披露信息,而且有以下新的推测:
1. GPT-4o的分词器比前几代的分词器训了更多语种,包含39%的非英语数据
2. LLAMA3主要为了多语种的用途(48%)扩展了GPT-3.5的分词器;
3. GPT-3.5和CLAUDE的分词器主要在代码上(约60%)训练出来。
当然因为我们只有来自类别分布的样本,而不是分词器实际训练所用的确切数据,上述描述的线性规划可能无法实现,因为由于抽样的原因,计数将会带有噪声,作者引入了一些非负变量来放松约束条件。另外考虑到线性规划的计算复杂性,作者将合并限制在前T步中,称为截断式规划,总之有一些变种。
接下来看实验,首先为了说明他们方法的有效性,他们先在5到112种数据(含各自自然语言,各种代码语言和数据源即各种domain的数据)上做实验,即先随机采样5到112类并用不同权重混合,然后在数据是训练出tokenizer,接着他们在与训练数据相同的分布上采样一定量数据来估算tokenizer的合并频率。最后用已知α和预测α之间的均方误差MSE来量化攻击的有效性。结果见table1,可以看到他们的方法在languages上最有效(毕竟不同语言有不同的character),在所谓data source上差一些(毕竟character相似只是由于domain不同而有不同主题的词语而已),但是即使是在效果最差的类别上,这种方法也1000倍优于随机猜测。
最后他们将方法用在一些闭源模型上,主要结论就是第一段里的那些,具体的比例可以看本文最上面的figure2,可以看到比如说claude的代码数据比例非常之大,这也佐证了为什么在笔者论文里构建的benchmark MHPP上,Claude 3.5 Sonnet已经排名第一。
撰文:戴剑波;编辑:戴剑波
未经本公众号授权不得转载,欢迎转发。