D-TDNN
D-TDNN copied to clipboard
针对论文的一些疑问
您好,我觉得您的工作-DTDNN,在参数比较少的情况下获得了较ETDNN,FTDNN更好的结果,我认为这非常有意义。但是我对论文的实验存在两处疑惑: 1、论文中Table5中,基于softmax训练的D-TDNN模型Cosine的结果好于PLDA,在上面的TDNN,ETDNN,FTDNN的结果不一致(均是PLDA好于Cosine),请问这是什么原因导致的? 2、对于null branch,能稍微解释一下吗?
1、我个人猜测的原因:
- LDA+PLDA是基于原始的embedding再次投影,中间有信息损失,对于精度已经很高的模型可能会有负面影响。
- D-TDNN的网络宽度显著低于E-TDNN、F-TDNN,并且D-TDNN的embedding层直接连接到分类层,这两点会影响embedding的信息分布,在投影时受到的影响不同。
* 去除LDA、增加D-TDNN(最后一个transition层)的宽度可以减少Cosine和PLDA打分的差距。
2、TDNN分支+null branch(全零分支)是多TDNN分支的弱化版本,这个分支直接默认输出特征图全为0,只需要考虑attention权重的计算,优点是增加的计算量很低。全零分支的意义和squeeze-and-excitation类似,比如某些通道包含噪音,需要抑制这些位置的信号。
1、你这边的Cosine打分,也是要经过LDA的吗? 2、关于short-term 和long-term,有没尝试过像ECAPA-TDNN那样,将不同层的特征summar到RELU-FNN之后,这样可以节省参数。
1、Cosine不使用LDA。 2、Dense connection和你提到的residual connnection没有本质的区别,在参数量和拟合能力上会有一定的差异,和具体设置有关,此处不展开讨论。我在论文中有提到multi-stage aggregation,因此D-TDNN本身有多层拼接,会起到short-term和long-term结合的效果,而SS是进一步强化,并且相比于没有使用SS的情况,short-term经过了更多的神经网络层,分辨率更高,还有附带的channel recalibration效果。
谢谢您的回答!
再请教一个问题,TDNN+ softmax + PLDA,我们的实验结果是EER = 3.2%左右,您论文中的结果是2.34%,请问一下是有什么trick吗?
调整训练参数,在Kaldi里面也可以得到差不多的结果。
你没有用pytorch跑过吗?
论文的结果是pytorch跑的,模型都放出来了。这里是说kaldi调整参数之后的结果也差不多。
TDNN的训练脚本能看放出来看一下吗?跟我的差距有点大,或者你可以看我的代码
建议你直接按照论文里的训练参数跑,或者进一步参考Interspeech_2019/pdfs/2357.pdf