【NLP】语言模型的发展历程 (1)

语言模型的发展历程系列博客主要包含以下文章:

  • 【NLP】语言模型的发展历程 (1)
  • 【NLP】大语言模型的发展历程 (2)

本篇博客是该系列的第一篇,主要讲讲 语言模型(LM,Language Model) 的发展历程。

文章目录

  • 一、统计语言模型
    • 1.1 N-gram模型
  • 二、神经网络语言模型
    • 2.1 NNLM模型
  • 三、基于Transformer的大语言模型
    • 3.1 Transformer模型
    • 3.2 大语言模型发展历程
  • 参考资料

语言模型(LM,Language Model)的发展历程可以清晰地划分为三个主要阶段:统计语言模型、神经网络语言模型以及基于Transformer的大语言模型。每个阶段的模型都在前一个阶段的基础上进行了改进和优化,使得语言模型的性能得到了显著提升。

在这里插入图片描述

一、统计语言模型

统计语言模型是早期自然语言处理(NLP)中的重要工具,它们主要通过分析词序列的出现频率来预测下一个词。这种方法基于统计学的原理,利用大规模语料库中的词频信息来建模语言的概率分布。

代表模型:N-gram模型、隐马尔可夫模型(HMM)

  • N-gram模型:这是最常见的统计语言模型之一,它基于马尔可夫假设,认为一个词出现的概率仅与其前面的n-1个词有关。N-gram模型简单易用,但存在数据稀疏和无法捕捉长距离依赖关系的问题。

  • 隐马尔可夫模型(HMM):另一种重要的统计语言模型,通过引入隐藏状态来捕捉序列数据中的潜在结构。

1.1 N-gram模型

(1)模型定义

N-gram模型是一种基于统计语言模型的文本分析算法,它用于预测文本中下一个词出现的概率,基于前面出现的n-1个词的序列。这里的n代表序列中元素的数量,因此称为N-gram。

  • Unigram:N=1,每个单词的出现概率独立计算,不考虑上下文。

  • Bigram:N=2,基于前一个单词预测当前单词的联合概率模型。

  • Trigram:N=3,考虑前两个单词来预测当前单词的联合概率模型,更复杂但可能更准确。

在这里插入图片描述

(2)工作原理

N-gram模型通过统计语料库中n-gram序列的频率,估计给定前n-1个元素后下一个元素出现的概率,从而实现文本预测。

  1. 语料库准备:首先,需要有一个大型的文本语料库,用于训练N-gram模型。

  2. 计算频率:然后,计算语料库中所有可能的n-gram序列的频率。

  3. 概率估计:根据这些频率,可以估计出给定n-1个词后,下一个词出现的概率。

  4. 预测:在预测阶段,给定一个词序列的前n-1个词,模型可以输出下一个词的概率分布,从而可以选择最可能的词作为预测结果。

二、神经网络语言模型

随着深度学习技术的发展,神经网络开始被应用于语言建模任务中。神经网络语言模型通过引入神经网络结构来捕捉词与词之间的复杂关系,从而提高了语言模型的性能。

代表模型:NNLM、RNN、LSTM、GRU

  • 神经网络语言模型(NNLM):由Bengio等人提出,通过嵌入层将单词映射到连续的向量空间中,并通过多个隐藏层来学习语言的内部结构。NNLM能够捕捉词与词之间的语义关系,提高了语言模型的预测能力。

  • 循环神经网络(RNN)及其变体(LSTM、GRU):RNN通过引入循环连接来处理序列数据中的长期依赖关系。LSTM和GRU是RNN的改进版本,通过引入门控机制来解决梯度消失或梯度爆炸问题。

在这里插入图片描述

2.1 NNLM模型

(1)模型定义

NNLM是一种基于神经网络的方法来建模自然语言中的词语序列。与传统的统计语言模型(如n-gram模型)相比,NNLM能够捕捉更复杂的语言结构和语义信息,因为它利用了神经网络强大的非线性建模能力。

  • 原理:利用神经网络来预测文本序列中下一个词或字符出现的概率的模型。

  • 目的:通过建模词汇之间的概率关系,实现自然语言文本的生成或理解。

在这里插入图片描述

