美文网首页
语言模型

语言模型

作者: dreampai | 来源:发表于2021-04-06 13:48 被阅读0次

    一、语言模型定义

    一个句子是否合理,就看它的可能性大小如何(概率)。


    image.png
    image.png

    语言模型缺点

    • 參数空间过大:条件概率P(wn|w1,w2,..,wn-1)的可能性太多,无法估算,不可能有用;
    • 数据稀疏严重:对于非常多词对的组合,在语料库中都没有出现,依据最大似然估计得到的概率将会是0

    二、 马尔科夫假设

    任意一个词出现的概率只同它前面的词有关。


    image.png

    三、高阶语言模型

    N 元模型:假设一个词由前面的 N-1 个词决定,对应的模型稍微复杂些。,即 N-1 阶马尔科夫假设

    image.png
    为什么 N 取值一般很小
    • N 元模型的大小(空间复杂度)几乎是 N 的指数函数。
    • 三元或四元甚至更高阶的模型也不能覆盖所有的语言现象。在自然语言中,上下文之间的相关性可能跨度非常大,甚至可以从一个段落跨到另一个段落。这就是马尔可夫假设的局限性。


      image.png

    优点

    • 采用极大似然估计,参数易训练
    • 完全包含了前 n-1 个词的全部信息
    • 可解释性强,直观易理解。

    缺点

    • 缺乏长期依赖,只能建模到前 n-1 个词
    • 随着 n 的增大,参数空间呈指数增长
    • 数据稀疏,难免会出现OOV的问题
    • 单纯的基于统计频次,泛化能力差。

    统计语言模型的限制

    基于最大似然估计的语言模型很容易训练,可扩展到大规模语料,时间表现良好。但模型缺乏对上下文的泛化。比如观察到 black car 和 blue car 并不会影响我们估计出现 red car 的概率,如果我们之前没有观测到它。

    四、平滑技术

    统计语料有限,存在数据稀疏,导致零概率问题

    • 折扣法(Discounting):从已有观察概率调配一点给未观察概率。
    • 插值法(Interpolation):将高阶模型和低阶模型做线性组合。
    • 回退法(Back-off):基于低阶模型估计未观察到的高阶模型。

    避免 0-概率事件的方法使用平滑技术,确保为每个可能的情况都分配一个概率(可能非常小)。

    Add one Smoothing
    它假设每个事件除了语料中观测的情况外,至少还发生 1 次:

    image.png

    折扣法

    古德-图灵估计原理:对于没有看见的事件,我们不能认为它发生的概率是零,因此从概率的总量中,分配一个很小的比例给这些没有看见的事件。


    image.png

    看见的那些事件的概率总和就要小于 1 了,因此,需要将所有看见的事件概率调小一点。至于小多少,要根据“越是不可信的统计折扣越多”的方法进行。


    image.png
    image.png
    image.png

    自然语言处理中,一般对出现次数超过某个阈值的词,频率不下调,支队出现次数低于某个阈值的词,频率才下调,下调得到的频率总和给未出现的词。(出现次数越少,折扣越多。对于未看见的词,也给予了一个比较小的概率。)

    四、语言模型评估

    困惑度:给测试集的句子赋予较高概率值的语言模型较好,当语言模型训练完之后,测试集中的句子都是正常的句子,那么训练好的模型就是在测试集上的概率越高越好,公式如下:

    image.png
    • 句子概率越大,语言模型越好,迷惑度越小。
    • 困惑度是与语料有关的——两种语言模型只有在使用相同评价语料的情况下才可以比较困惑度。

    五、神经语言模型

    N-Gram 模型需要精心设计平滑方法,为了解决这个问题,Bengio 提出神经网络来构建语言模型,给定前 N-1 个词预测下一个词的任务。

    • 使用神经网络语言模型,预测下一个词是各个词的条件概率
    • 使用神经网络语言模型,可以得到词的分布式表示
    • 词的相似度可以通过词向量的距离来衡量,未见词语序列的概率可以用相似词进行估计,很好解决了未登录词问题。
    image.png

    N-gram 神经语言模型的网络结构

    image.png
    • 输入层:将 context(w) 中的每个词映射为一个长为 m 的词向量,词向量在训练开始时是随机的,并参与训练
    • 投影层:将所有上下文词向量拼接为一个长向量,作为 w 的特征向量,该向量的维度为 m(n-1)
    • 隐藏层:拼接后的向量会经过一个规模为 h 隐藏层,该隐层使用的激活函数为 tanh
    • 输出层:最后会经过一个规模为 N 的 Softmax 输出层,从而得到词表中每个词作为下一个词的概率分布

    其中 m, n, h 为超参数,N 为词表大小,视训练集规模而定;训练使用交叉熵作为损失函数;当训练完成时,就得到了 N-gram 神经语言模型,以及副产品词向量

    参考链接

    相关文章

      网友评论

          本文标题:语言模型

          本文链接:https://www.haomeiwen.com/subject/ejhahltx.html