我想问一下,我们如何有效地重新训练一个已经训练好的seq2seq模型,以消除或减轻特定观察到的错误输出。我将举一个语音合成的例子,但欢迎来自不同领域的任何想法,如机器翻译和语音识别,这些领域也使用seq2seq模型。
我学习了带有注意力机制的seq2seq模型的基础知识,特别是针对语音合成,例如Tacotron-2。使用一个分布式训练良好的模型让我看到了我们的计算机使用seq2seq(端到端)模型说话是多么自然(你可以在这里听一些音频样本)。但模型仍然无法正确读取一些单词,例如,它无法正确读取“obey [əˈbā]”,而是以多种方式错误地读出,如[əˈbī]和[əˈbē]。
原因很明显,因为“obey”这个词在我们的数据集中(LJ Speech)出现的次数太少,只有225,715个单词中的三次,模型没有运气。
那么,我们如何重新训练模型来克服这个错误呢?添加包含“obey”发音的额外音频剪辑听起来不切实际,但重复使用这三个音频剪辑又有过拟合的危险。此外,我认为我们使用的是一个训练良好的模型,仅仅“继续训练”并不是一个有效的解决方案。
现在,这是seq2seq模型的一个缺点,通常很少被讨论。该模型成功地简化了传统模型的流程,例如,对于语音合成,它用一个单一的神经网络取代了声学模型和文本分析前端等。但我们完全失去了对模型的可控性。让系统以特定方式读取是不可能的。
再次,如果你在任何领域使用seq2seq模型并得到了不理想的输出,你是如何修复的?是否有数据科学的解决方案,或者可能有前沿的神经网络机制来提高seq2seq模型的可控性?
谢谢。
回答:
我在论文(Deep Voice 3)的第3.2节中找到了我自己问题的答案。因此,他们训练了基于音素的模型和基于字符的模型,主要使用音素输入,除了当单词无法转换为其音素表示时使用基于字符的模型。