rwthlm运动
用法
rwthlm[选项]。。。 [格子]。。。 网络
网络格式
“i”:具有身份激活功能的线性层(必须是第一层) “2”-“9”:前馈输入层,带2。。。, 9个历史单词(必须是第一层) “l”:具有tanh激活功能的线性层 “L”:具有S形激活功能的线性层 ‘r’:具有tanh激活功能的递归层 “R”:具有乙状结肠激活功能的复发层 “m”或“m”:LSTM层(可能不是第一层)
命令行选项
显示帮助消息。
使用配置文件(格式为Boost.Program_options提供的格式)。
详细的程序输出。 (这主要用于计算复杂度和估计训练时间。当以详细模式计算复杂度时,它将输出文本文件中每个单词的概率。当在训练期间使用时,它会输出训练复杂度的运行平均值以及处理小批处理所需的时间。)
定义词汇文件。 这是一种每行包含一个单词的文本格式,或者,如果使用单词类进行加速,则格式为“word<TAB>class_number”。
这个 --人声 选项允许任意单词类。 然而,在内部,rwthlm可能使用不同(但等效)的单词和类别索引。 此选项写入实际用于给定文件的单词和类索引。
使用封闭的词汇表。
重命名未知标记。
重命名句子边界标记。
出于调试目的,可以关闭“<sb>”标记的自动插入。请谨慎使用。
训练文本文件(自动解压缩压缩文件)。
用于提前停止的开发数据文件(自动解压缩压缩文件)。
用于复杂度评估的文本文件(gzipped文件的自动解压缩)。
随机数生成器种子(用于洗牌数据和初始化神经网络权重参数)。
初始学习率。 如果您没有指定初始学习率,rwthlm将尝试给出初始猜测。 然而,该战略并不太详细。。。 小心使用。
动量参数。
并行评估的最大序列数(如果是前馈网络,则为n-gram)。
训练和困惑评估中使用的序列的最大长度。
最大训练时长,0表示无限。
不要洗牌训练数据(洗牌总是在序列级别上执行)。
单词需要被包装成序列,最终用于训练或困惑评估。 有三种选择: “concatenated”(将连续句子连接到最大序列长度)、“fixed”(当序列正好具有指定长度时换行)或“verbatim”(由文本语料库中的换行符指定的序列)
默认情况下,通过时间的逐段反向传播来训练神经网络。 您可以用这种方式训练前馈模型,但最有可能的是,您希望使用标准反向传播(使用此开关激活)。 使用此交换机时,请确保网络配置中没有重复层。。。
不要使用任何偏见。
指定识别和神经网络LM词汇大小的差异。 此选项仅用于晶格重新排序和复杂度评估。 如果神经网络LM词汇表不包括识别器的所有单词(这可能使用更大的Kneser-Ney模型),则使用此选项来强制规范化。
用于晶格重构的神经网络LM的插值权重(剩余权重为晶格链接上已经存在的LM概率)。
用于晶格重新搜索的前瞻性。可能的值为“none”、“tropical”(单个最佳前瞻性值)或“log”(所有未来路径的总和)。 该术语与WFST的半环命名有关。
默认情况下,重新扫描多个相互独立的晶格。 使用此选项,将使用前一个晶格的最佳状态作为当前晶格的初始化。 确保在命令行中按时间顺序提供晶格。
如果需要,可以指定单个LM比例以进行晶格重新扫描。
用于晶格解码的LM尺度。
晶格重排序的光束修剪阈值,零表示无限制。
每个晶格节点的最大假设数,零表示无限。
晶格重构(重组修剪)的动态编程顺序。
如何转储晶格重新排序的结果:“ctm”(NIST ctm格式)、“lattice”(与输入晶格具有相同拓扑结构的晶格)或“expanded-lattice”,(比输入晶格稍大的晶格,其大小开销取决于修剪参数)。
将HTK晶格中的初始链接分数设置为零(仅用于与RWTH ASR系统创建的n个最佳列表兼容)。
将晶格中倒数第二个链接的标签设置为“<sb>”(仅为了与RWTH ASR系统创建的晶格兼容,RWTH ASPR中的默认标签为epsilon)。
将晶格中最后一个链接的链接标签设置为“<sb>”(仅为了与RWTH ASR系统创建的晶格兼容,RWTH ASPR中的默认标签为epsilon)。
重要信息
rwhlm永远在训练! 我们没有研究可靠的停止标准。 您可以限制运行时,在开发复杂度看起来不错时终止作业,或者提前指定一些时间段(选项 --最大功率 ). rwthlm使用单个句子边界标记,表示为“<sb>”(不像SRILM中的“<s>”和“</s>”)。 令牌的名称可以更改(选项 --绘制某人的地图 ). 句子边界标记将自动插入。 可能只有两种情况下您可能会注意到这一点:(1)如果您的训练数据的格式如下:“<s>text text…</s>”。 然后删除句子的开始和结束标记。 (2) 或者,如果您想重新搜索HTK晶格:您的晶格可能包含标记为“</s>”的链接。 然后,通过 --地图-sb 命令行参数。 或者,您可以检出命令行选项 --set-sb-next-to-last系列 和 --设置sb-last . 在rwthlm中,梯度是在全序列上以精确的方式计算的,即不裁剪梯度值、截断时间反向传播等。因此,递归LSTM网络的训练对学习率很敏感,验证困惑有时可能会波动。 在这种情况下,学习率会自动降低。 (学习率的自动降低在第一个阶段不起作用:如果第一个阶段后的发展困惑非常糟糕,请手动从较小的初始学习率重新开始。)也可以训练简单的递归神经网络,但由于我们没有研究上述近似值, 这一点没有得到很好的支持。 如果您的训练跑步因同样的原因停止,您只需再次调用相同的命令即可继续。 权重值将从上次成功完成的历元中恢复。 rwthlm(实际上是OpenMP)总是使用所有可用的CPU资源,除非您明确限制它们。 这将使用四个核心,即使有更多: 导出OMP_NUM_THREADS=4 ./rwthlm-列车.gz。。。 rwthlm支持HTK格式,特别是由 RASR公司 如果格满足以下假设,则它很可能与其他ASR解码器一起工作:(1)存在标识符为I=0的唯一初始节点。 (2) 有一个唯一的最终节点(具有任意标识符)。 (3) 如果晶格包含 n个 节点,这些节点具有标识符I=0。。。, 我=( n个 -1). (4) 如果有 米 链接,这些链接具有标识符J=0。。。, J型=( 米 -1). (5) 晶格具有与节点相关联的一致时间戳,以秒为单位,精度为摄氏度(“t=1.23”)。
示例
创建单词类(例如,使用 mkcls公司 或 单词2vec 或 棕色簇 ). 我们发现1000或2000个词类对于20万个词汇来说效果很好。 培训: ./rwthlm(转/转)\ --vocab mkcls.类\ --臭鼬\ --列车.gz\ --dev开发.gz\ --批量4\ --学习率1e-3\ --最大epoch 30\ 示例-100-m100 困惑评估: ./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)。 晶格重构 ./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。
许可证
请参见 许可证 .
下载
确保您同意 许可证 . 下载rwthlm v0.12 在这里 . 在发布基于此软件的结果时,请引用 Martin Sundermeer、Ralf Schlüter和Hermann Ney:“rwhlm-亚琛大学RWTH神经网络语言建模工具包”,Proc。 2014年Interspeech,第2093-2097页
工具书类
Martin Sundermeer、Ralf Schlüter和Hermann Ney:“语言建模的LSTM神经网络”,Proc。 2012年Interspeech Martin Sundermeyer、伊利亚·奥帕林、Jean-Luc Gauvain、Ben Freiberg、Ralf Schlüter和Hermann Ney:“前馈和递归神经网络语言模型的比较”,Proc。 ICASSP 2013,第8430-8434页 Martin Sundermeyer、Zoltán Tüske、Ralf Schlüter和Hermann Ney:“长跨度神经网络语言模型的格解码和重取”,Proc。 2014年Interspeech,第661-665页 Martin Sundermeer、Ralf Schlüter和Hermann Ney:“rwhlm-亚琛大学RWTH神经网络语言建模工具包”,Proc。 Interspeech 2014,第2093-2097页 Martin Sundermeyer、Hermann Ney和Ralf Schlüter:“语言建模从前馈到递归LSTM神经网络”,IEEE/ACM音频、语音和语言处理汇刊,第23卷,第3期,2015年3月,第517-529页