什么是 LM 任务?git
能够看到上面的方法在预估条件几率时,使用的是统计值,即数据量足够多时,统计值接近去真实几率值。github
根据马尔科夫假设,咱们能够将条件几率进行简化,单词的条件几率只和前面的k个词有关:web
k阶的语言模型受限于模型复杂度,当样本特别大时,为了解决计算成本,咱们只能减少k,而为了打破马尔科夫假设,如今有了注意力模型,可以对更多的前序单词进行建模。网络
n-gram 语言模型的两个主要问题app
传统计算条件几率的方法是统计方法函数
统计出来的值等于真实几率的条件是样本足够多,那可能的问题有:可能在训练集中从没出现,那这个值就是0,那几率就是0。那避免zero-probability 0几率的方法就是使用平滑技术(smoothing techniques),最多见的平滑方法是:
post
其中是词典大小,
..net
另一种平滑方法是:back-off3d
目前最好的平滑方法是:Kneser-Ney。cdn
咱们须要记录全部全部n-gram的数,随着n增长,模型参数急剧变大。
模型图:
其中
咱们能够看到模型中最主要的参数是最后一层的,随着vocabulary size的增长,
的大小愈来愈大。
t时刻的loss
总loss为时刻t累加:
语言模型的困惑度定义:
rnn模型的一个目标是:可以将hidden state传播下去,可是在实际中会出现梯度消失/爆炸问题,下面咱们以一个例子来讲明这个问题: 例子:
对于梯度爆炸问题,咱们能够经过 Gradient Clipping来解决,对于梯度消失问题呢?咱们要保证反向传播的时候,梯度不能太小,那咱们就指望对于每一个 都尽量接近于1,那相乘的时候,就不会变小了。
建议先读关于LSTM的文章:Understanding LSTM Networks
##参考