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

AI 语言模型发展史:统计方法、RNN 与 Transformer 的技术演进

引言

自然语言处理(NLP)是 AI 领域的重要分支,而语言模型(Language Model, LM)是 NLP 的核心技术。语言模型经历了从 统计方法RNN(循环神经网络),再到 Transformer 的演进,每一步都在提升模型的表达能力和计算效率。

本文从技术角度详细分析三种方法的核心原理、优缺点,并探讨 Transformer 如何在 AI 大模型(如 GPT-4)中发挥关键作用。


1. 统计方法(N-gram)

1.1 方法原理

统计方法基于 马尔可夫假设(Markov Assumption),认为当前词的出现仅依赖于前面 n-1 个词,而不是整个句子历史。常见的 N-gram 语言模型如下:

  • Unigram(1-gram): 仅考虑每个词的单独概率 P(w)。
  • Bigram(2-gram): 仅考虑当前词的前一个词 P(w_t | w_{t-1})。
  • Trigram(3-gram): 仅考虑当前词的前两个词 P(w_t | w_{t-2}, w_{t-1})。

语言模型的计算方式如下:
[
P(W) = P(w_1, w_2, …, w_T) = \prod_{t=1}^{T} P(w_t | w_{t-n+1}, …, w_{t-1})
]

1.2 优缺点

优点

  • 计算简单,易于实现。
  • 适用于小型数据集,能快速计算概率。

缺点

  • 长距离依赖问题:N-gram 只能考虑有限的上下文,忽略远距离词的影响。
  • 数据稀疏性:高阶 N-gram 需要大量数据,罕见短语可能无统计数据。
  • 无法泛化:仅能处理训练数据中见过的词汇,对新词无能为力。

2. RNN(循环神经网络)

2.1 方法原理

RNN 通过隐藏状态 h_t 记忆过去的信息,解决了 N-gram 只能处理短上下文的问题。RNN 的核心计算公式如下:
[
h_t = f(W_h h_{t-1} + W_x x_t + b)
]
[
y_t = W_y h_t + b_y
]
其中:

  • ( h_t ) 是当前的隐藏状态,包含了过去的信息。
  • ( W_h, W_x, W_y ) 是权重矩阵,( b ) 是偏置项。
  • ( x_t ) 是输入,( y_t ) 是输出。

2.2 变体(LSTM & GRU)

(1) LSTM(长短时记忆网络)
LSTM 通过 遗忘门(Forget Gate)、输入门(Input Gate)、输出门(Output Gate) 控制信息流动,使其能够记住长期依赖信息:
[
f_t = \sigma(W_f [h_{t-1}, x_t] + b_f)
]
[
i_t = \sigma(W_i [h_{t-1}, x_t] + b_i)
]
[
o_t = \sigma(W_o [h_{t-1}, x_t] + b_o)
]
[
c_t = f_t \odot c_{t-1} + i_t \odot \tilde{c_t}
]
[
h_t = o_t \odot \tanh(c_t)
]
其中:

  • ( f_t, i_t, o_t ) 分别为遗忘门、输入门和输出门。
  • ( c_t ) 是细胞状态,存储长期信息。

(2) GRU(门控循环单元)
GRU 结构比 LSTM 更简单,合并了输入门和遗忘门:
[
z_t = \sigma(W_z [h_{t-1}, x_t])
]
[
r_t = \sigma(W_r [h_{t-1}, x_t])
]
[
\tilde{h_t} = \tanh(W_h [r_t \odot h_{t-1}, x_t])
]
[
h_t = (1 - z_t) \odot h_{t-1} + z_t \odot \tilde{h_t}
]

2.3 优缺点

优点

  • 能处理任意长度的序列,比 N-gram 适应更长的上下文。
  • LSTM/GRU 解决了普通 RNN 的梯度消失问题。

缺点

  • 训练速度慢,难以并行化(序列计算依赖前一步)。
  • 对长序列仍存在信息遗忘问题。

3. Transformer(自注意力机制)

3.1 方法原理

Transformer 彻底抛弃了 RNN,使用 自注意力机制(Self-Attention) 计算词与词之间的关系,并行处理整个句子。

(1) 自注意力机制

给定输入序列 ( X = [x_1, x_2, …, x_n] ),我们计算每个词的 查询(Q)键(K)值(V)
[
Q = XW_Q, \quad K = XW_K, \quad V = XW_V
]
计算注意力权重:
[
\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right) V
]

(2) 多头注意力

多个注意力头(Multi-Head Attention)并行计算:
[
\text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, …, \text{head}_h) W_O
]

