ID = voxsrc20_ask_07
Status: closed
Question
Why there are designed to have 2 layers of embeddings in x-vector?
Answer
Ask1:
Leon老师,您好!
看了您ICASSP的论文,有一个疑问,还请解惑,谢谢!
TDNN中为何设置两层segment layer?
1. Pooling 之后经过segment layer1已经得到了x-vector,x-vector之后再接一层segment layer 2,他们之间是全连接吗?
2. Layer2的作用是什么?只是单纯地为了训练吗?
3. 这是TDNN或x-vector特有的吗?如果用ResNet(也有人叫r-vector), 不用TDNN,是否也需要设置两层segment layer?
Reply1:
你好呀
1.两层segment layer是为了稳定representation的,pooling layer是均值方差统计量拼接,这是比较直接的输入,第一层则是为了有机整合二阶统计量;输出层则是维度会远大于segment layer维度,可能是几万比几百,这个量级比较大,相邻的layer会受到一定波动,所以有第二层segment layer去保第一层layer的稳定性。也有论文把两层layer都提取出xv,对比能看到第一层效果更好。
2.两层之间是全连接的
3.layer2已经回答了
4.我觉得和resnet tdnn无关,和pooling layer output layer倒是有关
Ask2:
谢谢!
还是有几点不清楚,能否稍微展开下。
追问1: 如何理解这种波动?比如梯度变化波动大?
追问2: 增加的第二层可以保护第一层的稳定性?这又怎么理解呢?
追问3: 也有论文把两层的输出拼接起来作为组成xv,但是效果还不如仅仅用第一层的输出,是这么理解吗?
Reply2:
1.这个能从可视化上看,你可以画出tsne图或者xv的分布图,第一层会比第二层要更符合正态分布
2.是的,稳定第一层的统计量。你可以把第二层去掉只训练第一层,你会发现第一层效果变差,上下同时受pooling layer和output layer的影响
3.这要看情况,可能持平;但只用第一层提取xv是足够的了
Conclusion:
明白了,终于理解为什么有些论文里提到训练结束后segment2可以移除了。非常感谢!
Reference
[1] Paid zixun @Zhihu