bojone / BERT-whitening

简单的向量白化改善句向量质量
480 stars 65 forks source link

kernel和bias的在线计算方法 #1

Closed huhk-sysu closed 3 years ago

huhk-sysu commented 3 years ago

苏老师您好!有幸读到您对BERT-flow的分析和“简化",我有一些小小的疑问:

在您的代码中,您把训练集、测试集的句子向量都用于计算kernel和bias,这个过程是假定已经获得了完整的测试集的。 在我的场景中,测试的句子是一个个给出来的,没办法根据测试集的向量计算kernel和bias,这种情况应该怎么办?假设训练集和测试集是同源的,是否可以仅使用训练集的数据计算kernel和bias,并直接应用到输入的单个测试句子,对其做白化?

bojone commented 3 years ago

可以只用训练集的,在STS-B上我比较过,没什么差别。

关键是,这个做法本身就是无监督的啊,原则上不存在什么训练集和测试集的区分了,你只需要用你能获取到的数据集来算均值和协方差矩阵就行了,如果数据量特别特别大,你还可以用流式的方法(滑动平均等)来算这两者。

bojone commented 3 years ago

而且我所给的参考代码很清晰,也没多少行,很容易复现的,如果有什么疑惑,自己多测一下就知道答案了。

huhk-sysu commented 3 years ago

谢谢指教。