赞
踩
语言模型是指根据给定序列预测下一个单词的任务,其形式化表达为:给定单词序列X(1), X(2), … , X(t),然后预测单词X(t+1)的概率分布:
语言模型的另一种定义是给给定文本序列分配概率(这个概率代表了该文本序列出现的可能性大小)。
例如,给定一段文本X(1), X(2), … , X(t),那么这段文本出现的概率为:
语言模型在现实生活中具有非常广泛的应用,例如输入法和搜索引擎的输入联想功能。
N-grams指的是长度为n的连续单词序列,常用的包括unigrams、bigrams、tri-grams、4-grams。
N-gram语言模型的实现基于马尔科夫假设,即单词X(t+1)仅仅依赖于前面的n-1个单词。因此上述公式可以改写为:
实际计算中,使用n-gram在语料出现的频率代替实际的概率,如下所示:
语言模型主要存在数据稀疏的问题(sparsity problem)。这个问题可以从两方面分析。
首先,如果x(t+1), x(t),…,x(t-n+2)从未在语料出现过,那么根据根据上述公式计算得到的概率直接为0。为了避免这种情况,可以采用smoothing的方法,即给分子添加一个小的θ。
其次,如果x(t),…,x(t-n+2)从未在语料出现过,那么就无法根据上述公式进行计算。对于这种情况,可以采取backoff的方法,即使用count(x(t-1),…,x(t-n+2)) 来代替count(x(t),…,x(t-n+2))。
数据稀疏问题会随着n的增加而变得更加严重,因此在实际应用时,n一般不超过5。
除了数据稀疏问题之外,n-gram 语言模型还存在存储空间过大的问题。由于n-gram语言模型在计算时需要保存语料中所有n-gram出现的次数,因此模型的大小会随着n和语料的增加而增大。
Bengio, et al在《A Neural Probabilistic Language Model》中首次将神经网络引入到语言模型任务。在这篇论文中,Y. Bengio, et al使用一个固定窗口的深度神经网络来实现语言模型,其结构如图所示:
NNLM虽然成功解决了n-gram模型的数据稀疏和存储问题,但是也存在一些其它问题:
(1)模型中设定的窗口尺寸设定比较小。
(2)模型中的权重矩阵W随窗口尺寸增大而增大,因此窗口尺寸只能局限于一定范围。
(3)输入处理方式不对称,即输入单词在计算中会分别与W中的不同权重相乘。
RNN应用到语言模型中主要有以下优势:
(1)可以处理任意长度的输入序列;
(2)理论上在计算t时刻的状态时可以应用前面时刻获得的信息;
(3)模型的大小不受输入序列长度影响;
(4)每一个时间步对输入的计算可以共享相同权重;
RNN的缺陷在于:
(1)计算速度过慢
(2)在实际应用,由于梯度消失问题,RNN无法捕捉长距离依赖特征。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。