DeepSpeech 学习波斯语失败
DeepSpeech failed to learn Persian language
我正在使用 doc 中所述的使用 KenLM 生成的语言模型从头开始(没有检查点)训练 DeepSpeech。该数据集是波斯语的通用语音数据集。
我的配置如下:
- 批量大小 = 2(由于 cuda OOM)
- 学习率 = 0.0001
- 数量。神经元 = 2048
- 数量。纪元 = 50
- 训练集大小 = 7500
- 测试集和开发集大小 = 5000
- 第 1 层到第 5 层的 dropout = 0.2(也试验了 0.4,结果相同)
训练和验证损失在训练过程中减少,但在几个时期后,验证损失不再减少。 train loss 约为 18,val loss 约为 40。
流程结束时的预测都是空字符串。有什么改进模型的想法吗?
也许您需要降低学习率或使用学习率调度程序。
Common Voice 中的波斯语数据集有大约 280 小时的经过验证的音频,因此这应该足以创建一个比您报告的准确性更高的模型。
了解该模型的 CER 和 WER 数字有什么帮助?能够看到这些表明最佳行动方案是 acoustic 模型的超参数还是 KenLM language 模型。区别是explained here in the testing section of the DeepSpeech PlayBook.
您也可能需要对波斯语数据集执行迁移学习。我假设波斯语数据集是用 Alefbā-ye Fārsi 编写的。这意味着您需要删除字母层才能从 English checkpoints(使用拉丁文字)中学习。
有关如何执行迁移学习的更多信息是in the DeepSpeech documentation,但本质上,您需要做两件事:
- 使用
--drop_source_layers 3
标志删除源层,以允许从另一个字母表进行迁移学习
- 使用
--load_checkpoint_dir deepspeech-data/deepspeech-0.9.3-checkpoint
标志指定从何处加载执行 迁移学习. 的检查点
我正在使用 doc 中所述的使用 KenLM 生成的语言模型从头开始(没有检查点)训练 DeepSpeech。该数据集是波斯语的通用语音数据集。
我的配置如下:
- 批量大小 = 2(由于 cuda OOM)
- 学习率 = 0.0001
- 数量。神经元 = 2048
- 数量。纪元 = 50
- 训练集大小 = 7500
- 测试集和开发集大小 = 5000
- 第 1 层到第 5 层的 dropout = 0.2(也试验了 0.4,结果相同)
训练和验证损失在训练过程中减少,但在几个时期后,验证损失不再减少。 train loss 约为 18,val loss 约为 40。
流程结束时的预测都是空字符串。有什么改进模型的想法吗?
也许您需要降低学习率或使用学习率调度程序。
Common Voice 中的波斯语数据集有大约 280 小时的经过验证的音频,因此这应该足以创建一个比您报告的准确性更高的模型。
了解该模型的 CER 和 WER 数字有什么帮助?能够看到这些表明最佳行动方案是 acoustic 模型的超参数还是 KenLM language 模型。区别是explained here in the testing section of the DeepSpeech PlayBook.
您也可能需要对波斯语数据集执行迁移学习。我假设波斯语数据集是用 Alefbā-ye Fārsi 编写的。这意味着您需要删除字母层才能从 English checkpoints(使用拉丁文字)中学习。
有关如何执行迁移学习的更多信息是in the DeepSpeech documentation,但本质上,您需要做两件事:
- 使用
--drop_source_layers 3
标志删除源层,以允许从另一个字母表进行迁移学习 - 使用
--load_checkpoint_dir deepspeech-data/deepspeech-0.9.3-checkpoint
标志指定从何处加载执行 迁移学习. 的检查点