(3) 位置编码

由于 Transformer 没有 RNN 的时序结构,需要 位置编码(Positional Encoding) 引入位置信息:
[
PE_{(pos, 2i)} = \sin(pos / 10000^{2i/d})
]
[
PE_{(pos, 2i+1)} = \cos(pos / 10000^{2i/d})
]

3.2 优缺点

优点

  • 并行计算,提高训练速度。
  • 处理长序列时效果优于 RNN,没有梯度消失问题。

缺点

  • 计算量大,对硬件要求高。
  • 长文本处理成本较高(注意力计算复杂度为 ( O(n^2) ))。

总结

方法核心原理优点缺点
N-gram统计词频概率计算简单不能处理长距离依赖
RNN记住前面信息逐步预测适合短文本训练慢,长句信息遗忘
Transformer关注整个句子,注意力机制并行计算,高效处理长文本计算量大,训练成本高

目前,Transformer 是大模型(如 GPT-4、BERT)的核心技术,未来 NLP 发展仍围绕自注意力机制展开。


📌 如果你想深入学习,可以研究 Transformer 细节,如多头注意力、Feedforward 层等。

相关文章:

AI 语言模型发展史:统计方法、RNN 与 Transformer 的技术演进

引言 自然语言处理(NLP)是 AI 领域的重要分支,而语言模型(Language Model, LM)是 NLP 的核心技术。语言模型经历了从 统计方法 到 RNN(循环神经网络),再到 Transformer 的演进&…...

Pycharm中查找与替换

1、Edit -> Find -> Find 在当前文件中查找 2、Edit -> Find -> Find in Files 在所有文件中查找 3、Edit -> Find -> Replace 在当前文件中执行替换 4、Edit -> Find -> Replace in Files 在所有文件中执行替换...

有向图的强连通分量: Kosaraju算法和Tarjan算法详解

在上一篇文章中, 我们了解了图的最小生成树算法. 本节我们来学习 图的强连通分量(Strongly Connected Component, SCC) 算法. 什么是强连通分量? 在 有向图 中, 若一组节点内的任意两个节点都能通过路径互相到达(例如 A → B A \rightarrow B A→B 且 B → A B \rightarro…...

mac相关命令

显示和隐藏usr等隐藏文件文件 terminal输入: defaults write com.apple.Finder AppleShowAllFiles YESdefaults write com.apple.Finder AppleShowAllFiles NO让.bashrc每次启动shell自动生效 编辑vim ~/.bash_profile 文件, 加上 if [ -f ~/.bashrc ]; then. ~/.bashrc fi注…...

代码随想录算法训练营第六天| 242.有效的字母异位词 、349. 两个数组的交集、202. 快乐数 、1. 两数之和

242.有效的字母异位词 题目链接:242.有效的字母异位词 文档讲解:代码随想录有效的字母异位词 视频讲解:LeetCode:有效的字母异位词 状态:学会了 思路: 数组其实是简单哈希表。 哈希表用来快速判断元素是否在…...

dify实现分析-rag-关键词索引的实现

概述 在dify中有两种构建索引的方式,一种是经济型,另一种是高质量索引(通过向量数据库来实现)。其中经济型就是关键词索引,通过构建关键词索引来定位查询的文本块,而关键词索引的构建是通过Jieba这个库来完…...

【小白学HTML5】一文讲清常用单位(px、em、rem、%、vw、vh)

html5中,常用的单位有px、em、rem、%、vw、vh(不常用)、cm、m等,这里主要讲解px、em、rem、%、vw。 学习了解:主流浏览器默认的字号:font-size:16px,无论用什么单位,浏览器最终计算…...

Fastgpt学习(5)- FastGPT 私有化部署问题解决

1.☺ 问题描述: Windows系统,本地私有化部署,postgresql数据库镜像日志持续报错" data directory “/var/lib/postgresql/data” has invalid permissions ",“ DETAIL: Permissions should be urwx (0700) or urwx,gr…...

ubuntu下安装TFTP服务器

在 Ubuntu 系统下安装和配置 TFTP(Trivial File Transfer Protocol)服务器可以按照以下步骤进行: 1. 安装 TFTP 服务器软件包 TFTP 服务器通常使用 tftpd-hpa 软件包,你可以使用以下命令进行安装: sudo apt update …...

深入解析 iText 7:从 PDF 文档中提取文本和图像

在现代开发中,PDF 文件的操作是不可避免的一部分。无论是生成报告、解析文档,还是从文件中提取信息,我们常常需要处理 PDF 文件。iText 是一个非常强大的库,广泛应用于 PDF 文件的创建、修改和解析。自 iText 7 发布以来&#xff…...

Rust编程语言入门教程 (六)变量与可变性

Rust 系列 🎀Rust编程语言入门教程(一)安装Rust🚪 🎀Rust编程语言入门教程(二)hello_world🚪 🎀Rust编程语言入门教程(三) Hello Cargo&#x1f…...

事务--实操演示

目录 一、准备工作 二、在MySQL中操作事务(重点) 第一种方式:使用命令的方式 第二种方式:设置MySQL事务不默认提交的方式 结 三、在JDBC中操作事务(掌握) 第一种方式:使用命令的方式 第…...

PHP是如何并行异步处理HTTP请求的?

文章精选推荐 1 JetBrains Ai assistant 编程工具让你的工作效率翻倍 2 Extra Icons:JetBrains IDE的图标增强神器 3 IDEA插件推荐-SequenceDiagram,自动生成时序图 4 BashSupport Pro 这个ides插件主要是用来干嘛的 ? 5 IDEA必装的插件&…...

【Spring详解一】Spring整体架构和环境搭建

一、Spring整体架构和环境搭建 1.1 Spring的整体架构 Spring框架是一个分层架构,包含一系列功能要素,被分为大约20个模块 Spring核心容器:包含Core、Bean、Context、Expression Language模块 Core :其他组件的基本核心&#xff…...

在 Vue 3 中使用 Lottie 动画:实现一个加载动画

在现代前端开发中,动画是提升用户体验的重要元素之一。Lottie 是一个流行的动画库,它允许我们使用 JSON 文件来渲染高质量的动画。本文将介绍如何在 Vue 3 项目中集成 Lottie 动画,并实现一个加载动画效果。 如果对你有帮助请帮忙点个&#x…...

深度解析:使用 Headless 模式 ChromeDriver 进行无界面浏览器操作

一、问题背景(传统爬虫的痛点) 数据采集是现代网络爬虫技术的核心任务之一。然而,传统爬虫面临多重挑战,主要包括: 反爬机制:许多网站通过检测请求头、IP地址、Cookie等信息识别爬虫,进而限制…...

MySQL 主从复制原理及其工作过程

一、MySQL主从复制原理 MySQL 主从复制是一种将数据从一个 MySQL 数据库服务器(主服务器,Master)复制到一个或多个 MySQL 数据库服务器(从服务器,Slave)的技术。以下简述其原理,主要包含三个核…...

计算机网络抄手 运输层

一、运输层协议概述 1. 进程之间的通信 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。当网络边缘部分的两台主机使用网络核心部分的功能进行端到端的通信时&…...

字符串函数和结构题内存对齐

图下为函数使用&#xff1a; #include <ctype.h>int main() {int ret isdigit(Q);printf("%d\n", ret);return 0; }int main() {printf("%c\n", toupper(a));printf("%c\n", tolower(A));return 0; }...

【嵌入式Linux应用开发基础】特殊进程

目录 一、守护进程&#xff08;Daemon Process&#xff09; 1.1. 概念 1.2. 特点 1.3. 守护进程的命名 1.4. 创建守护进程的步骤 1.5. 守护进程的实例 1.6. 守护进程的管理 1.7. 影响与处理 二、僵尸进程&#xff08;Zombie Process&#xff09; 2.1. 僵尸进程的定义…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

Python网页自动化Selenium中文文档

1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API&#xff0c;让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API&#xff0c;你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...

Spring AOP代理对象生成原理

代理对象生成的关键类是【AnnotationAwareAspectJAutoProxyCreator】&#xff0c;这个类继承了【BeanPostProcessor】是一个后置处理器 在bean对象生命周期中初始化时执行【org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization】方法时…...

用递归算法解锁「子集」问题 —— LeetCode 78题解析

文章目录 一、题目介绍二、递归思路详解&#xff1a;从决策树开始理解三、解法一&#xff1a;二叉决策树 DFS四、解法二&#xff1a;组合式回溯写法&#xff08;推荐&#xff09;五、解法对比 递归算法是编程中一种非常强大且常见的思想&#xff0c;它能够优雅地解决很多复杂的…...

深入解析光敏传感技术:嵌入式仿真平台如何重塑电子工程教学

一、光敏传感技术的物理本质与系统级实现挑战 光敏电阻作为经典的光电传感器件&#xff0c;其工作原理根植于半导体材料的光电导效应。当入射光子能量超过材料带隙宽度时&#xff0c;价带电子受激发跃迁至导带&#xff0c;形成电子-空穴对&#xff0c;导致材料电导率显著提升。…...