核心挑战

传统的神经网络(如全连接网络或 CNN)在处理序列数据时面临两大挑战:

  • 输入长度可变:一句话可长可短,一段音乐时长不一。标准网络要求输入大小固定。
  • 顺序至关重要:“我爱她”和“她爱我”的词语相同,但顺序不同,含义也完全不同。标准网络无法捕捉这种顺序关系。

解决方案:循环神经网络 (RNN)

核心思想:为了解决上述挑战,RNN 被设计出来。它就像一个“有记忆”的人在阅读一句话:当他读到每个词时,不仅会理解当前词的含义,还会结合之前所有词的“记忆”(即隐藏状态),来形成对整句话的理解。

这种“记忆循环”机制使得 RNN 能够处理任意长度的序列,并捕捉到上下文信息。

...
ht-1
xt
RNN
单元
ht
...
from tensorflow import keras from keras import layers # 典型的 RNN 模型结构 model = keras.Sequential([ # 输入层,例如每个词用一个128维的向量表示 layers.Embedding(input_dim=10000, output_dim=128), # RNN 层 # 现代实践中更常用 LSTM 或 GRU layers.SimpleRNN(64), # 输出层 layers.Dense(1, activation='sigmoid') ])

主要应用领域

自然语言处理

🗣️

机器翻译、文本生成、情感分析、问答系统等。

时间序列预测

📈

股票价格预测、天气预报、销量预测等。

语音识别

🎤

将语音信号转换为文字。