- teacher forcing
- 训练迭代过程早期的RNN预测能力非常弱,几乎不能给出好的生成结果。如果某一个unit产生了垃圾结果,必然会影响后面一片unit的学习。
- RNN存在着两种训练模式(mode):
- free-running mode:就是常见的那种训练网络的方式: 上一个state的输出作为下一个state的输入。而Teacher Forcing是一种快速有效地训练循环神经网络模型的方法,该模型使用来自先验时间步长的输出作为输入。
- teacher-forcing mode
- Teacher Forcing,是一种网络训练方法,它每次不使用上一个state的输出作为下一个state的输入,而是直接使用训练数据的标准答案(ground truth)的对应上一项作为下一个state的输入。
- Teacher Forcing工作原理: 在训练过程的 t 时刻,使用训练数据集的期望输出或实际输出: y(t), 作为下一时间步骤的输入: x(t+1),而不是使用模型生成的输出h(t)。
- Teacher Forcing同样存在缺点: 一直靠老师带的孩子是走不远的。
- 因为依赖标签数据,在训练过程中,模型会有较好的效果,但是在测试的时候因为不能得到ground truth的支持,所以如果目前生成的序列在训练过程中有很大不同,模型就会变得脆弱。
- 也就是说,这种模型的cross-domain能力会更差,也就是如果测试数据集与训练数据集来自不同的领域,模型的performance就会变差。
- 有计划地学习(Curriculum Learning)
- beam search方法仅适用于具有离散输出值的预测问题,不能用于预测实值(real-valued)输出的问题。
- 有计划地学习的意思就是: 使用一个概率p去选择使用ground truth的输出y(t)还是前一个时间步骤模型生成的输出h(t)作为当前时间步骤的输入x(+1)。这个概率p会随着时间的推移而改变,这就是所谓的计划抽样(scheduled sampling,可参考:https://blog.csdn.net/weixin_45647721/article/details/127352875)
- 训练过程会从force learning开始,慢慢地降低在训练阶段输入ground truth的频率。
- Scheduled Sampling主要应用在序列到序列模型的训练阶段,而生成阶段则不需要使用。
- 在解码器的t时刻Scheduled Sampling以概率ϵ_i使用上一时刻的真实元素y_(t−1)作为解码器输入,以概率1−ϵ_i使用上一时刻生成的元素g_(t−1)作为解码器输入。且由上可得随着i的增大ϵ_i会不断减小,解码器将不断倾向于使用生成的元素作为输入,训练阶段和生成阶段的数据分布将变得越来越一致。
- 不同语言比较:
- C语言是很多语言的底层实现,执行效率高,需要自己做内存管理,对代码的要求比较高,很多功能需要手动实现。
- c#:微软开发的编程语言,部署时需要放在windows server上,最大的问题是windows系统花钱。
- php:一般用于快速搭建网站
- golang: 语法和c比较接近,处理并发时比较有优势
- other:
- ffmpeg将音频转为单通道16k采样率的音频:ffmpeg -i test.wav -ac 1 -ar 16000 -y 1.wav
- 16khz对应256kbps的wav文件