目录
LLM 发展简史:带你看懂 NLP 进化史,从 NLP 到 LLM 的非凡旅程(一)!(超细分析CNN、RNN、Transformer、LLM……)
概要:
自然语言处理基础 NLP (Natural Language Processing)发展过程
可以看到,从2013年之后,随着深度学习技术的发展,整个自然语言处理的发展也受到了很大地影响。从13年的,Word2Vec,到14年的RNN,到18年的ELMo,以及同年出现的BERT,之后预训练模型就被大量使用。
自然语言处理(NLP)的发展过程
自然语言处理(NLP)是人工智能的一个重要领域,旨在实现计算机对人类语言的理解、生成和处理。像 ChatGPT、Siri、Google 翻译等都是 NLP 的应用。
NLP的发展历程可以分为以下几个主要阶段:
一、早期阶段(1950年代-1980年代)
1. 初期探索
-
图灵测试(1950年):艾伦·图灵提出了图灵测试,成为人工智能的一个重要概念,虽然当时并没有明确的NLP定义,但为其发展奠定了基础。
图灵测试的方法是:被测试人,和一个待测试的机器。测试时,测试人与被测试人是分开的,测试人只有以纯文本的方式向被测试人问一些问题,这些问题随便是什么问题都可以。问过一些问题后,如果测试人能够正确地分出谁是人谁是机器,那机器就没有通过图灵测试,如果测试人没有分出谁是机器谁是人,那这个机器就是有智能的。
-
基于规则的方法
:早期的NLP系统依赖于手工编写的规则和语法,常见的技术包括:
- 句法分析:如1957年诺姆·乔姆斯基提出的生成文法。
- Eliza程序(1966年):一个模拟心理治疗师的对话系统,基于模式匹配和模板响应。
2. 初步应用
- 机器翻译:1950年代末期,美国和苏联在机器翻译上进行了大量研究,虽然早期效果有限,但开启了NLP的应用探索。
- 信息检索:如60年代的SMART系统,开始探索自动化的文本检索和分类。
(~ ̄▽ ̄)~ 小白课堂:
1️⃣ 规则驱动 NLP(1950s - 1990s)
- 人工设定一堆规则,让计算机按照规则处理文本。
- 例子:
- “I am happy.” → 规则告诉计算机 “am” 是 “be” 动词的变形,“happy” 是形容词。
- 但如果输入 “I am over the moon.”(表示“我非常开心”),计算机就无法理解。
📌 问题:
- 需要大量人工编写规则,处理复杂语言非常困难。
二、统计方法的兴起(1990年代)
1. 统计语言模型
-
基于统计的方法:20世纪90年代,随着计算能力和数据存储的提升,统计方法开始盛行,如:
- n-gram模型:通过计算词语序列的出现概率进行语言建模。
-
隐马尔可夫模型(HMM):用于词性标注、命名实体识别等任务。
2. 数据驱动的方法
- 大规模语料库:如Penn Treebank语料库,为统计方法的训练提供了大量标注数据。
- 机器学习算法:如支持向量机(SVM)、最大熵模型等被应用于文本分类、情感分析等任务。
φ(゜▽゜*)♪ 小白课堂:
2️⃣ 统计 NLP(1990s - 2010s)
计算机使用概率统计分析大量文本,找出最常见的单词组合。
n-gram 模型
:预测下一个词出现的概率。
- 例子:
- “I love” → 计算机从大量数据中发现,“you” 出现的概率最高,所以预测下一个词是 “you”。
- 但如果句子很长,这种方法就不太可靠。
📌 问题:
- 只会数单词,无法理解语境,像“他喜欢苹果” vs “苹果公司发布新产品”就难以区分。
三、深度学习时代(2010年代)
1. 神经网络的引入
- 卷积神经网络(CNN):虽然CNN最初用于图像处理,但也被用于文本分类等NLP任务。
- 循环神经网络(RNN):特别是长短期记忆网络(LSTM)和门控循环单元(GRU),有效解决了长序列依赖问题,在机器翻译、文本生成等领域表现突出。
2. 词向量和嵌入
- 词向量(Word Embeddings):如word2vec、GloVe,通过将词语映射到低维向量空间,捕捉词语之间的语义关系。
- 序列到序列(Seq2Seq)模型:广泛应用于机器翻译,由编码器和解码器组成,显著提升了翻译质量。
①、卷积神经网络(CNN)
1. 介绍
卷积神经网络(Convolutional Neural Network, CNN)是一种深度学习模型,最初用于图像处理和计算机视觉任务。CNN通过卷积操作,可以有效地提取图像中的局部特征。
2. 结构
- 卷积层(Convolutional Layer):通过卷积核(filter)在输入数据上滑动,提取局部特征。
- 池化层(Pooling Layer):通过降采样操作(如最大池化、平均池化)减少数据维度,降低计算复杂度。
- 全连接层(Fully Connected Layer):将前面的特征映射到最终的输出分类或回归结果。
3. 应用
- 图像分类:识别图像中的对象。
- 物体检测:检测图像中目标的位置和类别。
- 图像分割:将图像分割成不同的区域。
CNN擅长处理网格结构数据案例,如图像:
( ̄︶ ̄)↗ 为什么需要多层卷积+池化?
单层卷积和池化通常只能提取简单的特征,比如边缘和颜色变化,而深度网络通过 层层提取更高级的特征,最终能够识别复杂模式,如 物体的形状、结构,甚至语义信息。
层数 卷积层特征提取 池化层作用 第1层 低级特征(边缘、颜色、线条) 降低尺寸、去除噪声 第2层 组合低级特征,形成局部形状 进一步降低尺寸 第3层及以上 组合更复杂特征(如轮廓、部件) 进一步提取全局信息 最终层 形成完整的目标特征(如人脸、物体) -
②、循环神经网络(RNN)
1. 介绍
循环神经网络(Recurrent Neural Network, RNN)是一种用于处理序列数据的神经网络,广泛应用于自然语言处理(NLP)和时间序列分析。RNN通过循环结构,能够记住前面输入的信息,适用于处理序列化的数据。
2.1. 结构
左边表示RNN的R,即循环调用自身,而右边是RNN的展开形式(unrolled form),可以看成一个复制了很多个同样copy的链状结构的时序网络模型。
RNN 基本的模型如上图所示,每个神经元接受的输入包括:前一个神经元的隐藏层状态 h (用于记忆) 和当前的输入 x (当前信息)。神经元得到输入之后,会计算出新的隐藏状态 h 和输出 y,然后再传递到下一个神经元。因为隐藏状态 h 的存在,使得 RNN 具有一定的记忆功能。
- 隐藏层(Hidden Layer):RNN 的核心,通过将上一个时间步的隐藏状态与当前输入结合,生成当前的隐藏状态。
- 输出层(Output Layer):将隐藏状态映射到输出结果。
标准的RNN内部结构如图:
也就是将上一个时刻的输出加上本时刻的输入,过一个activation(比如tanh),就成了下一个时刻的输出。
RNN 中输入 X t X_t Xt 只包含 t 时刻信息,不包含顺序信息;而 h t h_t ht 是根据 X t X_t Xt 和 h t − 1 h_{t-1} ht−1 计算得到的,包含了历史信息与当前输入信息。
- 隐藏状态计算
h t = tanh ( W h x t + U h h t − 1 + b h ) h_t = \tanh(W_h x_t + U_h h_{t-1} + b_h) ht=tanh(Whxt+Uhht−1+bh)
- h t h_t ht:当前时间步的隐藏状态
- x t x_t xt:当前时间步的输入
- h t − 1 h_{t-1} ht−1:前一个时间步的隐藏状态
- W h 、 U h 、 b h W_h、U_h、b_h Wh、Uh、bh:可训练参数
- tanh \tanh tanh:双曲正切激活函数
- 输出计算
y t = W y h t + b y y_t = W_y h_t + b_y yt=Wyht+by
- y t y_t yt:当前时间步的输出
- W y 、 b y W_y、b_y Wy、by:可训练参数
- 损失函数
L = ∑ t L ( y t , y target , t ) \mathcal{L} = \sum_t \mathcal{L}(y_t, y_{\text{target},t}) L=t∑L(yt,ytarget,t)
- L ( y t , y target , t ) \mathcal{L}(y_t, y_{\text{target},t}) L(yt,ytarget,t) 通常是 交叉熵 或 均方误差。
2.2 RNN 可调整结构 o(*≧▽≦)ツ┏━┓
针对不同任务,通常要对 RNN 模型结构进行少量的调整,根据输入和输出的数量,分为三种比较常见的结构:N vs N、1 vs N、N vs 1。
2.2.1. RNN (N vs N 结构)
上图是RNN 模型的一种 N vs N 结构,包含 N 个输入 X 1 X_1 X1, X 2 X_2 X2, …, X N X_N XN,和 N 个输出 y 1 y_1 y1, y 2 y_2 y2, …, y N y_N yN。N vs N 的结构中,输入和输出序列的长度是相等的,通常适合用于以下任务:
- 词性标注
- 训练语言模型,使用之前的词预测下一个词等
2.2.2. RNN (1 vs N 结构)
在 1 vs N 结构中,我们只有一个输入 x,和 N 个输出 y 1 y_1 y1, y 2 y_2 y2, …, y N y_N yN。可以有两种方式使用 1 vs N:
① 第一种只将输入 x 传入第一个 RNN 神经元
② 第二种是将输入 x 传入所有的 RNN 神经元
1 vs N 结构适合用于以下任务:
- 图像生成文字,输入 x 就是一张图片,输出就是一段图片的描述文字。
- 根据音乐类别,生成对应的音乐。
- 根据小说类别,生成相应的小说。
2.2.3. RNN (N vs 1 结构)
在 N vs 1 结构中,我们有 N 个输入 X 1 X_1 X1, X 2 X_2 X2, …, X N X_N XN,和一个输出 y。N vs 1 结构适合用于以下任务:
- 序列分类任务,一段语音、一段文字的类别,句子的情感分析。
3. RNN的改进模型
RNN的主要改进模型包括LSTM(长短期记忆网络)和GRU(门控循环单元),它们通过门控机制解决了RNN对长时依赖处理能力差的问题。
1.1 长短期记忆网络(LSTM)
LSTM(Long Short-Term Memory)通过引入多种“门”(即控制信息流的单元)来增强对长时依赖的记忆和控制(长期依赖)。LSTM包含以下几个关键门:
- 遗忘门:控制要遗忘的先前信息。
- 输入门:决定当前时间步的新信息加入多少到记忆单元。
- 输出门:决定记忆单元信息对隐藏状态和输出的贡献。
LSTM的设计使得它能够选择性地保留或删除信息,使其适合处理长序列或长依赖问题,从而有效地避免了梯度消失。
(。・∀・)ノ 精讲堂:
**遗忘门 f t f_t ft :**上图中
红框1
的是 LSTM 遗忘门部分,用来判断 cell 状态 C t − 1 C_{t-1} Ct−1 中哪些信息应该删除。其中 σ 表示激活函数 sigmoid。
- ①. 输入的 h t − 1 h_{t-1} ht−1 和 X t X_t Xt 经过 sigmoid 激活函数之后得到 f t f_t ft, f t f_t ft 中每一个值的范围都是 [0, 1]。$f_t $中的值越接近 1,表示 cell 状态 C t − 1 C_{t-1} Ct−1 中对应位置的值更应该记住; f t f_t ft 中的值越接近 0,表示 cell 状态 C t − 1 C_{t-1} Ct−1 中对应位置的值更应该忘记。
- ②. 将 f t f_t ft 与 C t − 1 C_{t-1} Ct−1 按位相乘 (ElementWise 相乘),即可以得到遗忘无用信息之后的 C t − 1 ′ C'_{t-1} Ct−1′
f t = σ ( W f [ h t − 1 , x t ] + b f ) (遗忘门) C t − 1 ′ = C t − 1 ⋅ f t \begin{aligned} f_t &= \sigma(W_f [h_{t-1}, x_t] + b_f) \quad \text{(遗忘门)} \\ % &=让等号对齐 C'_{t-1} &= C_{t-1} \cdot f_t \\ \end{aligned} ftCt−1′=σ(Wf[ht−1,xt]+bf)(遗忘门)=Ct−1⋅ft
输入门 i t i_t it :上图中
红框2
的是 LSTM 输入门部分,用来判断哪些新的信息应该加入到 cell 状态 C t − 1 ′ C'_{t-1} Ct−1′ 中。其中 σ表示激活函数 sigmoid。
- ①. 输入的 h t − 1 h_{t-1} ht−1 和 X t X_t Xt 经过 tanh 激活函数可以得到新的输入信息 C ~ t \tilde{C}_t C~t (候选细胞状态 – 新计算出的信息),但是这些新信息并不全是有用的。
- ②. 因此需要使用 h t − 1 h_{t-1} ht−1 和 X t X_t Xt 经过 sigmoid 函数得到 i t i_t it,( i t i_t it 表示哪些新信息是有用的)。
- ③. 两向量相乘后的结果加到 C t − 1 ′ C'_{t-1} Ct−1′ 中,即得到 t 时刻的 cell 状态 C t C_t Ct (存储长期记忆)。
i t = σ ( W i [ h t − 1 , x t ] + b i ) (输入门) C ~ t = tanh ( W C [ h t − 1 , x t ] + b C ) (候选细胞状态) C t = f t ⋅ C t − 1 + i t ⋅ C ~ t (细胞状态(Cell State)) \begin{aligned} i_t &= \sigma(W_i [h_{t-1}, x_t] + b_i) \quad \text{(输入门)} \\% &=让等号对齐 \tilde{C}_t &= \tanh(W_C [h_{t-1}, x_t] + b_C) \quad \text{(候选细胞状态)} \\ C_{t} &= f_t \cdot C_{t-1} + i_t \cdot \tilde{C}_t \quad \text{(细胞状态(Cell State))}\\ \end{aligned} itC~tCt=σ(Wi[ht−1,xt]+bi)(输入门)=tanh(WC[ht−1,xt]+bC)(候选细胞状态)=ft⋅Ct−1+it⋅C~t(细胞状态(Cell State))
**输出门 O t O_t Ot :**上图中
红框3
的是 LSTM 输出门部分,控制输出信息,用来判断应该输出哪些信息到 h t h_t ht 中。
- ①. cell 状态 C t C_t Ct 经过 tanh 函数得到可以输出的信息 --> t a n h ( C t ) tanh(C_t) tanh(Ct):将细胞状态映射到 [-1,1] ;
- ②. 然后 h t − 1 h_{t-1} ht−1 和 X t X_t Xt 经过 sigmoid 函数得到一个向量 O t O_t Ot, O t O_t Ot 的每一维的范围都是 [0, 1],表示哪些位置的输出应该去掉,哪些应该保留。
- ③. 两向量相乘后的结果就是最终的 h t h_t ht – 隐藏状态(Hidden State),代表 当前时间步 t 的输出,也用于传递信息到 下一个时间步。
o t = σ ( W o [ h t − 1 , x t ] + b o ) (输出门) h t = o t ⋅ tanh ( C t ) \begin{aligned} o_t &= \sigma(W_o [h_{t-1}, x_t] + b_o) \quad \text{(输出门)} \\% &=让等号对齐 h_t &= o_t \cdot \tanh(C_t) \end{aligned} otht=σ(Wo[ht−1,xt]+bo)(输出门)=ot⋅tanh(Ct)
{{{(>_<)}}} 参数详解:
📌 1. C t C_t Ct - 细胞状态(Cell State)
适用于 LSTM(长短时记忆网络)
存储长期记忆,可以看作 LSTM 的“记忆单元”
计算公式:
C t = f t ⋅ C t − 1 + i t ⋅ C ~ t C_t = f_t \cdot C_{t-1} + i_t \cdot \tilde{C}_t Ct=ft⋅Ct−1+it⋅C~t
- f t f_t ft(遗忘门):控制 遗忘多少旧信息
- i t i_t it(输入门):控制 加入多少新信息
- C ~ t \tilde{C}_t C~t(候选细胞状态):新计算出的信息
📌 2. h t h_t ht - 隐藏状态(Hidden State)
适用于 RNN/LSTM/GRU
代表 当前时间步 t 的输出
也用于传递信息到 下一个时间步
计算公式:
h t = o t ⋅ tanh ( C t ) h_t = o_t \cdot \tanh(C_t) ht=ot⋅tanh(Ct)
- O t O_t Ot(输出门):控制输出信息
- t a n h ( C t ) tanh(C_t) tanh(Ct):将细胞状态映射到 [-1,1]
📌 在普通 RNN 里,隐藏状态计算:
h t = tanh ( W h h t − 1 + W x x t + b h ) h_t = \tanh(W_h h_{t-1} + W_x x_t + b_h) ht=tanh(Whht−1+Wxxt+bh)
- W h W_h Wh W x W_x Wx b h b_h bh 是可训练参数。
📌 3. X t X_t Xt- 输入(Input)
表示 时间步 t 的输入数据
可能是:
- 一个单词的词向量(自然语言处理 NLP)
- 一个特征值(时间序列预测)
- 一帧图像的像素信息(视频处理)
输入通常是一个 向量,例如:
X t = [ X t , 1 , X t , 2 , . . . , X t , d ] X_t = [X_{t,1}, X_{t,2}, ..., X_{t,d}] Xt=[Xt,1,Xt,2,...,Xt,d]其中 d 是特征维度。
📌 4. σ - Sigmoid 激活函数
公式:
σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+e−x1作用:
- 将输入 压缩到 (0,1) 之间
- 常用于 门控机制(LSTM/GRU 的 输入门/遗忘门/输出门)
示例:
f t = σ ( W f [ h t − 1 , x t ] + b f ) f_t = \sigma(W_f [h_{t-1}, x_t] + b_f) ft=σ(Wf[ht−1,xt]+bf)
- f t f_t ft是遗忘门,值在 0~1 之间:
- 接近 1 → 保留大部分旧信息
- 接近 0 → 遗忘大部分旧信息
1.2 门控循环单元(GRU)
GRU(Gated Recurrent Unit)是LSTM的简化版本,它只保留了重置门和更新门,使得计算更简洁、效率更高(短期依赖):
- 重置门:控制当前状态和前一状态的融合程度。(合并了遗忘门和输入门)
- 更新门:决定如何组合当前输入和前一时刻的状态信息。(去掉了输出门,改为“重置门”)
相比LSTM,GRU更轻量且训练速度更快,适合对内存和计算资源要求较高的场景。GRU同样能解决RNN的梯度消失问题,但表现稍逊于LSTM。
ฅʕ•̫͡•ʔฅ 精讲堂:
图中的 r t r_t rt 和 z t z_t zt 分别表示 重置门 (蓝色) 和 更新门 (红色)。
重置门 r t r_t rt 控制着前一状态的信息 h t − 1 h_{t-1} ht−1 传入候选状态 h ~ t \tilde{h}_t h~t 的比例,重置门 r t r_t rt 的值越小,则与 h t − 1 h_{t-1} ht−1 的乘积越小, h t − 1 h_{t-1} ht−1 的信息添加到候选状态越少。
r t = σ ( W r x t + U r h t − 1 + b r ) (重置门(Reset Gate)) \begin{aligned} r_t &= \sigma(W_r x_t + U_r h_{t-1} + b_r) \quad \text{(重置门(Reset Gate))}\\ \end{aligned} rt=σ(Wrxt+Urht−1+br)(重置门(Reset Gate))
- r t r_t rt 作用: 决定 **前一时刻的隐藏状态 h t − 1 h_{t-1} ht−1有多少信息要被遗忘或重置。
- 当 r t r_t rt 接近 0,表示遗忘大部分旧信息,更关注当前输入 x t x_t xt。
- 当 r t r_t rt 接近 1,表示保留旧信息,更依赖 h t − 1 h_{t-1} ht−1。
更新门 用于控制前一状态的信息 h t − 1 h_{t-1} ht−1 有多少保留到新状态 h t h_t ht 中,当 ( 1 − z t 1-z_t 1−zt) 越大,保留的信息越多。
z t = σ ( W z x t + U z h t − 1 + b z ) (更新门(Update Gate)) \begin{aligned} z_t &= \sigma(W_z x_t + U_z h_{t-1} + b_z) \quad \text{(更新门(Update Gate))}\\ \end{aligned} zt=σ(Wzxt+Uzht−1+bz)(更新门(Update Gate))
- 作用: 控制 隐藏状态的更新方式。
- 当 z t z_t zt 逼近 0,表示更多使用当前输入 x t x_t xt,类似于传统 RNN。
- 当 z t z_t zt 逼近 1,表示完全保留旧状态 h t − 1 h_{t-1} ht−1,相当于 “记住过去”。
候选隐藏状态 h ~ t \tilde{h}_t h~t
h ~ t = tanh ( W h x t + U h ( r t ⋅ h t − 1 ) + b h ) (候选隐藏状态(Candidate Hidden State)) \begin{aligned} \tilde{h}_t &= \tanh(W_h x_t + U_h (r_t \cdot h_{t-1}) + b_h) \quad \text{(候选隐藏状态(Candidate Hidden State))}\\ \end{aligned} h~t=tanh(Whxt+Uh(rt⋅ht−1)+bh)(候选隐藏状态(Candidate Hidden State))
- 作用: 生成新的隐藏状态候选值,决定如何更新当前的隐藏状态。
- 这里的 r t ⋅ h t − 1 r_t \cdot h_{t-1} rt⋅ht−1 让 r t r_t rt 控制 h t − 1 h_{t-1} ht−1 的影响力。
- 当 r t r_t rt 变小时, h t − 1 h_{t-1} ht−1 的影响减弱,意味着更依赖当前输入 x t x_t xt。
最终隐藏状态 h t h_t ht
h t = ( 1 − z t ) ⋅ h t − 1 + z t ⋅ h ~ t (最终隐藏状态(Final Hidden State)) \begin{aligned} h_t &= (1 - z_t) \cdot h_{t-1} + z_t \cdot \tilde{h}_t \quad \text{(最终隐藏状态(Final Hidden State))}\\ \end{aligned} ht=(1−zt)⋅ht−1+zt⋅h~t(最终隐藏状态(Final Hidden State))
- 作用: 更新隐藏状态
- 如果 z t z_t zt 逼近 1,说明沿用旧隐藏状态 h t − 1 h_{t-1} ht−1,不更新。
- 如果 z t z_t zt 逼近 0,说明完全使用新计算的 h ~ t , \tilde{h}_t, h~t, 完全更新。
GRU 结构图中有 两条输出箭头,但其实 它们是同一个东西
一条输出给外部(作为最终输出)
一条传递给下一时刻(作为下一个时间步的输入)
{{{(>_<)}}} 各个参数的含义
参数 符号 含义 输入向量 x t x_t xt 当前时刻 t 的输入数据 前一时刻隐藏状态 h t − 1 h_{t-1} ht−1 记忆前一时刻的状态 隐藏状态 h t h_t ht 当前时刻的隐藏状态(输出) 更新门 z t z_t zt 控制旧状态 h t − 1 h_{t-1} ht−1与新状态 h ~ t \tilde{h}_t h~t 之间的比例 重置门 r t r_t rt 控制前一时刻隐藏状态 h t − 1 h_{t-1} ht−1的信息遗忘程度 候选隐藏状态 h ~ t \tilde{h}_t h~t 通过当前输入和重置门计算出的新的隐藏状态候选值 权重矩阵 W r , W z , W h W_r, W_z, W_h Wr,Wz,Wh 输入 x t x_t xt 对应的权重 隐藏状态的权重矩阵 U r , U z , U h U_r, U_z, U_h Ur,Uz,Uh 之前隐藏状态 h t − 1 h_{t-1} ht−1对应的权重 偏置项 b r , b z , b h b_r, b_z, b_h br,bz,bh 用于调整每个门的输出 激活函数 σ ( s i g m o i d ) , t a n h \sigma (sigmoid), tanh σ(sigmoid),tanh Sigmoid 用于门控,Tanh 用于隐藏状态计算
4. 结构对比
特性 | RNN | GRU | LSTM |
---|---|---|---|
核心组件 | 只有隐藏状态 h t h_t ht | 更新门 z t z_t zt、重置门 r t r_t rt | 遗忘门 f t f_t ft、输入门 i t i_t it、输出门 o t o_t ot |
梯度消失问题 | 严重 | 轻微 | 最小 |
计算复杂度 | 最简单 | 较快(比 LSTM 快) | 较慢(参数最多) |
记忆能力 | 短时记忆(容易遗忘) | 较长时记忆 | 长时记忆最强 |
适用于 | 简单短期任务(如简单时间序列) | 中等长度序列(如语音识别) | 长序列依赖任务(如机器翻译、文本生成) |
5. 综合应用
任务 | 适合的模型 | 推荐架构 |
---|---|---|
语音识别 | RNN + GRU | 处理语音短期和中期特征 |
金融预测 | GRU + LSTM | GRU 处理短期市场波动,LSTM 处理长期趋势 |
机器翻译 | LSTM / GRU | LSTM 处理长时间依赖,GRU 计算更快 |
文本摘要 | GRU + LSTM | GRU 负责短摘要,LSTM 处理长文本 |
视频分析 | CNN + RNN + LSTM | CNN 处理帧级别特征,RNN/LSTM 处理时序依赖 |
机器人控制 | RNN + GRU | RNN 处理短时间依赖,GRU 适用于长期控制 |
混合任务(文本+语音+时间序列) | RNN + GRU + LSTM | 三者结合,适应不同时间尺度 |
小白课堂:
🧠 深度学习时代(2013 - 2017)
🔹 让计算机自己学习语言
2013 年后,深度学习(Deep Learning)开始应用于 NLP,使计算机可以“学习”语言,而不是依赖人工规则或统计概率。
1️⃣ 词向量(Word Embeddings)
- Word2Vec(2013):让计算机用数学方式理解单词的意思。
- 例子:
- “国王” - “男人” + “女人” = “王后” 👑
- 计算机通过大数据学习单词之间的联系。
2️⃣ CNN 在 NLP(2014)
CNN(卷积神经网络)原本是用来识别图片的,但也能用于 NLP,比如文本分类。
📌 CNN 是如何处理文本的?
- 它会像“扫描图片”一样扫描句子,捕捉其中的重要模式。
- 例子:
- “电影很好看” → CNN 识别出“很好看”是一个积极的评价。
- “这部电影无聊透顶” → CNN 识别出“无聊透顶”是消极的评价。
- CNN 非常适合文本分类任务(如情感分析、垃圾邮件检测)。
📌 CNN 的问题:
不能理解句子的顺序,比如“他不是坏人” vs “他是坏人”,CNN 可能误解。
对位置不敏感,可能忽略词语顺序,无法捕捉“不”对句子意义的改变。
无法处理长文本,因为它更擅长局部特征(小范围的词组)。
3️⃣ RNN 和 LSTM(2014 - 2017)
CNN 不能处理长文本,于是出现了 RNN(循环神经网络)和 LSTM(长短时记忆网络)。
📌 RNN 的思路:
- 像读书一样按顺序处理文本,每读一个单词,就把信息传递到下一步。
- 问题:句子太长,前面的信息容易“忘记”。
📌 LSTM(长短时记忆网络)
- 解决了 RNN 记忆力不好的问题,能够保留长距离信息。
- 例子:
- “小明出生在中国,他从小学习中文。”
- LSTM 记住“小明出生在中国”,就能理解“他”指的是“小明”。
✅ LSTM 适用于: 机器翻译、语音识别、对话系统。
❌ 问题:计算速度慢,难以并行处理。