news 2026/7/6 1:51:16

Week4:时序建模

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Week4:时序建模

目录

摘要

Abstract

1. 循环神经网络(RNN)

1.1 RNN的必要性

1.2 RNN的核心思想

1.3 RNN的展开

1.4 RNN的缺点

2. 长短时记忆网络(LSTM)

2.1 核心设计

3 Keras代码演示

3.1 用LSTM做情感分类

3.2 堆叠LSTM与双向LSTM

4 总结


摘要

本周进入序列建模学习,掌握处理时序数据的核心架构,具体分为循环神经网络的基本结构与工作原理、RNN的梯度消失问题与LSTM的解决方案以及使用Keras搭建RNN/LSTM模型

Abstract

This week, we dive into sequence modeling and master the core architectures for processing time-series data. The topics are divided into: the basic structure and working principles of recurrent neural networks, the vanishing gradient problem in RNNs and the LSTM solution, and building RNN/LSTM models using Keras.

1. 循环神经网络(RNN)

1.1 RNN的必要性

全连接网络和CNN都假设输入是固定长度的向量,且样本之间独立。但句子“我喜欢这部手机”和“手机这部喜欢我”词序不同,语义完全不同。要捕捉这种顺序信息,网络必须具有记忆能力,能够把前面时刻的信息传递到后面。

1.2 RNN的核心思想

RNN在隐藏层引入循环连接:当前时刻的隐藏状态不仅取决于当前输入,还取决于上一时刻的隐藏状态。用公式表示如下:

其中是输入到隐藏层的权重,是隐藏层到自身的循环权重,是隐藏层到输出的权重。f 通常是tanh或ReLU,g 根据任务选择。关键点在于每一时刻使用的权重矩阵,,是共享的,与CNN的权重共享思想一致,大幅减少参数量,且能处理任意长度的序列。

1.3 RNN的展开

如果把RNN按时间展开,它等价于一个深度为序列长度的前馈网络,各层共享权重。反向传播时需要沿时间轴反向计算梯度,称为沿时间反向传播(BPTT)。权重共享意味着他处理每个词的方法是一样的,不因位置不同而区别对待。

1.4 RNN的缺点

BPTT本质上是在时间轴上反复乘以同一个权重矩阵。假设其最大特征值为,经过 T 步反向传播后,梯度约正比于;当> 1,梯度指数级增长,参数剧烈震荡;当< 1,梯度指数级衰减,早期时刻信号完全丢失,RNN无法学习长距离依赖关系,只能记住最近几步的信息。

2. 长短时记忆网络(LSTM)

2.1 核心设计

LSTM通过门控机制控制信息的流入、保存与输出,让重要信息可以跨越很长的距离保持不变。每个LSTM单元有以下几个部分:

遗忘门

输入门

候选记忆

记忆更新

输出门:决定当前隐藏状态的输出内容

记忆单元的更新是加法而非乘法。遗忘门和输入门的输出在 0 到 1 之间,通过逐元素乘法和加法来调节,避免了普通RNN中反复乘以权重矩阵导致的梯度指数衰减。梯度可以通过记忆单元的“高速公路”几乎无损地传到很远的时间步。

3 Keras代码演示

3.1 用LSTM做情感分类

以IMDB电影评论数据集为例,输入是变长词序列,输出是正面/负面情感。

import numpy as np from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Embedding, LSTM, Dense, Dropout from tensorflow.keras.preprocessing.sequence import pad_sequences 模拟数据:假设已经完成分词和数值化 x_train: 每条评论截断/填充到200个词,每个词用一个整数ID表示 y_train: 0或1 max_features = 10000 # 词汇表大小 maxlen = 200 # 每条评论最大长度 embedding_dim = 128 # 词向量维度 lstm_units = 64 # LSTM隐藏单元数 model = Sequential() 嵌入层:将整数ID映射为稠密向量 model.add(Embedding(input_dim=max_features, output_dim=embedding_dim, input_length=maxlen)) LSTM层 model.add(LSTM(units=lstm_units, dropout=0.2, # 输入dropout recurrent_dropout=0.2)) # 循环dropout 全连接输出层 model.add(Dense(1, activation='sigmoid')) model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) model.summary() 训练(假设数据已准备好) history = model.fit(x_train, y_train, batch_size=32, epochs=10, validation_split=0.2)

