rwthlm公司

用于训练神经网络语言模型(前馈、递归和长短时记忆神经网络)的工具箱。这个软件是马丁·桑德梅耶写的。

使用

rwthlm[选项]。。。[晶格]。。。网络

网络格式

参数网络同时指定了神经网络LM的结构和文件名。格式为“name-layer1-layer2-…”。这里,“name”可以任意选择,但不能包含破折号(“-”)。隐藏层(“layer1”,“layer2”,…)之间用虚线“-”隔开,第一个字符指定层的类型,数字表示层的大小。可用的图层类型有:

  1. “i”:具有身份激活功能的线性层(必须是第一层)
  2. “2”-“9”:带有2,…,9个历史单词的前馈输入层(必须是第一层)
  3. “l”:具有tanh激活函数的线性层
  4. “D层线性激活”:Sigmoil函数
  5. “r”:具有tanh激活函数的递归层
  6. “R”:具有sigmoid激活函数的递归层
  7. “m”或“m”:LSTM层(可能不是第一层)

示例:参数“example1-i300-m300”创建了一个具有线性层和后续LSTM层的网络,每个层由300个神经元组成。网络“example2-7700-L100”是一个8克的前馈网络,具有尺寸为100的线性层(针对7个输入字中的每一个)和具有sigmoid激活函数的尺寸为100的隐藏层。在所有情况下,输出层都会自动附加。

命令行选项

--帮助

--配置参数

--冗长的

--词汇参数

--重新映射参数

--∗

--映射unk参数(=<unk>)

--映射sb arg(<sb>)

--调试无sb

--列车参数

--开发参数

--ppl参数

--随机种子参数(=1)

--学习率arg

--动量参数(=0)

--批量大小参数(=1)

--序列长度arg(=100)

--最大历元参数(=0)

--不要乱动

--换行参数(=固定)

--前馈

--没有偏见

--数值oovs参数(=0)

--λarg

--先行半环参数(=无)

--从属

--前瞻lm scale arg

--lm刻度参数(=1)

--修剪阈值参数

--修剪限制参数(=0)

--dp订单参数(=3)

--输出参数(=晶格)

--清除初始链接

--倒数第二

--把某人放在最后

重要的

  1. 永远的火车!我们没有调查一个可靠的停止标准。您可以限制运行时,在开发复杂度看起来不错时终止作业,或者提前指定几个时间段(选项--最大历元).

  2. rwthlm使用一个句子边界标记,表示为“<sb>”(而不是像SRILM中那样的“<s>”和“</s>”)。令牌的名称可以更改(选项--给某人地图). 自动插入句子边界标记。可能只有两种情况下您可能会注意到这一点:(1)如果您的培训数据是这样格式化的:“<s>文本文本文本。。。</s>。然后删除句子的开始和结束标记。(2) 或者,如果您想重新扫描HTK晶格:您的晶格可能包含一个标记为“</s>”的链接。然后,将rwthm语句边界标记重命名为“</s>”,这就足够了--给某人地图命令行参数。或者,可以查看命令行选项--使某人倒数第二--把某人放在最后.

  3. 在rwthm中,梯度的计算是在全序列上精确计算的,即没有梯度值的截断、反向传播随时间的截断等。因此,递归LSTM网络的训练对学习速率很敏感,验证困惑有时会波动。在这种情况下,学习率会自动降低。(学习率的自动降低在第一个历元是不起作用的:如果第一个历元之后的发展困惑很差,可以手动从较小的初始学习率重新开始。)也可以训练简单的递归神经网络,但由于我们没有研究上述近似值,这是不太受支持的。
  4. 如果您的训练因同样的原因停止,您可以通过再次调用相同的命令继续。权重值将从上次成功完成的历元恢复。
  5. rwthlm(实际上是OpenMP)总是使用所有可用的CPU资源,除非您明确地限制它们。这将使用四个核心,即使有更多:
    导出OMP_NUM_THREADS=4./rwthlm-火车列车.gz。。。
  6. rwthlm支持HTK格式,尤其是由拉塞尔. 如果格满足这些假设,它很可能与其他ASR解码器一起工作:(1)存在唯一的初始节点,标识符I=0。(2) 有一个唯一的final节点(具有任意标识符)。(3) 如果晶格包含n节点,这些节点的标识符I=0,…,I=(n-1) 一。(4) 如果有这些链接有标识符J=0,…,J=(-1) 一。(5) 晶格具有与节点相关联的一致的时间戳,以秒为单位测量,精度为厘米秒(“t=1.23”)。

示例

  1. 创建单词类(例如,使用mkcls公司文字2vec棕色簇). 我们发现1000或2000个单词的课程对于200K的词汇量来说很有效。

  2. 培训:
    ./rwthlm公司\--词汇mkcls.classes\--∗\--列车.gz\--开发人员gz\--批量4\--学习率1e-3\--最大历元30\示例-i100-m100
  3. 困惑评估:
    ./rwthlm公司\--词汇mkcls.classes\--∗\--ppl测试.gz\--冗长的\示例-i100-m100
    SRILM风格的逐字输出:
    正在从文件“mkcls.classes”读取词汇。。。正在从文件'example-i100-m100'读取神经网络。。。17个时代后的最佳发展困惑:90.686305815766076正在计算文件“test.gz”的困惑。。。困惑:p(你好…)=[1gram]0.00046433[-3.33317]p(教授……)=[1gram]0.00011872[-3.92548]p(菲利普|…)=[1gram]0.00224524[-2.64874]p(偶数|…)=[1gram]0.00352221[-2.45318]p(<sb>|…)=[1gram]0.50998864[-0.29244]p(你好…)=[1gram]0.00775432[-2.11046](先生)=[1gram]0.03103678[-1.50812]p(福吉尔|…)=[1gram]0.00007777[-4.10920]p(<sb>|…)=[1gram]0.55661332[-0.25445]p(vous |…)=[1gram]0.06344076[-1.19763]p(埃特斯|…)=[1gram]0.19047053[-0.72017]p(une |…)=[1gram]0.01625033[-1.78914]p(sommite |…)=[1gram]0.00000365[-5.43802]p(丹麦元)=[1gram]0.03445965[-1.46269]p(乐|…)=[1gram]0.22801776[-0.64203]p(世界|…)=[1gram]0.17175484[-0.76509]...

    您可以对“<TAB>p”(或awk'/\tp/)进行grep,并使用它来简化Kneser-Ney模型的插值(从SRILM计算最佳混合)。

  4. 晶格重定
    ./rwthlm公司\--词汇mkcls.classes\--∗\--λ0.599535\--修剪阈值200\--dp订单9\--向前看半环无\--lm刻度38\--输出扩展晶格\晶格1.lat.gz晶格2.lat.gz晶格3.lat.gz\示例-i100-m100
    输出是lattice1.lat.rescord.gz、latice2.lat.rescord.gz和latice3.lat.rescord.gz。

许可证

下载

工具书类