【人工智能导论】08-学习-如何让计算机理解序列数据——用RNN/LSTM建模时序依赖,用文本嵌入表示序列元素

2025博客之星年度评选已开启 10w+人浏览 1.8k人参与

⏱️ 预计阅读时间:30-40分钟
🎯 学习目标:学会怎么处理序列数据,怎么建模时序依赖,怎么表示序列元素


📚 核心结论:RNN/LSTM建模序列结构+文本嵌入表示序列元素,既能建模结构又能表示元素

想象一下,你想让计算机理解一句话"我喜欢猫"。这句话是一个序列,每个字都有顺序,而且后面的字依赖于前面的字。

这需要解决两个核心问题:

首先,怎么建模序列的时序依赖关系?就像你理解一句话,需要记住前面说了什么,才能理解后面的意思。RNN通过循环连接记住之前的信息,LSTM通过门控机制选择性地记住和遗忘,解决长期依赖问题。

其次,怎么将符号转换为数值向量?就像计算机不能直接理解"猫"这个字,需要把它转换成数字。文本嵌入将词汇映射到稠密向量空间,语义相似的词在向量空间中距离相近,实现从符号到向量的转换。

那么,怎么用循环连接建模序列结构?怎么用门控机制解决长期依赖?怎么用文本嵌入表示序列元素?这些正是本文要解决的核心。

序列处理问题
处理序列数据
RNN/LSTM
序列结构
建模时序依赖
文本嵌入
序列表示
符号转向量
记忆能力vs效率
记得多vs算得快

 


一、循环神经网络:建模序列结构

传统神经网络只能处理固定大小的输入,无法处理变长序列。比如一句话可能是5个字,也可能是20个字。RNN通过循环连接,让网络能够记住之前的信息,处理任意长度的序列。

1. 循环连接:隐藏状态在时间步之间传递,形成记忆

RNN的核心是循环连接:每个时刻的隐藏状态不仅依赖于当前输入,还依赖于上一时刻的隐藏状态。就像你说话时会记住之前说了什么,RNN通过隐藏状态记住之前的信息。

时刻t+1:'猫'
时刻t:'喜欢'
时刻t-1:'我'
循环连接
传递记忆
循环连接
继续传递
x(t+1)
输入'猫'
y(t+1)
输出
x(t)
输入'喜欢'
y(t)
输出
x(t-1)
输入'我'
y(t-1)
输出

关键机制:循环连接使隐藏状态在时间步之间传递,形成记忆。每个时刻的隐藏状态h(t) = f(x(t), h(t-1)),既看当前输入x(t),也看之前的状态h(t-1),从而记住历史信息。

2. 共享参数和变长序列:同一套参数处理所有时刻,能处理不同长度

RNN的另一个特点是共享参数:同一套参数在所有时间步共享,就像用同一套规则处理所有时刻。这样既能减少参数数量,又能处理不同长度的序列。

RNN特点
循环连接
h(t) = f(x(t), h(t-1))
记住之前的信息
共享参数
同一套参数所有时间步
减少参数数量
变长序列
处理不同长度
5个字或20个字都可以
形成记忆
保存历史信息
减少参数
提高效率
灵活处理
适应性强

 


二、LSTM:解决长期依赖

RNN虽然能记住之前的信息,但在反向传播时容易出现梯度消失问题,难以学习长期依赖关系。比如理解"我昨天在公园里看到了一只猫",需要记住很久之前的"我"和"昨天"。LSTM通过门控机制,选择性地记住和遗忘信息,解决长期依赖问题。

1. 门控机制:选择性记忆和遗忘

LSTM的核心是门控机制,就像人能够选择性地记住重要信息,遗忘不重要信息。LSTM有三个门:遗忘门决定丢弃什么,输入门决定存储什么,输出门决定输出什么。

输入x(t)
当前输入
遗忘门
决定丢弃什么
忘记不重要的
输入门
决定存储什么
记住重要的
候选值
新的信息
细胞状态C(t-1)
长期记忆
更新细胞状态
C(t) = f(t)*C(t-1) + i(t)*C̃(t)
忘记旧的+记住新的
输出门
决定输出什么
输出相关信息
隐藏状态
h(t) = o(t)*tanh(C(t))
当前状态

2. 细胞状态:长期记忆的载体

细胞状态是LSTM的关键创新,它是长期记忆的载体。通过门控机制更新:遗忘门决定丢弃多少旧信息,输入门决定存储多少新信息。这样,重要的信息可以长期保存,不重要的信息会被遗忘。

RNN问题
梯度消失
难以学习长期依赖
LSTM解决方案
门控机制
遗忘门
选择性遗忘
不重要信息
输入门
选择性存储
重要信息
细胞状态
长期记忆载体
梯度稳定
输出门
选择性输出
相关信息

关键机制:遗忘门决定从细胞状态中丢弃什么信息,输入门决定将什么新信息存入细胞状态,输出门决定输出什么信息。细胞状态通过门控机制更新,梯度可以稳定传播,从而解决长期依赖问题。

 


三、文本嵌入:表示序列元素

序列中的元素(如词汇)是符号,计算机无法直接处理。需要将符号转换为数值向量。文本嵌入将词汇映射到稠密向量空间,使语义相似的词在向量空间中距离相近。

1. 从符号到向量:One-Hot到稠密向量

传统方法用One-Hot编码:词汇表有1万个词,每个词就是一个1万维的向量,只有对应位置是1,其他都是0。这样维度太高,而且无法表示语义关系。

文本嵌入将每个词映射到一个低维稠密向量(比如300维),语义相似的词在向量空间中距离相近。比如"猫"和"狗"的向量会很接近,"猫"和"汽车"的向量会距离较远。

词汇
'猫'
'狗'
符号
One-Hot编码
[1,0,0,...]
[0,1,0,...]
高维稀疏
文本嵌入
学习稠密向量
稠密向量
[0.2,0.5,-0.1,...]
[0.3,0.4,-0.2,...]
低维稠密
语义空间
相似词距离近
'猫'和'狗'相近

2. 文本嵌入的特点:语义相似性、可计算性、可学习性

文本嵌入有四个重要特点:稠密向量(维度远小于词汇表大小)、语义相似性(相似词距离近)、可计算性(向量可以进行加减运算,如"国王-男人+女人=女王")、可学习性(通过大规模数据自动学习语义)。

文本嵌入特点
稠密向量
维度<<词汇表大小
300维vs1万维
语义相似性
相似词距离近
'猫'和'狗'相近
可计算性
向量加减运算
国王-男人+女人=女王
可学习性
自动捕获语义
大规模数据学习
降低维度
提高效率
捕获语义
理解关系
语义运算
词类比
自动学习
无需人工

3. 预训练词嵌入:从静态到动态

静态词嵌入(Word2Vec、GloVe):通过大规模无标注文本数据预训练,学习通用的词汇语义表示。Word2Vec利用局部上下文信息,GloVe利用全局共现统计。但它们是静态的,同一个词在不同语境中表示相同,无法处理一词多义。

上下文相关嵌入(BERT):根据词汇的上下文动态生成词嵌入,同一个词在不同上下文中有不同的表示。比如"银行"在"去银行取钱"和"河岸的银行"中表示不同。BERT利用双向上下文,同时考虑左右上下文,能够处理一词多义问题

词嵌入演进
静态词嵌入
Word2Vec/GloVe
同一词相同表示
上下文相关嵌入
BERT
同一词不同表示
优点:通用表示
缺点:无法处理一词多义
优点:处理一词多义
缺点:计算量大

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

roman_日积跬步-终至千里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值