(2)工作原理
NNLM通过嵌入层将输入的固定长度前文单词序列转换为连续向量表示,然后利用一个或多个隐藏层学习这些向量的语言结构,最后由输出层输出下一个单词的概率分布,以最大化给定前文条件下的单词预测准确性。

  • 输入:NNLM的输入是一个固定长度的前文单词序列,用于预测下一个单词。每个单词通常由其词嵌入(word embedding)表示,即将单词映射到连续的向量空间中。

  • 结构:NNLM通常包含一个嵌入层(embedding layer),用于将输入的单词转换为连续向量表示;一个或多个隐藏层(hidden layers),用于学习输入序列的语言结构;以及一个输出层(output layer),输出下一个单词的概率分布。

  • 训练目标:最大化给定训练数据中序列的联合概率,即最大化给定前文单词的条件下,下一个单词出现的概率。这通常通过最小化负对数似然(negative log-likelihood)来实现。

三、基于Transformer的大语言模型

基于Transformer的大语言模型在预训练阶段利用大规模语料库进行训练,然后在特定任务上进行微调,取得了惊人的效果。

代表模型:BERT、GPT系列

  • BERT:由Google提出的一种基于Transformer的双向编码器表示模型。BERT在预训练阶段采用了遮蔽语言模型(Masked Language Model)和下一句预测(Next Sentence Prediction)两个任务来训练模型,提高了模型的语言表示能力。

  • GPT系列:由OpenAI开发的基于Transformer的生成式预训练模型。GPT系列模型在预训练阶段采用了自回归语言建模任务来训练模型,能够生成连贯、自然的文本。随着模型规模的增大(如GPT-3、GPT-4等),GPT系列模型在多个NLP任务上取得了优异的表现。

在这里插入图片描述

3.1 Transformer模型

Transformer模型由Vaswani等人在2017年提出,是一种基于自注意力机制的深度学习模型。它彻底摒弃了传统的循环神经网络结构,通过自注意力机制和位置编码来处理序列数据中的长期依赖关系和位置信息。
在这里插入图片描述

3.2 大语言模型发展历程

大语言模型发展历程参见博客:【NLP】大语言模型的发展历程 (2)

参考资料

  • 一文彻底搞懂大模型 - 语言模型的发展历程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/892568.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JNI使用类签名及字段签名获取字段值

1.获取逻辑: 2.获取逻辑实现代码: extern "C" JNIEXPORT void JNICALL Java_com_example_jnibasetypedemo_MainActivity_getAnimalsNameFromJNI(JNIEnv *env, jobject thiz,jobjectArray animals) {jobject animalObj;int len env->GetArrayLength(animals);//获…

从 PostgreSQL 中挽救损坏的表

~/tmp-dir.dab4fd85-8b47-4d9a-b15c-18312ef61075 pg_dump -U postgres -h locathost www_p1 > wow_p1.sqlpg_dump:错误:转储表 “page_views” 的内容失败:PQgetResult() 失败。pg_dump:详细信息:来自服务器的错误…

Vue 封装公告滚动

文章目录 需求分析1. 创建公告组件Notice.vue2. 注册全局组件3. 使用 需求 系统中需要有一个公告展示,且这个公告位于页面上方,每个页面都要看到 分析 1. 创建公告组件Notice.vue 第一种 在你的项目的合适组件目录下(比如components目录&a…

asp.net core webapi 并发请求时 怎么保证实时获取的用户信息是此次请求的?

对于并发请求,每个请求会被分配到一个独立的线程或线程池工作线程上。通过 HttpContext 或 AsyncLocal,每个线程都能独立地获取到它自己的上下文数据。由于这些数据是与当前请求相关的,因此在并发请求时不会互相干扰。 在并发请求时&#xf…

Win10微调大语言模型ChatGLM2-6B

在《Win10本地部署大语言模型ChatGLM2-6B-CSDN博客》基础上进行,官方文档在这里,参考了这篇文章 首先确保ChatGLM2-6B下的有ptuning AdvertiseGen下载地址1,地址2,文件中数据留几行 模型文件下载地址 (注意&#xff1…

HTTP-响应协议

HTTP的响应过程? 浏览器请求数据--》web服务器过程:请求过程 web服务器将响应数据-》到浏览器:响应过程 响应数据有哪些内容? 1.和请求数据类似。 2. 响应体中存储着web服务器返回给浏览器的响应数据。并且注意响应头和响应体之间…

深入解析 Python 2 与 Python 3 的差异与演进

Python 2 和 Python 3 是 Python 编程语言的两个主要版本。Python 3 于 2008 年发布,旨在解决 Python 2 中的一些设计缺陷,并引入了许多新特性。虽然 Python 2 在很长一段时间内仍然被广泛使用,但自 2020 年 1 月 1 日起,Python 2…

【“软件工程”基础概念学习】

基础和相关概念 英文:Software Engineering 软:物体内部的组织疏松,受外力作用后容易改变形状软件: 计算机系统的组成部分,是指挥计算机进行计算、判断、处理信息的程序系统。通常分为系统软件和应用软件。借指某项活…

爬虫基础之爬取歌曲宝歌曲批量下载

声明:本案列仅供学习交流使用 任何用于非法用途均与本作者无关 需求分析: 网站:邓紫棋-mp3在线免费下载-歌曲宝-找歌就用歌曲宝-MP3音乐高品质在线免费下载 (gequbao.com) 爬取 歌曲名 歌曲 实现歌手名称下载所有歌曲 本案列所使用的模块 requests (发送…

C++ 鼠标轨迹算法 - 防止游戏检测

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言,原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟…

2025年中科院分区大类划分公布!新增8155本

2025年中科院分区表变更情况 扩大收录范围 2025年的期刊分区表在原有的自然科学(SCIE)、社会科学(SSCI)和人文科学(AHCI)的基础上,增加了ESCI期刊的收录,并根据这些期刊的数据进行…

【前端动效】HTML + CSS 实现打字机效果

目录 1. 效果展示 2. 思路分析 2.1 难点 2.2 实现思路 3. 代码实现 3.1 html部分 3.2 css部分 3.3 完整代码 4. 总结 1. 效果展示 如图所示,这次带来的是一个有趣的“擦除”效果,也可以叫做打字机效果,其中一段文本从左到右逐渐从…

负载均衡服务器要怎么配置?

目录 一、概述: 二、硬件配置: 三、操作系统配置: 四、负载均衡软件: 五、网络配置: 六、软件安装步骤: 6.1 安装 Nginx 6.2 安装 LVS 6.3 安装 HAProxy 6.4 安装 Keepalived 一、概述&#xff1…

提升租赁效率的租赁小程序全解析

内容概要 在如今快节奏的生活中,租赁小程序俨然成为了提升租赁效率的一把利器。无论是个人还是企业,都会因其便捷的功能而受益。简单来说,租赁小程序能让繁琐的租赁流程变得轻松、高效。在这里,我们将带您畅游租赁小程序的海洋&a…

Docker--Docker Compose(容器编排)

什么是 Docker Compose Docker Compose是Docker官方的开源项目,是一个用于定义和运行多容器Docker应用程序的工具。 服务(Service):在Docker Compose中,一个服务实际上可以包括若干运行相同镜像的容器实例&#xff0…

搭建docker私有化仓库Harbor

Docker私有仓库概述 Docker私有仓库介绍 Docker私有仓库是个人、组织或企业内部用于存储和管理Docker镜像的存储库。Docker默认会有一个公共的仓库Docker Hub,而与Docker Hub不同,私有仓库是受限访问的,只有授权用户才能够上传、下载和管理其中的镜像。这种私有仓库可以部…

本地视频进度加入笔记+根据进度快速锁定视频位置

本地视频进度记录快速回溯 引言 在学习的过程中, 如果我们想快速记录当前看视频的位置, 后续回溯查找就会非常方便了。 实现效果 进度记录 通过按下快捷键ctrlaltu, 快速记录当前视频的进度信息,然后复制到typora软件内 快速回溯 在typora软件内, 选中视频索引…

网络传输层TCP协议

传输层TCP协议 1. TCP协议介绍 TCP(Transmission Control Protocol,传输控制协议)是一个要对数据的传输进行详细控制的传输层协议。 TCP 与 UDP 的不同,在于TCP是有连接、可靠、面向字节流的。具体来说,TCP设置了一大…

《自动驾驶与机器人中的SLAM技术》ch7:基于 ESKF 的松耦合 LIO 系统

目录 基于 ESKF 的松耦合 LIO 系统 1 坐标系说明 2 松耦合 LIO 系统的运动和观测方程 3 松耦合 LIO 系统的数据准备 3.1 CloudConvert 类 3.2 MessageSync 类 4 松耦合 LIO 系统的主要流程 4.1 IMU 静止初始化 4.2 ESKF 之 运动过程——使用 IMU 预测 4.3 使用 IMU 预测位姿进…

LeetCode 每日一题 2025/1/6-2025/1/12

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 目录 1/6 2274. 不含特殊楼层的最大连续楼层数1/7 3019. 按键变更的次数1/8 2264. 字符串中最大的 3 位相同数字1/9 3297. 统计重新排列后包含另一个字符串的子字符串数目 I1/10…