Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

loss值无法下降 #30

Open
crazyxixi opened this issue Dec 24, 2024 · 3 comments
Open

loss值无法下降 #30

crazyxixi opened this issue Dec 24, 2024 · 3 comments

Comments

@crazyxixi
Copy link

问题

我准备了新的数据集,每条数据是两个角色的通话记录,用来训练说话者识别(SR)的任务。adapter和lora都是从零开始训练。数据集基本都是按照30s切割。
在训练过程中无论采用什么超参数,loss值只是来回震荡,并且降的不多。基本情况是从2.5降到1.8左右就来回震荡,训练时间再长一些loss值能够在1.8-1.2之间震荡,再长一些学习率基本降到0,loss值仍然在1.8-1.2之间震荡。无论用哪个节点的lora和adapter,输出结果都十分糟糕。

提问

  1. 你们的数据集内容分布和时间分布是什么样的?是不是因为我全是通话记录,并且30秒拉满,导致模型训练过于复杂?
  2. 你们训练过程中loss值下降趋势是怎么样的?
  3. 我该如何改进策略,以至于能够完成SR任务的训练?

详细过程

  1. 数据集:音频为30s的通话记录,label为对应的转录结果,总共10w条。
  2. 训练过程中调整过epochlr , encoder(paraformer,whisper)gradient_accumulation_steps ,cvmn是否做标准化。但是loss变化基本不大,如下图所示
image 前期在2.0-1.8之间震荡 image 中期在1.8-1.3之间震荡 image 后期学习率都降到0了,仍然在1.8-1.3之间震荡 image 在测试的时候发现效果极其差,基本就是无限循环下去。

PS

为什么你们在用cmvn做标准化是加上平均数,乘以标准差。为什么不是减和除?
image

@lzl-mt
Copy link
Collaborator

lzl-mt commented Dec 24, 2024

  1. 你们的数据集内容分布和时间分布是什么样的?是不是因为我全是通话记录,并且30秒拉满,导致模型训练过于复杂?
    你说的具体指哪个任务?如果是ASR的话,我们没有统计过数据长度分布,但是大部分应该是在5s左右。30s拉满是指每个样本都是30s吗?我记得默认训练会丢弃20s以上的音频,
    self.max_length: int = 2000
  2. 你们训练过程中loss值下降趋势是怎么样的?
    我们没有关注过loss曲线,但是一定是稳定下降的。我们会在不同的阶段(例如每50000步)对多个测试集计算CER,用来确定模型的效果。
  3. 我该如何改进策略,以至于能够完成SR任务的训练?
    这里的SR任务指的是SID吗(说话人识别?) @yiliu-mt 可以提出对应的建议吗
  4. CMVN
    这里加和乘本质一样的,只是cmvn提前处理为了缩放因子。例如原来是除以10,那我可以存0.1到cmvn中。CMVN的计算逻辑复用了 Paraformer原始代码:https://github.com/modelscope/FunASR/blob/2e0b2086586212a2c04b5eb612a85796be1494f7/funasr/frontends/wav_frontend.py#L41

@lzl-mt
Copy link
Collaborator

lzl-mt commented Dec 24, 2024

另外,如果是对应多说话人的训练,建议使用SOT (Serialized Output Training) 的方法构建数据集进行训练。

@crazyxixi
Copy link
Author

十分感谢大佬细心解答!我是改了max_length,所有的数据基本都是30秒的。看下来应该是我数据集构造的过于简单了,导致一直降不下来。我再试试您说的SOT的方式。十分感谢!!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants