| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 新一代 Kaldi 中的 LSTM GradientFilter -> 正文阅读 |
|
[人工智能]新一代 Kaldi 中的 LSTM GradientFilter |
本文介绍新一代 Kaldi 中的 LSTM GradientFilter:? ?相关代码:https://github.com/k2-fsa/icefall/blob/master/egs/librispeech/ASR/pruned_transducer_stateless2/scaling.py#L115 1. LSTM 梯度问题https://pytorch.org/docs/stable/generated/torch.nn.LSTM.html 我们先通过上图简单回顾下 LSTM cell 的内部结构和运算机制。作为 RNN 的变种之一, LSTM 旨在解决 RNN 存在的梯度消失或梯度爆炸的问题。 虽然在大多数情况下,LSTM 可以解决梯度问题。然而,如果矩阵??的值非常大,梯度爆炸问题仍然会发生,原因在于:在反向传播中,梯度会与矩阵??相乘;随着序列的长度增大, 相乘次数越多,梯度会无限制地随之增大。 我们在 icefall 的 PR (https://github.com/k2-fsa/icefall/pull/558 )中讨论了训练 LSTM 模型时遇到的梯度问题。通过使用 icefall 中提供的模型分析工具(https://github.com/k2-fsa/icefall/blob/master/icefall/diagnostics.py),发现在第 10 层发生了梯度爆炸,由于梯度的反向传播,导致前面的层输出值对应的梯度都超过了正常范围。 LSTM diagnostics 我们使用的 LSTM 模型结构相对简单,包括 12 层的 encoder-layer。如下图所示,每个 encoder-layer 包括一个 ScaledLSTM、一个 ScaledFeedForward 和 一个 BasicNorm。 lstm encoder-layer 感兴趣的同学可以查看关于 LSTM 的 recipe 相关代码:https://github.com/k2-fsa/icefall/blob/master/egs/librispeech/ASR/lstm_transducer_stateless3/lstm.py 2. Pytorch?中的 clip_grad_norm_尽管 Pytorch 中的梯度裁剪函数?
阅读代码,可发现其潜在的问题为:
3. GradientFilter我们希望在梯度的反向传播过程中,及时裁剪发生爆炸的梯度,而不是在整个模型的梯度反向传播完成之后。因此,我们在 icefall 实现了用于训练 LSTM 的 GradientFilter 模块。 该模块基于 torch.autograd.Function 实现,作用于每个 LSTM 层的内部,如:
如下面代码块所示,GradientFilter 在前向计算过程不进行任何操作,在反向传播过程中以 mask 的形式:
4. 实验结果下面展示了 12 层的 LSTM 模型 (参数量为86M)在 Full LibriSpeech 数据集上训练了 40 个 epoch,使用不同解码方法时,在 test-clean & test-other 上的 WER:
可以发现, GradientFilter 可以稳定 LSTM 的训练过程,有助于函数收敛,并取得一定的性能提升。 5.?实验结果本文介绍了新一代 Kaldi 中用于训练 LSTM 的 GradientFilter,如若大家有相关的优化建议,欢迎向 icefall 提交 PR。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 21:46:08- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |