一、序列建模基础

1.1 自回归模型(Autoregressive Model)

  • 核心思想:当前时刻的输出依赖于过去观测值。
  • 简化方法
    • 固定窗口:仅依赖最近 τ 个观测值。
    • 马尔可夫假设:当前状态仅依赖前一时刻状态。

1.2 隐状态建模

  • 使用递归公式更新隐状态:

    ht=g(ht−1,xt−1)ht=g(ht−1,xt−1)ht=g(ht−1,xt−1)h_t = g(h_{t-1}, x_{t-1})ht=g(ht1,xt1)ht=g(ht1,xt1)

  • 输出概率:

    P(xt∣ht)P(xt∣ht)P(xt∣ht)P(x_t | h_t)P(xtht)P(xtht)

  • 能捕捉长期依赖,适用于时间序列、文本、语音等任务。


二、数据预处理与文本处理

2.1 特征编码

  • 数值特征:直接使用(如年龄)。
  • 类别特征
    • 整数编码:适用于类别较多的情况。
    • 独热编码:适用于类别较少的情况。
    • 词嵌入(Word Embedding):将高维稀疏向量映射为低维稠密向量,捕捉语义关系。

2.2 文本处理流程

  • 分词:按字符或单词切分文本。
  • 构建词表:统计词频,分配索引。
  • 数值化:将文本转换为索引序列。
  • 对齐序列:使用**填充(Padding)截断(Truncation)**统一序列长度。

三、词嵌入(Word Embedding)

  • 用一个矩阵 W∈Rd×VW \in \mathbb{R}^{d \times V}WRd×V(d ≪ V)表示嵌入层。
  • 可捕捉语义关系,例如:
    “king - man + woman ≈ queen”
  • 比独热编码更高效、更有语义表达力。
  • 在 IMDB 数据集上表现优于传统编码(测试准确率约 74%)。

四、循环神经网络(RNN)

4.1 基本结构

  • 输入序列:x1,x2,...,xTx_1, x_2, ..., x_Tx1,x2,...,xT

  • 每一步更新隐状态:

    ht=tanh⁡(Wxhxt+Whhht−1+b)ht=tanh⁡(Wxhxt+Whhht−1+b)ht=tanh⁡(Wxhxt+Whhht−1+b)h_t = \tanh(W_{xh}x_t + W_{hh}h_{t-1} + b)ht=tanh(Wxhxt+Whhht1+b)ht=tanh(Wxhxt+Whhht1+b)

  • 输出用于分类或预测任务。

4.2 存在问题

  • 梯度消失/爆炸:长序列训练困难,早期信息难以保留。
  • 遗忘问题:模型难以捕捉长距离依赖。

五、RNN 进阶模型

5.1 门控循环单元(GRU)

  • 核心机制

    • 重置门 rtr_trt:控制遗忘旧信息。
    • 更新门 ztz_tzt:决定保留多少旧状态。
  • 更新公式

    ht=(1−zt)⊙ht−1+zt⊙h tht=(1−zt)⊙ht−1+zt⊙h~tht=(1−zt)⊙ht−1+zt⊙h~th_t = (1 - z_t) \odot h_{t-1} + z_t \odot \tilde{h}_tht=(1zt)ht1+zth tht=(1zt)ht1+zth~t

  • 优点:结构简单,计算效率高,适用于中等长度序列。

5.2 长短期记忆网络(LSTM)

  • 核心机制

    • 遗忘门 ftf_tft输入门 iti_tit输出门 oto_tot
    • 引入细胞状态 CtC_tCt 传递长期信息。
  • 更新方式

    Ct=ft⊙Ct−1+it⊙C tCt=ft⊙Ct−1+it⊙C~tCt=ft⊙Ct−1+it⊙C~tC_t = f_t \odot C_{t-1} + i_t \odot \tilde{C}_tCt=ftCt1+itC tCt=ftCt1+itC~t

    ht=ot⊙tanh⁡(Ct)ht=ot⊙tanh⁡(Ct)ht=ot⊙tanh⁡(Ct)h_t = o_t \odot \tanh(C_t)ht=ottanh(Ct)ht=ottanh(Ct)

  • 优点:适合处理长距离依赖任务(如机器翻译)。

5.3 深度 RNN 与双向 RNN

  • 深度 RNN:堆叠多层 RNN,增强模型表示能力。
  • 双向 RNN(Bi-RNN):同时建模前向和后向信息,适用于上下文相关任务(如情感分析、命名实体识别)。

六、模型训练与优化

6.1 误差反向传播(BPTT)

  • 将误差反向传播至多个时间步,计算复杂。
  • 截断策略:限制反向传播的步数(如最近10步)。

6.2 实验对比与应用场景

模型参数量优势适用场景
基础RNN最少简单、效率高短序列分类
GRU中等计算效率与记忆能力平衡文本生成、中序列任务
LSTM最多长依赖建模能力强机器翻译、语音识别
  • The Time Machine 数据集:GRU/LSTM 表现优于基础RNN。
  • IMDB 情感分析
    • 基础 RNN:准确率约 84%-85%
    • LSTM/GRU:进一步提升准确率(最高 84.4%)

七、总结

  • RNN 适用于处理序列数据,但存在长程依赖问题。
  • GRU 和 LSTM 有效缓解梯度消失,增强记忆能力。
  • 数据预处理(如分词、词嵌入)对模型效果影响显著。
  • 实践中应结合任务需求选择合适模型结构与参数。
Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