句子分类:RNN架构、评估指标与AllenNLP训练管道
立即解锁
发布时间: 2025-09-01 00:44:05 阅读量: 9 订阅数: 20 AIGC 


实战自然语言处理
### 句子分类:RNN架构、评估指标与AllenNLP训练管道
#### 1. 消失梯度问题与RNN架构
在深度学习中,嵌套函数调用在反向传播损失时会出现类似“传话游戏”的情况。当消息从最外层函数传递到最内层函数时,由于要经过许多层,消息会变得微弱模糊,或者因误解而变得强烈扭曲,导致内层函数难以判断自己的错误。这种现象在深度学习文献中被称为消失梯度问题。
梯度是一个数学术语,对应于每个函数从下一个函数接收的消息信号,该信号表明它们应如何改进其处理过程(如何更改其魔法常数)。从最终函数(即损失函数)反向传递消息的过程被称为反向传播。
由于消失梯度问题,简单的循环神经网络(RNN)难以训练,如今在实践中很少使用。为了解决这个问题,出现了长短期记忆网络(LSTM)和门控循环单元(GRU)这两种RNN架构。
#### 2. 长短期记忆网络(LSTM)
LSTM是一种基于特殊见解提出的RNN单元。它不是简单地传递状态,而是共享一个“记忆”,每个单元可以从中移除旧信息和/或添加新信息,类似于制造工厂中的装配线。
LSTM RNN使用以下函数来更新状态:
```python
def update_lstm(state, word):
cell_state, hidden_state = state
cell_state *= forget(hidden_state, word)
cell_state += add(hidden_state, word)
hidden_state = update_hidden(hidden_state, cell_state, word)
return (cell_state, hidden_state)
```
LSTM的状态由两部分组成:
- 单元状态(cell state):即“记忆”部分。
- 隐藏状态(hidden state):即“心理表征”部分。
具体来说:
- `forget()`函数返回一个介于0和1之间的值,乘以这个值意味着从单元状态中擦除旧记忆。擦除的程度由隐藏状态和输入单词决定。通过乘以介于0和1之间的值来控制信息流动的过程称为门控,LSTM是第一个使用这种门控机制的RNN架构。
- `add()`函数返回一个添加到记忆中的新值,该值同样由隐藏状态和输入单词决定。
- 最后,隐藏状态使用一个函数进行更新,该函数的值由先前的隐藏状态、更新后的记忆和输入单词计算得出。
由于LSTM具有在不同时间步保持不变的单元状态(除非被显式修改),因此它更容易训练,表现也相对较好。共享的“记忆”使得更容易确定哪个函数做了什么以及哪里出了问题,最外层函数的错误信号可以更直接地到达负责的函数。
#### 3. 门控循环单元(GRU)
GRU也是一种使用门控机制的RNN架构。其背后的理念与LSTM相似,但GRU只使用一组状态,而不是两部分。
GRU的更新函数如下:
```python
def update_gru(state, word):
new_state = update_hidden(state, word)
switch = get_switch(state, word)
state = switch * new_state + (1 - switch) * state
return state
```
GRU不擦除或更新记忆,而是使用一种切换机制。单元首先根据旧状态和输入计算新状态,然后计算一个介于0和1之间的`switch`值。根据`switch`的值在新状态和旧状态之间选择状态:
- 如果`switch`为0,旧状态保持不变。
- 如果`switch`为1,旧状态被新状态覆盖。
- 如果`switch`介于两者之间,状态将是两者的混合。
GRU的更新函数比LSTM简单,需要训练的参数(魔法常数)更少,因此训练速度比LSTM快。不过,对于所有应用来说,社区中并没有就哪种架构是最好的达成共识,通常需要将它们作为超参数进行不同配置的实验。
#### 4. 评估指标
在进行句子分类任务时,需要使用一些评估指标来衡量模型的性能。
##### 4.1 准确率(Accuracy)
准确率是所有评估指标中最简单的一个。在分类设置中,准确率是模型正确预测的实例比例。例如,如果有10封电子邮件,垃圾邮件过滤模型正确分类了8封,那么预测的准确率就是0.8,即80%。
然而,准确率有其局限性。当测试集不平衡时,准确率可能会产生误导。不平衡的数据集包含数量差异很大的多个类别标签。例如,在一个垃圾邮件过滤数据集中,如果90%是非垃圾邮件,10%是垃圾邮件,那么一个将所有邮件都标记为非垃圾邮件的愚蠢分类器也能达到90%的准确率。因此,在使用准确率作为指标时,最好与假设的愚蠢分类器(多数投票)作为基线进行比较。
##### 4.2 精确率(Precision)和召回率(Recall)
精确率、召回率和F值通常用于二元分类设置。二元分类任务的目标是从另一个类别(称为负类)中识别出一个类别(称为正类)。在垃圾邮件过滤设置中,正类是垃圾邮件,负类是非垃圾邮件。
| 类别 | 含义 |
| ---- | ---- |
| 真正例(True Positives, TP) | 被预测为正类且确实属于正类的实例 |
| 假正例(False Positives, FP) | 被预测为正类但实际上
0
0
复制全文
相关推荐









