当前位置: 首页 > article >正文

基于统计方法的语言模型

基于统计方法的语言模型

基于统计方法的语言模型主要是指利用统计学原理和方法来构建的语言模型,这类模型通过分析和学习大量语料库中的语言数据,来预测词、短语或句子出现的概率。

  1. N-gram模型:这是最基础的统计语言模型之一,它基于统计语言模型的文本分析算法,用于预测文本中下一个词出现的概率,基于前面出现的n-1个词的序列。N-gram模型的“n”代表序列中元素的数量,常见的有Unigram(N=1)、Bigram(N=2)和Trigram(N=3)模型。

  2. 隐马尔可夫模型(HMM):这是一种统计模型,基于一个隐藏的马尔可夫链生成不可观测的状态序列,并根据这些隐藏状态产生可观测的序列。HMM通过描述隐藏状态之间的转移概率以及隐藏状态到观测值的发射概率来模拟并预测观测序列的生成过程。

  3. 最大熵模型:这是一种基于概率分布的模型,用于描述任意语句(字符串)s属于某种语言集合的可能性。

  4. 条件随机场(CRF):这是一种用于建模序列数据的统计模型,常用于自然语言处理任务,如词性标注和命名实体识别。

N-gram模型

N-gram语言模型是一种基于统计的自然语言处理技术,用于预测文本中连续出现的项目(如字母、音节或单词)的概率。

"N-gram"中的"N"指的是序列中连续项目的数目。

N-gram模型基于一个假设:一个项目的出现只依赖于前面N-1个项目。以下是N-gram模型的一些关键点:

  1. Unigram Model(1-gram模型)

    • 只考虑单个项目(通常是单词)的概率。
    • 忽略了单词之间的上下文关系。
  2. Bigram Model(2-gram模型)

    • 考虑两个连续项目(通常是单词)的概率。
    • 例如,"the"后面跟着"cat"的概率。
  3. Trigram Model(3-gram模型)

    • 考虑三个连续项目的概率。
    • 例如,“the"后面跟着"cat”,然后是"sat"的概率。
  4. 更高阶的N-gram模型

    • 可以扩展到4-gram、5-gram等,但随着N的增加,模型的复杂度和所需的数据量也会增加。
  5. 平滑技术

    • 由于N-gram模型依赖于实际观察到的数据,对于未出现过的N-gram序列,模型无法给出概率。为了解决这个问题,需要使用平滑技术,如拉普拉斯平滑(Laplace smoothing)或Good-Turing折扣。
  6. 交叉熵损失

    • 在训练N-gram模型时,通常使用交叉熵损失函数来衡量模型预测的概率分布与实际观测到的数据之间的差异。
  7. 局限性

    • 随着N的增加,模型需要更多的数据来覆盖所有可能的N-gram组合,这可能导致数据稀疏问题。
    • N-gram模型通常无法捕捉长距离的依赖关系,因为它们只考虑局部的上下文。

N-gram模型计算公式

公式基于条件概率,即给定前N-1个词的情况下,下一个词出现的概率。

P n − grams ( w 1 : N ) = C ( w i − n + 1 : i ) C ( w i − n + 1 : i − 1 ) P_{n-\text{grams}}(w_1:N)=\frac{C(w_{i-n+1}:i)}{C(w_{i-n+1}:i-1)} Pngrams(w1:N)=C(win+1:i1)C(win+1:i)

这里:

  • C ( w i − n + 1 : i ) C(w_{i-n+1}:i) C(win+1:i)是词序列 w i − n + 1 , w i − n + 2 , … , w i w_{i-n+1},w_{i-n+2},\ldots,w_i win+1,win+2,,wi在语料库中出现的次数。
  • C ( w i − n + 1 : i − 1 ) C(w_{i-n+1}:i-1) C(win+1:i1)是词序列 w i − n + 1 , w i − n + 2 , … , w i − 1 w_{i-n+1},w_{i-n+2},\ldots,w_{i-1} win+1,win+2,,wi1在语料库中出现的次数。

对于Unigram(n=1):

  • 分子 C ( w i − 1 + 1 : i ) = C ( w i ) C(w_{i-1+1}:i)=C(w_i) C(wi1+1:i)=C(wi),即词 w i w_i wi在语料库中出现的次数。
  • 分母 C ( w i − 1 + 1 : i − 1 ) = C total C(w_{i-1+1}:i-1)=C_{\text{total}} C(wi1+1:i1)=Ctotal,即语料库中词的总数。

对于Bigram(n=2):

  • 分子 C ( w i − 2 + 1 : i ) = C ( w i − 1 , w i ) C(w_{i-2+1}:i)=C(w_{i-1},w_i) C(wi2+1:i)=C(wi1,wi),即词对 w i − 1 , w i w_{i-1},w_i wi1,wi在语料库中出现的次数。
  • 分母 C ( w i − 2 + 1 : i − 1 ) = C ( w i − 1 ) C(w_{i-2+1}:i-1)=C(w_{i-1}) C(wi2+1:i1)=C(wi1),即词 w i − 1 w_{i-1} wi1在语料库中出现的次数。

n-grams 的统计学原理

n-grams 语言模型基于马尔可夫假设和离散变量的极大似然估计给出语言符号的
概率。

n 阶马尔可夫假设

N阶马尔可夫假设,也称为N阶马尔可夫链(Markov chain of order N),是马尔可夫过程的一个特例,它描述了一个系统在下一个状态的概率分布仅依赖于当前状态以及之前的N-1个状态。

在自然语言处理中,这个假设被用来构建N-gram模型,其中每个“状态”可以是一个词或者一个字母。

具体来说,N阶马尔可夫假设包含以下几个关键点:

  1. 状态的依赖性

    • 在一个N阶马尔可夫链中,系统在时间t的状态 X t X_t Xt 仅依赖于时间 t − 1 , t − 2 , . . . , t − N t-1, t-2, ..., t-N t1,t2,...,tN的状态,即 X t − 1 , X t − 2 , … , X t − N X_{t-1}, X_{t-2}, \ldots, X_{t-N} Xt1,Xt2,,XtN
  2. 条件概率

    • 给定前N个状态,下一个状态的概率是确定的。数学上,这可以表示为:
      P ( X t + 1 = x t + 1 ∣ X t = x t , X t − 1 = x t − 1 , … , X t − N = x t − N ) = P ( X t + 1 = x t + 1 ∣ X t = x t ) P(X_{t+1} = x_{t+1} | X_t = x_t, X_{t-1} = x_{t-1}, \ldots, X_{t-N} = x_{t-N}) = P(X_{t+1} = x_{t+1} | X_t = x_t) P(Xt+1=xt+1Xt=xt,Xt1=xt1,,XtN=xtN)=P(Xt+1=xt+1Xt=xt)
    • 这意味着,给定当前状态 X t X_t Xt,下一个状态 X t + 1 X_{t+1} Xt+1 的概率分布与之前的状态 X t − 1 , X t − 2 , … , X t − N X_{t-1}, X_{t-2}, \ldots, X_{t-N} Xt1,Xt2,,XtN 无关。
  3. 简化的模型

    • 马尔可夫假设通过限制状态之间的依赖关系,简化了模型的复杂度。在语言模型中,这意味着每个词的出现仅依赖于前N-1个词,而不是整个句子的历史。
  4. N的选择

    • N的选择取决于具体应用和数据的特性。较小的N值(如1或2)可以减少计算复杂度,但可能无法捕捉足够的上下文信息。较大的N值可以提供更多的上下文信息,但会增加模型的复杂度,并可能导致数据稀疏问题。
  5. 数据稀疏问题

    • 在高阶马尔可夫模型中,由于可能的状态组合数量急剧增加,很多N-gram组合可能在训练数据中从未出现,导致概率估计为零。这就需要使用平滑技术来估计这些未观察到的状态的概率。

离散型随机变量的极大似然估计(MLE)

离散型随机变量的极大似然估计(MLE)是一种统计学方法,用于估计离散型随机变量的概率分布参数。

核心思想是选择参数值,使得观测到的样本数据出现的概率(似然性)最大。

  1. 似然函数(Likelihood Function)

    • 对于离散型随机变量,似然函数是基于观测样本的联合概率分布,作为参数的函数。如果样本是独立同分布的(i.i.d.),似然函数可以表示为每个观测值概率质量函数(PMF)的乘积。
    • 即对于观测值 x 1 , x 2 , . . . , x n x_1, x_2, ..., x_n x1,x2,...,xn
      似然函数 L ( θ ) L(\theta) L(θ) 为: L ( θ ) = ∏ i = 1 n p ( x i ; θ ) L(\theta) = \prod_{i=1}^{n} p(x_i; \theta) L(θ)=i=1np(xi;θ)
      其中, p ( x i ; θ ) p(x_i; \theta) p(xi;θ) 是随机变量 X X X 取值为 x i x_i xi 的概率, θ \theta θ 是待估计的参数。
  2. 对数似然函数(Log-Likelihood Function)

    • 由于似然函数的乘积形式可能涉及大量的项,计算不便,通常取似然函数的自然对数,得到对数似然函数:
      ℓ ( θ ) = ln ⁡ L ( θ ) = ∑ i = 1 n ln ⁡ p ( x i ; θ ) \ell(\theta) = \ln L(\theta) = \sum_{i=1}^{n} \ln p(x_i; \theta) (θ)=lnL(θ)=i=1nlnp(xi;θ)
      对数似然函数简化了计算,并且在最大化似然函数时,最大化对数似然函数可以得到相同的结果。
  3. 求导和求解

    • 为了找到最大化似然函数的参数值,通常对对数似然函数求导,并令导数等于零求解参数:
      d d θ ℓ ( θ ) = 0 \frac{d}{d\theta} \ell(\theta) = 0 dθd(θ)=0
      解这个方程可以得到参数的极大似然估计值。
  4. 极大似然估计值(MLE)

    • 使似然函数或对数似然函数达到最大值的参数 θ \theta θ 称为极大似然估计值,记作 θ ^ \hat{\theta} θ^。这个值代表了在给定样本下,使得观测数据出现概率最大的参数值。
  5. 性质

    • 极大似然估计具有一些良好的性质,例如一致性(随着样本量的增加,MLE趋于真实参数值)和渐近正态性(对于大样本,MLE的分布趋于正态分布)。

