基于多层感知机(Multi-Layer Perceptron, MLP)的文本分类算法详解
算法描述
多层感知机(MLP)是一种经典的前馈神经网络,由输入层、至少一个隐藏层和输出层构成。在文本分类任务中,MLP首先将文本表示为固定维度的向量(如词袋、TF-IDF或词嵌入),然后将该向量输入网络,通过多层非线性变换学习特征,最终在输出层通过Softmax等函数预测类别标签。MLP因结构简单、易于训练,常作为文本分类的基线模型或深层网络的基础组件。
解题过程
步骤1:文本表示(输入层)
目标:将原始文本转换为数值向量,作为MLP的输入。
- 特征提取:通常采用以下方法:
- 词袋模型(BoW):统计文档中每个词的出现次数,形成高维稀疏向量。
- TF-IDF:在BoW基础上加权,降低高频常见词的权重。
- 词嵌入平均:使用预训练词向量(如Word2Vec、GloVe)对文档中所有词取平均,得到稠密向量。
- 向量维度:假设特征维度为 \(d\),则输入向量记为 \(\mathbf{x} \in \mathbb{R}^d\)。
示例:
文档“I love natural language processing”经过BoW处理后可能表示为 \(\mathbf{x} = [1, 1, 1, 1, 0, \dots]\)(对应词汇表中的词是否存在)。
步骤2:前向传播(隐藏层与输出层)
目标:通过多层非线性变换,将输入映射到类别空间。
- 单隐藏层结构:
- 输入层到隐藏层:
\[ \mathbf{h} = \sigma(\mathbf{W}_1 \mathbf{x} + \mathbf{b}_1) \]
其中:
- $ \mathbf{W}_1 \in \mathbb{R}^{h \times d} $ 是权重矩阵,$ h $ 为隐藏层神经元数。
- $ \mathbf{b}_1 \in \mathbb{R}^{h} $ 是偏置向量。
- $ \sigma(\cdot) $ 是激活函数(如ReLU、Sigmoid),引入非线性。
- 隐藏层到输出层:
\[ \mathbf{z} = \mathbf{W}_2 \mathbf{h} + \mathbf{b}_2 \]
其中 $ \mathbf{W}_2 \in \mathbb{R}^{c \times h} $,$ c $ 为类别数,$ \mathbf{b}_2 \in \mathbb{R}^{c} $。
- 多隐藏层扩展:可堆叠多个隐藏层,每层计算为 \(\mathbf{h}^{(l)} = \sigma(\mathbf{W}_l \mathbf{h}^{(l-1)} + \mathbf{b}_l)\),其中 \(\mathbf{h}^{(0)} = \mathbf{x}\)。
- 输出层激活:
- 使用Softmax函数将 \(\mathbf{z}\) 转换为类别概率分布:
\[ \hat{\mathbf{y}}_i = \frac{\exp(z_i)}{\sum_{j=1}^{c} \exp(z_j)}, \quad i = 1, \dots, c \]
其中 $ \hat{\mathbf{y}}_i $ 表示预测为第 $ i $ 类的概率。
步骤3:损失计算与优化
目标:通过最小化预测误差训练网络参数。
- 损失函数:采用交叉熵损失(Cross-Entropy Loss):
\[ \mathcal{L} = -\sum_{i=1}^{c} y_i \log(\hat{\mathbf{y}}_i) \]
其中 \(y_i\) 是真实标签的 one-hot 编码(第 \(i\) 类为1,其余为0)。
2. 反向传播:
- 计算损失对每层参数的梯度(链式法则):
- 输出层梯度:\(\frac{\partial \mathcal{L}}{\partial \mathbf{z}} = \hat{\mathbf{y}} - \mathbf{y}\)。
- 隐藏层梯度:根据 \(\frac{\partial \mathcal{L}}{\partial \mathbf{h}} = \mathbf{W}_2^T \frac{\partial \mathcal{L}}{\partial \mathbf{z}} \odot \sigma'(\mathbf{h})\) 逐层回传(\(\odot\) 为逐元素乘)。
- 更新参数(梯度下降):
\[ \mathbf{W} \leftarrow \mathbf{W} - \eta \frac{\partial \mathcal{L}}{\partial \mathbf{W}}, \quad \mathbf{b} \leftarrow \mathbf{b} - \eta \frac{\partial \mathcal{L}}{\partial \mathbf{b}} \]
其中 $ \eta $ 为学习率。
步骤4:正则化与技巧
目标:防止过拟合,提升泛化能力。
- 丢弃法(Dropout):训练时随机将隐藏层部分神经元输出置零,减少神经元间依赖。
- 权重衰减(L2正则化):在损失中加入参数范数惩罚项 \(\frac{\lambda}{2} \|\mathbf{W}\|^2\),控制模型复杂度。
- 批归一化(Batch Normalization):对隐藏层输入归一化,加速训练并稳定梯度。
步骤5:预测与评估
目标:对新文本进行分类,评估模型性能。
- 预测:将测试文本向量输入训练好的MLP,取输出层概率最大对应的类别作为预测标签。
- 评估指标:常用准确率、精确率、召回率、F1值等。
总结
MLP通过多层非线性变换学习文本的分布式表示,实现端到端的分类。其优势在于结构简单、计算高效,适合中小规模文本数据;但缺点是对序列结构建模能力有限(如词序信息),常需结合词嵌入或更复杂的网络(如CNN、RNN)提升性能。在实际应用中,MLP可作为快速基线模型,或与其它技术(如注意力机制)结合增强表达能力。