RNN 知识点全面讲解
RNN 知识点全面讲解循环神经网络RNN知识点讲解文档知识导图RNN ├─ RNN 基础 │ ├─ 定义处理序列数据的神经网络 │ ├─ 特点带记忆、时序依赖、循环结构 │ └─ 应用NLP自然语言处理、时序预测、语音识别、文本生成 ├─ 词嵌入层 │ ├─ 作用词 → 向量 │ ├─ 流程分词→建词表→索引→Embedding查表 │ └─ APInn.Embedding(num_embeddings, embedding_dim) └─ 循环网络层 ├─ 结构输入x、隐藏状态h、输出y ├─ 原理hₜ tanh(Wih·xₜ Whh·hₜ₋₁ b) ├─ 特点传递历史信息、建模上下文 └─ APInn.RNN(input_size, hidden_size, num_layers)核心名词解释序列数据前后存在依赖关系的数据如文本、时间序列。RNN循环神经网络能记忆历史信息处理时序 / 序列数据。词嵌入将词语映射为低维稠密向量用于模型输入。隐藏状态 hₜRNN 记忆单元保存当前与历史信息。词表词语到索引的映射字典。Embedding词嵌入层可学习的词向量矩阵。时序依赖当前数据与前面数据有关联。循环结构隐藏状态跨时间步传递。一、RNN 介绍1.1 什么是 RNN循环神经网络Recurrent Neural Network, RNN专门处理序列数据的神经网络。核心带有循环结构能记住前面时间步的信息。适用文本、语音、时间序列等前后有关系的数据。1.2 RNN 应用场景自然语言处理文本生成、翻译、情感分析、意图识别。时间序列预测股价、气温、传感器数据。语音识别语音转文字。音乐生成按时序生成旋律。1.3 RNN 整体结构RNN 词嵌入层 RNN 循环层 全连接输出层词嵌入层将词转化为向量表示词向量。RNN 层通过RNN层逐步处理词向量生成每个时间步的隐藏状态。全连接层通过线性变换将隐藏状态映射到输出通常是一个词表vocab中的词的概率分布。二、词嵌入层2.1 作用将词语token转为向量称为词向量。作用输入表示、降低维度 和 语义表示(捕捉语义相似性)把文本数值化供神经网络计算。捕捉语义相似词语向量相近。2.2 工作流程文本 → 分词 → token 序列 → 索引序列 → Embedding 查表 → 词向量序列2.3 PyTorch 词嵌入 APInn.Embedding(num_embeddings,# 词表大小词的总数embedding_dim# 词向量维度)2.4 示例代码*# 词嵌入层工作流程 文本-分词-词典-token序列-embedding初始化-词向量-输出**# API:torch.nn.Embedding(num_embeddings,embedding_dim)*importtorch.nn*#文本*text北京冬奥会的进度条已经过半不少外国运动员在完成自己的比赛后踏入归途print(text)*# 分词*importjieba text_jiebajieba.lcut(text)print(text_jieba)print(len(text_jieba))*# 词内容去重构建词表*unique_textlist(set(text_jieba))print(len(unique_text))*# embedding初始化*embeddingtorch.nn.Embedding(num_embeddingslen(unique_text),embedding_dim4)*# 词向量*fori,wordinenumerate(unique_text):embedembedding(torch.tensor(i))print(f{word}--{i}--{embed})三、循环网络层RNN Layer3.1 RNN 结构特点每个时间步输入当前词向量 xₜ 上一时刻隐藏状态 hₜ₋₁输出当前隐藏状态 hₜ隐藏状态作用记忆、上下文、时序传递。RNN网络结构3.2 RNN 计算公式隐藏状态更新hₜ tanh( Wih · xₜ Whh · hₜ₋₁ b )输出全连接层yₜ Why · hₜ by3.3 PyTorch RNN APInn.RNN(input_size,# 输入维度词向量维度hidden_size,# 隐藏状态维度num_layers# 网络层数默认1)3.4 输入与输出形状输入 x\[seq\_len, batch, input\_size\]初始隐藏 h0\[num\_layers, batch, hidden\_size\]输出 output\[seq\_len, batch, hidden\_size\]最终隐藏 hn\[num\_layers, batch, hidden\_size\]3.5 示例代码importtorchimporttorch.nnasnndeftest_rnn():rnnnn.RNN(input_size128,hidden_size256)# 句子长度5批次32词向量维度128xtorch.randn(5,32,128)h0torch.zeros(1,32,256)output,hnrnn(x,h0)print(output shape:,output.shape)print(hn shape:,hn.shape)test_rnn()四、知识点对比4.1 词嵌入层 vs RNN 层层作用输入输出可学习词嵌入词 → 向量词索引词向量是RNN时序建模词向量 隐藏状态隐藏状态是4.2 RNN 核心记忆机制每一步都把历史信息存在隐藏状态 h里。后面的词可以 “看到” 前面所有内容。适合文本理解、翻译、生成。五、全章总结RNN处理序列数据带记忆按时间步循环计算。词嵌入把词变成向量API nn\.Embedding\(词数, 维度\)。RNN 层API nn\.RNN\(输入维度, 隐藏维度, 层数\)。流程文本 → 分词 → 索引 → 词嵌入 → RNN → 输出预测。核心隐藏状态 hₜ 传递历史信息建模上下文依赖。