0%

SLU论文笔记(?-2019)

A Bi-model based RNN Semantic Frame Parsing Model for Intent Detection and Slot Filling

  • 论文笔记
  • 对 ID 和 SF 分别使用了一个模型,但是共享了两个模型的隐藏状态。论文中描述到,以前的研究经常把 ID 和 SF 当做两个任务来看,这次这篇论文将这两个任务交互起来当做一个任务看待。但是我认为 joint model 这种做法已经是将两个任务当做一个看了,毕竟它们共享了一个模型提取的信息,只是在解码时使用不同的模型。
    • 对于解码而言,论文分别使用了 encoder-decoder 结构和纯粹的 encoder 结构,最后是 encoder-decoder 性能略高。

A Self-Attentive Model with Gate Mechanism for Spoken Language Understanding

大多数现存的联合学习模型仅考虑表面的参数共享,而不是语义级的。本文使用新的 self-attentive 模型和 gate mechanism(门控机制)全面地利用槽位与意图之间的语义关联。

  • 图 1 显示了我们模型的总览。第一层将输入序列映射为向量,向量由字级别和字母级别(由 CNN 获得)的向量拼接而成,这个合并的向量将用于接下来的层。在序列标注中,上下文信息在很多场景下都很有用,本文使用一种方法在每个时间步使用上下文特征。具体来说,使用 self-attention 获取上下文向量,然后 BiRNN 使用这个向量产生隐藏状态。最后一步使用意图增强(intent-augmented)的门控机制去匹配槽位标签。最终,在门控机制之上再加上 softmax 层,用于分类。
    • Embedding Layer:我们首先将单词 \(w = (w_1, w_2, \cdots, w_T)\) 转换为词级别的嵌入 \(E^w = [e^w_1, e^w_2, \cdots, e^w_T]\) 和字母级别的嵌入 \(E^c = [e^c_1, e^c_2, \cdots, e^c_T]\)。尽管 GloVe 和 Word2vec 词向量已经能够满足很多 NLP 任务,但是字母级别的信息能够提供一些更细微的知识(例如语素)。一些语素相关的词在向量空间中更接近,这对识别槽位标签很有帮助。同时字母级别的词向量也有利于缓解 OOV 问题。本文关注 Kim et al., 2016 使用的 character-aware convolution layer。 ……
    • Self-Attention
    • BiLSTM
    • Intent-Augmented Gating Mechanism
    • Task Learning

Attention-Based Recurrent Neural Network Models for Joint Intent Detection and Slot Filling

  • 使用 seq2seq + attention 技术
  • 对于 ID 任务来说,提高了 0.56% 的性能,对于 SF 任务来说,提高了 0.23% 的性能。emmmm,attention 对序列标注可能没多大帮助,可能 seq2seq 模型都是多余的,但是语句分类来说可能有一点点帮助。

Encoder-decoder with focus-mechanism for sequence labelling based spoken language understanding

  • 此论文专注于 SLU 中的 slot-filling 任务,并没有训练意图检测的模型
  • 使用 encoder-decoder 结构,其中 encoder 是 Bi-LSTM,decoder 是 uni-LSTM
    • 结合了 attention 机制,发现有局限性
      • 序列标注任务中的输入和输出是对齐的,但是在执行 attention 时,却取了所有输入单词的加权和
      • 单词的对齐(alignment)可由 attention 机制学习到,但是在序列标记任务中,很难拟合有限的标注数据(与此不同的是机器翻译更容易获得成对数据,如中英文翻译,而序列标注任务所需的数据非常稀少,且需要人工标注)。
    • 所以对 encoder-decoder 结构提出了一种新的 focus 机制
  • 首先使用 Bi-LSTM 编码,得到 \(h_i = [\overleftarrow{h_i}, \overrightarrow{h_i}], \, \overleftarrow{h_i} = f_l(\overleftarrow{h_{i+1}}, x_i), \, \overrightarrow{h_i} = f_r(\overrightarrow{h_{i-1}}, x_i)\)
  • 然后使用 uni-LSTM 进行解码,初始状态 \(s_0 = \overleftarrow{h_1}\),每个时间步都由 uni-LSTM 训练并产生隐藏状态 \(s_i\),同时每个时间步除了输入值(输入值是 label 组成的,即 IOB),还需要输入 Bi-LSTM 对应时间步的隐藏状态 \(h_i\)
    • focus mechanism 实际上就是把对应时间步的隐藏状态 \(h_i\) 输入给 decoder。。。也就是说把 attention 机制稍微改装了一下,当前时间步的 score 是 1,其余时间步是 0。
    • decoder 的隐藏状态计算方法是 \(s_i = f_d(s_{t-1}, y_{t-1}, c_t)\),其中 \(s_{t-1}\) 代表上一个时间步的隐藏状态,\(y_{t-1}\) 代表输入值,\(c_t\) 是上下文信息,其实就等于 \(h_i\)
    • f 函数均指 LSTM units function

A Joint Model of Intent Determination and Slot Filling for Spoken Language Understanding

  1. EmbeddingsMesnil et al., 2015 发现使用一个 context word window 可以提高 RNN 在 SF 上的性能。于是 Zhang and Wang(2016) 利用此方法,对 ID 以及 SF 训练了一个联合模型。具体做法是:获得词向量 \(e(w_t)\) 后,令 \(x^d_t = [e(w_{t-d}), \cdots, e(w_t), \cdots, e(w_{t+d})]\) 重新表示词向量,其中 \(e(w_t)\) 代表单词 \(w_t\) 的词向量,d 代表窗口半径。为了使模型获得更好的性能,在 \(x^d_t\) 中还拼接了单词所对应的命名体词向量,比如“New York”的命名体为“B-city I-City”,最终 \(x^d_t = [e(w_{t-d}), \cdots, e(w_t), \cdots, e(w_{t+d}), e\prime(n_{t-c}), \cdots, e\prime(n_t), \cdots, e\prime(n_{t+c})]\),其中 \(e\prime(n_t)\) 代表命名体 \(n_t\) 的词向量,c 代表窗口半径,矩阵被随机初始化。
    • 小声逼逼,这不是 contextual word embedding 吗?这论文 2015 年的,比 BERT 之流早了不知道多少。
    • 博主注:单词的命名体在真实场景下似乎没那么容易获取。论文中,在结果对比表格中,W 代表词汇特征,N 代表命名体特征。最终发现 W+N 特征的性能更高,但是我还是选取 W 特征作为该论文的指标。同时在论文《A Bi-model based RNN Semantic Frame Parsing Model for Intent Detection and Slot Filling》中也是使用 W 特征作为指标。
  2. Recurrent Hidden Layers:使用 Bi-GRU 提取句子信息
  3. Task Specific Layers:解码层(两个)
    • for SF
    • for ID