如果想充分理解一个预训练模型的算法,比如aishell预训练模型,应该从哪入手?
如果是想去研究模型结构以及模型的训练,那么可以把WeNet的recipe跑通,然后再明确每一个脚本的输入、输出、模型结构。也可以尝试调参,观察模型的收敛效果,或者模型损失的下降速度会不会更快。
如果是想去研究一下Runtime的话,这门课(《WeNet语音识别实战》)会带大家去把整个Runtime跑通,其中也包括Runtime的调试。如果你想更深入的话,你也可以针对每一行代码,了解底层逻辑,只要你把整个调试跑起来之后,这个问题也都是比较简单的。
那么当你把整个Rimetime跑下来之后,大家也可以去参考WeNet公众号上面的一些推送。在整个WeNet的开发过程中,针对于每一个功能点,都会有一篇推送介绍这个功能点的实现过程,比如说热词的实现过程,你可以根据代码和推送理解WeNet的整个逻辑。在这个基础之上,如果你有一些比较好的想法,你也可以去做简单的改进。
Runtime的改动是比较简单的,即使对于C++不是太熟悉,也可以在代码里面找类似的部分,把它拷贝一下就能够去完成你的想法。大家也可以看一下我们Github上有不少的PR,也是一些其他同学的一些改动,不是特别复杂,代码量不多。