notebook notebook
首页
  • 计算机网络
  • 计算机系统
  • 数据结构与算法
  • 计算机专业课
  • 设计模式
  • 前端 (opens new window)
  • Java 开发
  • Python 开发
  • Golang 开发
  • Git
  • 软件设计与架构
  • 大数据与分布式系统
  • 常见开发工具

    • Nginx
  • 爬虫
  • Python 数据分析
  • 数据仓库
  • 中间件

    • MySQL
    • Redis
    • Elasticsearch
    • Kafka
  • 深度学习
  • 机器学习
  • 知识图谱
  • 图神经网络
  • 应用安全
  • 渗透测试
  • Linux
  • 云原生
面试
  • 收藏
  • paper 好句
GitHub (opens new window)

学习笔记

啦啦啦,向太阳~
首页
  • 计算机网络
  • 计算机系统
  • 数据结构与算法
  • 计算机专业课
  • 设计模式
  • 前端 (opens new window)
  • Java 开发
  • Python 开发
  • Golang 开发
  • Git
  • 软件设计与架构
  • 大数据与分布式系统
  • 常见开发工具

    • Nginx
  • 爬虫
  • Python 数据分析
  • 数据仓库
  • 中间件

    • MySQL
    • Redis
    • Elasticsearch
    • Kafka
  • 深度学习
  • 机器学习
  • 知识图谱
  • 图神经网络
  • 应用安全
  • 渗透测试
  • Linux
  • 云原生
面试
  • 收藏
  • paper 好句
GitHub (opens new window)
  • 深度学习

    • Posts

    • PyTorch 入门

    • 鱼书进阶-自然语言处理

    • 深度学习-李宏毅

    • 李宏毅-2017版

    • 李宏毅-2019版

    • 预训练语言模型-邵浩2021版

      • 预训练语言模型简介
      • 预训练模型的基础知识
        • 1. Statistical Language Model
          • 1.1 What is Statistical Language Model
          • 1.2 n-gram Language Model
          • 1.3 Perplexity(困惑度)
    • 王树森

  • 机器学习

  • 知识图谱

  • AI
  • 深度学习
  • 预训练语言模型-邵浩2021版
yubin
2022-08-26
目录

预训练模型的基础知识

  • 1. Statistical Language Model
    • 1.1 What is Statistical Language Model
    • 1.2 n-gram Language Model
    • 1.3 Perplexity(困惑度)

简单来讲,语言模型就是计算一个句子的概率。

语言模型

给定一句由 n 个词组成的句子 ,计算这个句子的概率 ,或者根据前文计算下一个词的概率 的模型,称为语言模型。

语言模型在 NLP 中用途很广泛,比如可以从几个识别出来的不确定的候选句子中选一个概率最大的句子。

# 1. Statistical Language Model

# 1.1 What is Statistical Language Model

统计语言模型(Statistical Language Model)的基本思想就是计算条件概率,对一个句子 计算 P 的公式如下:

以“判断这个词的词性”这句话为例,当给定前面的词序列是“判断,这个,词,的”时,想要知道下一个词是什么,则套用上面公式的右半部分得到:

判断这个词的判断这个词的判断这个词的

  • 其中 表示词序列的下一个词,V 是词典。

# 1.2 n-gram Language Model

然而当句子很长时,上式的计算是很困难的,因为需要列举 和其他词共现的所有可能情况并统计出现次数,但实际上,有一些词作为 基本上不可能和前文同时出现,最后有很多计算结果都是 0。那么有没有简单的方法来计算这个数值呢?

这里需要引入 Markov Chain,也就是只假设 只和其之前的一个 word 有相关性:

判断这个词的的

如果一个词的相关性不明显,则可以将条件放宽至两个词:

判断这个词的词的

也就是用 近似替代了之前的公式 。在工程实践中通常将 k 设置为 2,3 或 n,分别将它们称为二元语言模型(Bigram Language Model),三元语言模型(Trigram Language Model),以及 n 元语言模型(n-gram Language Model)。

在二元语言模型中,,通过极大似然估计,可以写成:

计算方式为先计算“” 同时按序出现的次数,再除以 出现的次数、

# 1.3 Perplexity(困惑度)

困惑度(Perplexity,PPL)作为一种量化指标,常用于判断一个句子的好坏:

由此可见,句子的概率值越大,其困惑度 越小,语言模型也就越好。

在实际计算过程中,由于数值稀疏,为了避免出现概率值为 0 的情况,通常会用到的一种策略是平滑(Smoothing)。最简单的平滑方法就是将分子和分母都加入一个非 0 正数:

  • 其中 是词典的大小。

平滑的方法有很多种,比如 Good-Turing Estimate、Katz 平滑法、Jelinek-Mercer 平滑法等。

编辑 (opens new window)
上次更新: 2022/08/26, 15:20:06
预训练语言模型简介
Few-shot Learning

← 预训练语言模型简介 Few-shot Learning→

最近更新
01
Deep Reinforcement Learning
10-03
02
误删数据后怎么办
04-06
03
MySQL 一主多从
03-22
更多文章>
Theme by Vdoing | Copyright © 2021-2024 yubincloud | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×