SVD模型裁剪 TDNN-f

论文:Daniel Povey 2018年论文,
Simi-Orthogonal Low-Rank Matrix Factorization for Deep Neural Networks 半正定低秩矩阵分解DNN
参考:https://www.jianshu.com/p/ddef79012db5
https://www.cnblogs.com/JarvanWang/p/10145861.html
摘要:
TDNN又被称为1维CNN(1dCNNS)。本文提出的TDNN-F,结构与经过SVD分解的TDNN相同。但TDNN-F的训练开始于随机初始化,SVD分解后,其中一个矩阵被限制为半正定的。这对TDNNs以及TDNN-LSTM有实质上的提升。
一种减少已训练模型大小的方法是使用奇异值分解(Singualr Value Decompostion,SVD)对每个权重矩阵因子分解为两个更小的因子,丢弃更小的奇异值,然后对网络参数进行调优。
很明显,直接训练随机初始化后的上述带有线性瓶颈层的网络更为高效。虽然,有人以这一方法训练成功,但还是出现了训练不稳定的情况。
为了克服训练不稳定的情况,本文将因子分解后的两个矩阵之一限定为半正定的,这样,M=AB.
之中的一个矩阵限制为半正定矩阵不会损失任何建模能力;并且,这一限制也符合SVD的结果(即,SVD分解后,其中一个子矩阵也是半正定的
此外,受到"dense LSTM"的启发,本文使用了跳层连接(skip connection)。这一定程度上类似于残差学习的捷径连接(shortcut connection)和公路连接(highway connection)。

  1. TDNN-F与TDNN的区别?
    -增加中间层
    SVD模型裁剪 TDNN-f_第1张图片
    与图1相比,图2多了维数较低的中间层,即令M=AB
    将原来的权重矩阵M分解为A矩阵和B矩阵,并且限制B矩阵为半正交矩阵,降低中间层的维数,在减少模型参数的同时,依然保持很好的建模能力。kaldi中的例子swbd和librispeech中,采用的结构是15361601536,中间层维度为160。
    -增加跳帧连接
    SVD模型裁剪 TDNN-f_第2张图片
    跳帧连接(skip connections)与残差网络结构很像,同样为了减少梯度消失,将之前层输出到当前层作为下一层的输入,每个TDNN-F结构中的跳帧连接都发生在1536维度的输出之后。
    -增加dropout
    这个比较好理解,如图3,为了防止过拟合,每个TDNN-F结构中还加了dropout层。
  2. TDNN-F模块的训练
    前面讲到TDNN-F是将原来的权重矩阵M分解为两个矩阵A和B,并将B约束成半正交的,那么加了半正交约束的TDNN-F时如何训练的呢?结合论文和代码理解
    SVD模型裁剪 TDNN-f_第3张图片
  3. 半正定奇异值分解
  4. 主要技术
    参数维度微调(线性瓶颈层维度)、卷积分解(31->11 21->21)
    三部拼接 (分解为3个矩阵),dropout,skip connections(跳层连接),
  5. 实验结果
    SVD模型裁剪 TDNN-f_第4张图片
    SVD模型裁剪 TDNN-f_第5张图片
    SVD模型裁剪 TDNN-f_第6张图片
    论文链接:http://www.danielpovey.com/files/2018_interspeech_tdnnf.pdf
    代码:kaldi/src/nnet3/nnet-utils.cc
    模型结构:kaldi/egs/swbd/s5c/local/chain/tuning/run_tdnn_7q.sh

你可能感兴趣的:(语音识别,深度学习)