推导

在 n-grams 语言模型中,n 阶马尔可夫假被用来简化真实条件概率的计算。具体来说,对于一个词序列 w 1 , w 2 , . . . , w N {w1, w2, ..., wN} w1,w2,...,wN,第 i 个词 wi 出现的概率只依赖于它前面的 n-1 个词 w i − n + 1 , . . . , w i − 1 {wi-n+1, ..., wi-1} win+1,...,wi1,即:

P ( w i ∣ w 1 : w i − 1 ) ≈ P ( w i ∣ w i − n + 1 : i − 1 ) P(w_i | w_1:w_{i-1}) \approx P(w_i | w_{i-n+1}:i-1) P(wiw1:wi1)P(wiwin+1:i1)

这个假设将复杂的条件概率简化为只依赖于最近 n-1 个词的概率,使得计算变得更加可行。

我们使用极大似然估计来近似词序列的条件概率。

给定一个词序列 w 1 , w 2 , . . . , w N {w1, w2, ..., wN} w1,w2,...,wN,其出现的概率可以表示为:

P ( w 1 : N ) = ∏ i = 1 N P ( w i ∣ w 1 : i − 1 ) P(w_1:N) = \prod_{i=1}^{N} P(w_i | w_1:i-1) P(w1:N)=i=1NP(wiw1:i1)

根据 n 阶马尔可夫假设,这可以简化为:

P ( w i ∣ w 1 : i − 1 ) ≈ P ( w i ∣ w i − n + 1 : i − 1 ) P(w_i | w_1:i-1) \approx P(w_i | w_{i-n+1}:i-1) P(wiw1:i1)P(wiwin+1:i1)

然后,我们使用极大似然估计来近似这个条件概率。具体来说,我们用词序列 {w_{i-n+1}, …, w_i} 在语料库中出现的次数 C(w_{i-n+1}:i) 除以词序列 {w_{i-n+1}, …, w_{i-1}} 在语料库中出现的次数 C(w_{i-n+1}:i-1) 来近似 P(w_i | w_{i-n+1}:i-1):

P ( w i ∣ w i − n + 1 : i − 1 ) ≈ C ( w i − n + 1 : i ) C ( w i − n + 1 : i − 1 ) P(w_i | w_{i-n+1}:i-1) \approx \frac{C(w_{i-n+1}:i)}{C(w_{i-n+1}:i-1)} P(wiwin+1:i1)C(win+1:i1)C(win+1:i)

因此,n-grams 语言模型的输出是对真实概率 P(w1:N) 的近似:

P n − g r a m s ( w 1 : N ) ≈ P ( w 1 : N ) P_{n-grams}(w_1:N) \approx P(w_1:N) Pngrams(w1:N)P(w1:N)

这个近似是基于对每个条件概率的极大似然估计,它允许我们根据语料库中词序列的出现频率来估计整个文本序列的概率。


http://www.kler.cn/a/378152.html

相关文章:

  • Golang学习历程【第三篇 基本数据类型类型转换】
  • C语言初阶习题【14】数9的个数
  • python中的字典数据和标准json格式区别
  • SPL06 基于stm32F103 HAL库驱动(软件模拟IIC)
  • Bazel CI
  • 学生管理系统,增加教师管理,班级管理,角色功能权限管理
  • kubesphere jenkins自动重定向 http://ks-apiserver:30880/oauth/authorize
  • 开源库 FloatingActionButton
  • new/delete和malloc()/free()的区别及其使用
  • 无人机航拍铁路障碍物识别图像分割系统:创新焦点发布
  • 将分类标签转换为模型可以处理的数值格式
  • Android 蓝牙连接 HID 设备
  • 【RAG】自动化RAG框架-“AutoML风”卷到了RAG?
  • 基于Android13源码分析Launcher启动
  • java多线程编程(二)一一>线程安全问题, 单例模式, 解决程线程安全问题的措施
  • FRAMES数据集:由谷歌和哈佛大学 联合创建一个综合评估数据集,目的测试检索增强生成系统在事实性、检索准确性和推理方面的能力
  • .card ~ img { width: 100%; height: 100%; object-fit: cover; }
  • git入门教程12:git命令与技巧
  • 论 ONLYOFFICE:开源办公套件的深度探索
  • PyTorch实战-手写数字识别-CNN模型
  • 【已解决,含泪总结】Ubuntu18.04下非root用户Anaconda3卸载重装,conda install终于不再报错
  • 可编辑31页PPT | 智慧业务中台规划建设与应用总体方案
  • 大厂面试真题-MVCC有哪些不好
  • 小白从零开始配置pytorch环境
  • Apache 负载均衡详细配置步骤
  • StringTable