语言模型

ngram语言模型有两个难以逾越的鸿沟,数据稀疏与缺乏长距离语言约束

rnn:可以获得长距离信息,但是很难获得风场距离的信息,理由是随着长度的增加,远距离信息通过概率相乘的结果趋向于零

 

kaldi rnnlm 学习

向量层:将词汇表嵌入到一个固定维度的实数空间中,有两个作用:降低输入的维度,增加语义信息。

softmax层:将循环神经网络的输出转化为一个单词表中每个单词的输出概率。包含两个步骤:使用一个线性映射将循环神经网络的输出映射为一个与词汇表大小相同的向量,该步输出叫做logits;2. 调用softmax将logits转化为和为1的概率

统计词频:unigram_probs.txt

  rnnlm/get_unigram_probs.py --vocab-file=$dir/config/words.txt \
                             --unk-word="<SPOKEN_NOISE>" \
                             --data-weights-file=$dir/config/data_weights.txt \
                             $text_dir | awk 'NF==2' >$dir/config/unigram_probs.txt
0 0.0
1 5.677980732005511e-10
2 5.677980732005511e-10
3 0.00019065313190446504
4 0.00021921836828825837
5 0.00020410577696540876
.
.
.
337300 5.677980732005511e-10
337301 5.677980732005511e-10
337302 5.677980732005511e-10
337303 5.677980732005511e-10
337304 0.0
337305 0.07458654427367836
337306 0.0

选择特征:

  # choose features
  rnnlm/choose_features.py --unigram-probs=$dir/config/unigram_probs.txt \
                           --use-constant-feature=true \
                           --top-word-features=50000 \
                           --min-frequency 1.0e-03 \
                           --special-words='<s>,</s>,<brk>,<SPOKEN_NOISE>' \
                           $dir/config/words.txt > $dir/config/features.txt

features.txt

0	constant	0.01
1	special	<s>	1.0
2	special	</s>	0.037
3	special	<brk>	1.0
4	special	<SPOKEN_NOISE>	1.0
5	unigram	0.02657446768669987	0.004196046965775188
6	length	0.007
7	word	。	0.035
8	word	的	0.048
9	word	我	0.064
.
.
.
50515	match	那个	0.29
50516	match	问题	0.23
50517	match	需要	0.31

网络结构:

input dim=800 name=input
relu-renorm-layer name=tdnn1 dim=800 l2-regularize=0.001 input=Append(0, IfDefined(-1)) 
fast-lstmp-layer name=lstm1 cell-dim=800 recurrent-projection-dim=200 non-recurrent-projection-dim=200 l2-regularize=0.001
relu-renorm-layer name=tdnn2 dim=800 l2-regularize=0.001 input=Append(0, IfDefined(-2))
fast-lstmp-layer name=lstm2 cell-dim=800 recurrent-projection-dim=200 non-recurrent-projection-dim=200 l2-regularize=0.001
relu-renorm-layer name=tdnn3 dim=800 l2-regularize=0.001 input=Append(0, IfDefined(-1))
output-layer name=output l2-regularize=0.001 include-log-softmax=false dim=800

准备初始网络

rnnlm/prepare_rnnlm_dir.sh --unigram-factor 200.0 \
                             $text_dir $dir/config $dir

rnnlm :

(1)网络结构

                           

input dim=800 name=input
relu-renorm-layer name=tdnn1 dim=800 l2-regularize=0.001 input=Append(0, IfDefined(-1)) 
fast-lstmp-layer name=lstm1 cell-dim=800 recurrent-projection-dim=200 non-recurrent-projection-dim=200 l2-regularize=0.001
relu-renorm-layer name=tdnn2 dim=800 l2-regularize=0.001 input=Append(0, IfDefined(-2))
fast-lstmp-layer name=lstm2 cell-dim=800 recurrent-projection-dim=200 non-recurrent-projection-dim=200 l2-regularize=0.001
relu-renorm-layer name=tdnn3 dim=800 l2-regularize=0.001 input=Append(0, IfDefined(-1))
output-layer name=output l2-regularize=0.001 include-log-softmax=false dim=800

(2)嵌入层:词太大

(3)softmax层怎么处理:

(4)训练方法

(5)rescore方法:

(6)结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值