基于层次化注意力网络的文档分类算法
题目描述
文档分类任务需对长文本(如新闻文章、学术论文)进行类别划分。传统方法直接对全文编码,但长文本包含冗余信息,且不同词、句对分类的贡献不同。层次化注意力网络(Hierarchical Attention Network, HAN)通过词级-句级双层注意力机制,动态捕捉关键内容,提升分类性能。
解题过程
1. 问题建模
- 输入:文档 → 分割为句子序列 → 每个句子分割为词序列。
- 输出:文档类别标签。
- 核心思想:
- 层次化编码:先对词编码生成句向量,再对句向量编码生成文档向量。
- 注意力机制:在词级和句级分别计算注意力权重,突出重要成分。
2. 网络结构详解
步骤1:词编码器(Word Encoder)
- 对每个句子中的词序列 \(\{w_{it}\}_{t=1}^L\)(\(i\) 为句子索引,\(t\) 为词索引),通过嵌入层获取词向量。
- 使用双向GRU(Bi-GRU)编码上下文信息:
\[ \overrightarrow{h_{it}} = \overrightarrow{\text{GRU}}(w_{it}), \quad \overleftarrow{h_{it}} = \overleftarrow{\text{GRU}}(w_{it}) \]
- 拼接双向隐状态得词级表征:\(h_{it} = [\overrightarrow{h_{it}}; \overleftarrow{h_{it}}]\)。
步骤2:词级注意力(Word-Level Attention)
- 目标:提取句子中关键词,生成句向量 \(s_i\)。
- 计算词注意力权重:
\[ u_{it} = \tanh(W_w h_{it} + b_w), \quad \alpha_{it} = \frac{\exp(u_{it}^\top u_w)}{\sum_t \exp(u_{it}^\top u_w)} \]
- \(W_w, b_w\) 为可训练参数,\(u_w\) 为随机初始化的词级上下文向量。
- 加权求和得句向量:
\[ s_i = \sum_t \alpha_{it} h_{it} \]
步骤3:句编码器(Sentence Encoder)
- 将句向量序列 \(\{s_i\}_{i=1}^M\) 输入另一双向GRU:
\[ \overrightarrow{h_i} = \overrightarrow{\text{GRU}}(s_i), \quad \overleftarrow{h_i} = \overleftarrow{\text{GRU}}(s_i) \]
- 拼接得句级隐状态:\(h_i = [\overrightarrow{h_i}; \overleftarrow{h_i}]\)。
步骤4:句级注意力(Sentence-Level Attention)
- 计算句注意力权重,突出关键句子:
\[ u_i = \tanh(W_s h_i + b_s), \quad \alpha_i = \frac{\exp(u_i^\top u_s)}{\sum_i \exp(u_i^\top u_s)} \]
- \(W_s, b_s\) 为可训练参数,\(u_s\) 为句级上下文向量。
- 加权求和得文档向量:
\[ v = \sum_i \alpha_i h_i \]
步骤5:分类层
- 将文档向量 \(v\) 输入全连接层与Softmax:
\[ p = \text{Softmax}(W_c v + b_c) \]
- 损失函数使用交叉熵损失,联合优化所有参数。
3. 关键优势
- 可解释性:注意力权重可视化关键词句(如高权重词对应类别相关术语)。
- 长文本处理:通过层次化结构避免信息稀释。
4. 应用场景
- 新闻主题分类、医学文献分类、情感分析(长评论)等。
通过以上步骤,HAN有效结合层次化结构与注意力机制,显著提升长文档分类的准确性与可解释性。