mwer
mwer copied to clipboard
请问mwe lossr应该怎么做梯度回传呢?
看了论文也不太明白,是和CE loss加权吗?但是weighted_relative_edit_errors最后应该会出现负数的情况吧?负数怎么作为loss回传呢?
MWER Loss本质上是为了让加权错误weighted_edit_error减小;
摘自论文3.2. Approximation Using N-best Lists: and Wc is the average number of word errors over the N-best hypohtheses, which is applied as a form of variance reduction, since it does not affect the gradient.
为了训练稳定,loss里减去了平均错误avg_error。 因为每条音频的topk是固定不变的,所以avg_error是一个常数,不会影响梯度。
减去avg_error的好处是,减小方差。 因为每条音频的error差异是很大的,例如高噪长音频,error会比安静短音频大很多, 减去各自的均值之后各条音频的差异就小了。
MWER Loss一般是负的,因为加权的error一般都比平均的error小。 负数作为loss回传没有任何问题,负得越多loss越小嘛。 额外加上一个主Loss是为了让训练更稳定。 主Loss即你模型原来的loss,可以是CE也可以是CTC,在论文和我的代码里都是指AED的decoder所以是CE。
我的代码里写的有点复杂,on-the-fly的计算avg,是为了兼容可变的topn而不必重新生成输入数据集,例如topn可以取10或15。 其实你可以简单理解就是:
MWER = 加权编辑距离-平均编辑距离
十分感谢这么及时又详细的解答!! 我目前采用的是ctc+ce loss混合训练,然后再加上MWER loss去finetune的方式,因为主loss在finetune阶段已经很小了,采用论文中给出的MWER loss + 0.01ce loss来计算最终loss的话,loss基本上就都是负数,训练效果也下降了,请问您有这两个loss之间配比权重的经验吗?在finetune阶段怎么配权重比较好呢?