3.2 堆叠LSTM与双向LSTM

堆叠LSTM:多层LSTM叠加,加深网络,提取更抽象特征。

model.add(LSTM(64, return_sequences=True)) # 返回完整序列给下一层 model.add(LSTM(32)) # 最后一层只返回最终输出

双向LSTM:同时从前向和后向两个方向读取序列,捕捉上下文信息。

from tensorflow.keras.layers import Bidirectional model.add(Bidirectional(LSTM(64)))

Embedding层非常巧妙,它把离散的符号(词)变成了连续空间中的向量,语义相近的词向量也接近。这个向量空间是随着任务一起训练的,不需要人工定义。LSTM的dropout有两种,普通dropout管输入,recurrent dropout管循环连接,Keras直接集成,调参方便。

4 总结

本周的核心收获是理解了序列建模的挑战与解决方案的演进逻辑。下周学习注意力机制的基本原理,理解它如何让模型“关注重点”。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/6 1:49:11

【共创季稿事节】密码生成器:如何构建一个安全的随机密码生成工具

一、引言 密码安全是信息安全领域最基础也最容易被忽视的一环。据 2025 年的安全报告显示&#xff0c;仍有超过 60% 的用户使用弱密码或重复密码。一个好的密码生成器可以帮助用户创建复杂、高强度的随机密码&#xff0c;大幅提升账户安全性。 二、密码强度理论 2.1 熵与密码强…

作者头像 李华
网站建设 2026/7/6 1:49:04

CUDA 12.4 + cuDNN 9.2.0 Conda 安装:3步验证GPU深度学习环境

CUDA 12.4 cuDNN 9.2.0 Conda 环境配置&#xff1a;从零验证GPU深度学习工作流当我在去年尝试为团队搭建统一的深度学习开发环境时&#xff0c;发现传统系统级CUDA安装方式带来的版本冲突问题令人头疼。直到采用Conda环境管理方案后&#xff0c;才真正实现了不同项目间CUDA版本…

作者头像 李华
网站建设 2026/7/6 1:48:24

【共创季稿事节】随机数生成器:Math.random() 的原理与应用

一、引言 随机数是一个看似简单、实则需要严谨处理的概念。从抽奖摇号到游戏掉落、从密码生成到蒙特卡洛模拟&#xff0c;随机数无处不在。本文将讲解随机数生成器的技术原理&#xff0c;以及在 ArkTS 中如何构建一个功能完善的随机数生成工具。 二、伪随机数生成原理 2.1 Math…

作者头像 李华
网站建设 2026/7/6 1:46:49

Java设计模式——结构型

设计模式&#xff1a;结构型模式结构型模式关注的是&#xff1a;类和对象之间如何组合&#xff0c;如何让系统结构更灵活、更容易扩展。 创建型模式解决“对象怎么创建”&#xff0c;结构型模式解决“对象怎么组装”。一、结构型模式总览结构型模式主要解决以下问题&#xff1a…

作者头像 李华
网站建设 2026/7/6 1:45:19

HarmonyKit | 鸿蒙新特性对比:Tabs vs HdsTabs 选型深度解析

HarmonyKit | 鸿蒙新特性对比&#xff1a;Tabs vs HdsTabs 选型深度解析 两组件的本质区别 Tabs 和 HdsTabs 之差看起来只是多了三个字母&#xff0c;但背后的技术体系完全不一样。 Tabs 是 ArkUI 框架层的基础组件。它提供了标签导航的基础能力——标签切换、内容区渲染、T…

作者头像 李华
网站建设 2026/7/6 1:44:19

2026最新7款AI编程助手学生党实测深度对比

作为一个经常需要做技术演示的人&#xff0c;AI 编程工具能不能快速生成可运行的 Demo 是我的核心考量。去年我从Java转Go之后&#xff0c;日常既要维护老的Java后台服务&#xff0c;也要写不少React前端页面做运营后台&#xff0c;试过不下十款AI编程工具&#xff0c;最近半年…

作者头像 李华