rwthlm运动

用于训练神经网络语言模型(前馈、递归和长短记忆神经网络)的工具包。该软件由Martin Sundermeer编写。

用法

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

网络格式

参数NETWORK指定神经网络LM的体系结构以及文件名。格式为“name-layer1-layer2-…”。在这里,“name”可以任意选择,但不能包含破折号(“-”)。隐藏层(“layer1”、“layer2”…)由破折号“-”分隔,第一个字符指定层的类型,数字表示层的大小。可用的图层类型包括:

  1. “i”:具有身份激活功能的线性层(必须是第一层)
  2. “2”-“9”:前馈输入层,带2。。。,9个历史单词(必须是第一层)
  3. “l”:具有tanh激活功能的线性层
  4. “L”:具有S形激活功能的线性层
  5. ‘r’:具有tanh激活功能的递归层
  6. “R”:具有乙状结肠激活功能的复发层
  7. “m”或“m”:LSTM层(可能不是第一层)

示例:参数“example1-i300-m300”创建了一个具有线性层和后续LSTM层的网络,每个层包含300个神经元。网络“example2-7700-L100”是一个8克前馈网络,具有大小为100的线性层(对于7个输入字中的每一个)和大小为100且具有S形激活功能的隐藏层。在所有情况下,输出层都会自动附加。

命令行选项

--帮助

--配置参数

--冗长的

--声控参数

--重新映射参数

--臭鼬

--映射unk-arg(=<unk>)

--map-sb参数(=<sb>)

--调试-no-sb

--列车参数

--dev参数

--ppl参数

--随机参数(=1)

--学习速率参数

--动量arg(=0)

--批大小参数(=1)

--序列长度arg(=100)

--最大功率参数(=0)

--无干扰

--字捕获参数(=固定)

--前馈

--无偏压

--数量-oovs参数(=0)

--λ参数

--look-ahead-smiring参数(=无)

--从属的

--look-ahead-lm-scale参数

--lm-刻度参数(=1)

--修剪阈值参数

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

--dp阶参数(=3)

--输出参数(=晶格)

--清除初始链接

--set-sb-next-to-last系列

--设置sb-last

重要信息

  1. rwhlm永远在训练!我们没有研究可靠的停止标准。您可以限制运行时,在开发复杂度看起来不错时终止作业,或者提前指定一些时间段(选项--最大功率).

  2. rwthlm使用单个句子边界标记,表示为“<sb>”(不像SRILM中的“<s>”和“</s>”)。令牌的名称可以更改(选项--绘制某人的地图). 句子边界标记将自动插入。可能只有两种情况下您可能会注意到这一点:(1)如果您的训练数据的格式如下:“<s>text text…</s>”。然后删除句子的开始和结束标记。(2) 或者,如果您想重新搜索HTK晶格:您的晶格可能包含标记为“</s>”的链接。然后,通过--地图-sb命令行参数。或者,您可以检出命令行选项--set-sb-next-to-last系列--设置sb-last.

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

示例

  1. 创建单词类(例如,使用mkcls公司单词2vec棕色簇). 我们发现1000或2000个词类对于20万个词汇来说效果很好。

  2. 培训:
    ./rwthlm(转/转)\--vocab mkcls.类\--臭鼬\--列车.gz\--dev开发.gz\--批量4\--学习率1e-3\--最大epoch 30\示例-100-m100
  3. 困惑评估:
    ./rwthlm(转/转)\--vocab mkcls类\--臭鼬\--ppl测试.gz\--冗长的\示例-100-m100
    SRILM风格的文字输出:
    正在从文件“mkcls.classes”读取词汇。。。从文件“example-i100-m100”读取神经网络。。。17个时代后的最佳发展困惑:90.686305815766076正在计算文件“test.gz”的困惑。。。困惑:p(bonjour |…)=[1克]0.00046433[-3.33317]p(教授|…)=[1克]0.00011872[-3.92548]p(菲利普|…)=[1克]0.00224524[2.64874]p(偶数|…)=[1克]0.00352221[-2.45318]p(<sb>|…)=[1克]0.50998864[-0.29244]p(bonjour |…)=[1克]0.00775432[2.11046]p(先生|…)=[1克]0.03103678[-1.50812]p(fogiel|…)=[1克]0.00007777[-4.10920]p(<sb>|…)=[1克]0.55661332[-0.25445]p(vous|…)=[1克]0.06344076[-1.19763]p(etes|…)=[1克]0.19047053[-0.72017]p(une|…)=[1克]0.01625033[-1.78914]p(梭菌|…)=[1克]0.00000365[-5.43802]p(dans|…)=[1克]0.03445965[-1.46269]p(le|…)=[1克]0.22801776[-0.64203]p(monde|…)=[1克]0.17175484[-0.76509]...

    您可以使用grep表示“<TAB>p”(或awk'/\tp/'),并使用它对Kneser-Ney模型进行简单插值(来自SRILM的compute-best-mix)。

  4. 晶格重构
    ./rwthlm(转/转)\--vocab mkcls类\--臭鼬\--λ0.599535\--修剪阈值200\--dp阶9\--look-ahead-miring无\--lm-刻度38\--输出扩展常数\格构1.lat.gz格构2.lat.gz格构3.lat.gz\示例-100-m100
    输出为lattice1.lat.rescored.gz、lattice2.lat.rescored.gz和lattice3.lat.rescared.gz。

许可证

下载

工具书类