循环神经网络可以应用到很多不同类型的机器学习任务。根据这些任务的特点可以分为以下几种模式:序列到类别模式、同步的序列到序列模式、异步的 序列到序列模式。
本文我们来学习序列到类别模式,这种模式主要用于序列数据的分类问题:输入为序列,输出为类别。比如在文本分类中,输入数据为单词的序列,输出为该文本的类别。
一、概述
假设一个样本𝒙1∶𝑇 =(𝒙1,⋯,𝒙𝑇)为一个长度为𝑇的序列,输出为一个类别 𝑦 ∈ {1, ⋯ , 𝐶}。我们可以将样本 𝒙 按不同时刻输入到循环神经网络中,并得到不 同时刻的隐藏状态𝒉1,⋯,𝒉𝑇。
我们可以将𝒉𝑇 看作整个序列的最终表示(或特 征),并输入给分类器 𝑔(⋅) 进行分类,即
𝑦̂ = 𝑔(𝒉𝑇 ),
其中𝑔(⋅)可以是简单的线性分类器(比如Logistic回归)或复杂的分类器(比如 多层前馈神经网络)。
关于Logistic回归,请参考:线性模型 - Logistic 回归_logistic回归模型-CSDN博客线性模型 - Logistic回归(参数学习&具体示例)_logistic回归模型-CSDN博客
除了将最后时刻的状态作为整个序列的表示之外,我们还可以对整个序列 的所有状态进行平均,并用这个平均状态来作为整个序列的表示:
这里附一个序列到类别模式图,以直观的理解:
二、进一步理解“序列到类别”模式
“序列到类别”模式是指循环神经网络(RNN)接受一个完整的输入序列,然后输出一个类别标签,而不是为每个时间步生成一个输出。这种模式适用于需要对整个序列进行整体理解和分类的任务,例如情感分析、文本分类、语音识别中的说话人识别等。
如何理解“序列到类别”模式
-
输入序列:
网络接受一个由多个时间步组成的输入序列,每个时间步可以是单词、字符、语音帧等。这些时间步共同构成了序列的上下文信息。 -
循环处理:
循环神经网络逐步处理序列中的每个元素,并不断更新一个内部状态(隐藏状态),这个状态在理论上捕捉了整个序列的关键信息。也就是说,随着序列的展开,隐藏状态逐渐“总结”了之前所有输入的信息。 -
输出分类:
当整个序列处理完毕后,网络会将最终的隐藏状态作为整个序列的表示,接着通过一个全连接层(可能还会经过 softmax 激活函数)将其映射到预定义的类别空间,从而输出一个类别标签。关于softmax,可以参考;线性模型 - Softmax 回归_softmax函数决策边界-CSDN博客
线性模型 - Softmax 回归(参数学习)_线性公式加softmax的参数更新-CSDN博客
具体例子:文本情感分类
任务描述:
假设我们要对电影评论进行情感分析,将评论分为“正面”或“负面”。评论由多个单词组成,整个评论构成一个序列。
模型架构:
-
输入层:
-
每个评论分解成一个单词序列,例如 “这部电影很精彩” 可以转化为单词向量序列 [v₁, v₂, v₃, v₄]。
-
-
嵌入层:
-
使用词嵌入将每个单词转换为固定维度的向量。
-
-
循环层:
-
使用一个 RNN(例如 LSTM 或 GRU)逐步处理嵌入序列。
-
每个时间步更新隐藏状态,最终得到整个评论的隐藏状态 h(T)。
-
-
输出层:
-
将最终隐藏状态 h(T) 通过一个全连接层映射到 2 个神经元上,并用 softmax 输出类别概率。
-
如果 softmax 输出的概率中,“正面”概率较高,则评论分类为正面;反之,则为负面。
-
训练过程:
-
网络根据评论的真实标签(正面或负面)计算损失,并通过反向传播更新参数。
-
随着训练进行,隐藏状态能够捕捉评论中关键的情感信息,从而帮助正确分类整个评论。
三、关于情感分类的例子进一步理解
假设我们的任务是根据一句话判断情感(正面或负面)。我们用一个简单的 RNN 模型来处理这个任务,假设类别有两种:正面(1)和负面(0)。
1. 输入序列
例如,一句评论为:“这部电影真棒!”
在实际中,我们会先把这句话转换成一系列词向量(例如通过词嵌入)。假设转换后得到的输入序列为:
x(1), x(2), x(3), …, x(T)
其中 T 是句子中的单词数。
2. 隐藏状态的更新
RNN 的隐藏状态更新公式一般为:
其中 f 是激活函数(如 tanh 或 ReLU)。
-
在 t=1 时,h(1) 只依赖于 x(1);
-
在 t=2 时,h(2) 不仅取决于 x(2) ,也依赖于 h(1);
-
如此递归,直到 t=T 时,我们得到最终的隐藏状态 h(T)。
这个 h(T) 就包含了整句话的上下文信息,是对整个句子的一种抽象表示。
3. 全连接层映射
接下来,将最终隐藏状态 h(T) 传入全连接层。假设全连接层的权重为 Why 和偏置为 by:
这里 z 是一个向量,其维度等于类别数(本例中为 2),表示对每个类别的“打分”。
4. Softmax 激活
为了将打分转换成概率,我们使用 softmax 函数:
得到正面和负面的概率分布。最终,选择概率较高的类别作为模型预测的情感标签。
具体数值例子
假设经过 RNN 处理后,最终隐藏状态为:
全连接层参数设定为:
计算输出打分 z:
接下来通过 softmax 计算概率:
计算数值:
因此,
这表示模型预测为类别 1(正面情感)的概率为 86%,即最终分类结果为正面。
这整个过程说明了如何:
-
利用 RNN 对输入序列进行时间递归处理,将整句的信息整合在最终隐藏状态 h(T) 中;
-
通过全连接层将 h(T) 映射到类别空间,生成类别打分;
-
经过 softmax 处理,将打分转换为概率,从而输出最终的类别标签。
这种“序列到类别”的模式在文本分类、情感分析、语音命令识别等任务中非常常见,它的核心思想就是将整个序列压缩成一个全局的表示,再进行分类决策。