literature-review's People
literature-review's Issues
A Joint Model of Intent Determination and Slot Filling for Spoken Language Understanding @ IJCAI. 2016
Motivation and Idea
- 基于意图和语义槽的相关性,意图识别和槽填充可以使用共同的模型,一个任务的信息可以被另一个利用,相互提升
- 每一个时间步由GRU去表征并预测每个词的语义标签
- MaxPooling层用于捕捉全局特征,预测用户的意图
- 特征表示被两个任务共用,模型的训练使用一个综合的损失函数
关于模型
- 输入是文本$S:W_1,...,W_T$,两种输出:预测的槽标签序列$\hat{l^s}$和意图标签$\hat{l^u}$
Embeddings
- word window
$x_t^d = [e(w_{t-d}),...,e(w_t),...,e(w_{t+d})]$ ,大小为$2d+1$ - 命名实体窗口,与词窗口类似,大小为$2c+1$
- 在$t$时刻的输入可以表示为$x_t^d = [e(w_{t-d}),...,e(w_t),...,e(w_{t+d}),e'(n_{t-c}),...,e'(n_t),...,e'(n_{t+c})]$
- 在训练过程中被fine-tuned
Recurrent Hidden Layers
$h_t = \tanh(Wx_t+Uh_{t-1})$ - 这里使用GRU进行双向传播
$$
\overrightarrow{h}t = \overrightarrow{GRU}(x_t, \overrightarrow{h}{t-1})\
\overleftarrow{h}t = \overleftarrow{GRU}(x_t, \overleftarrow{h}{t+1})\
\overleftrightarrow{h}_t = [\overrightarrow{h}_t, \overleftarrow{h}_t]
$$
Task Specific Layers
- 使用max-pooling层得到整个句子的向量表示$h^u = \displaystyle\max_{i=1}^T\overleftrightarrow{h}_t$
- max操作是对向量的每个元素进行的
- 输出:
$$
y_t^s = softmax(W^s\overleftrightarrow{h}_t+b^s)\
y^u = softmax(W^uh^u+b^u)
$$ - 对槽填充的评估标准
- 过渡分数(?)$A_{ij}$用于评估标签从$i$转变到$j$的概率
- 对于一个标签序列$l_{1:T}$,句子级别的分数是每个时间步标签转移和预测值分数的和:$\displaystyle s(l_{1:T},\theta) = \sum_{t=1}^T(A_{l_{t-1}l_t}+y_t^s(l_t))$,$l_0$被设为一个额外的标签BOS
- 最终的序列$\displaystyle\hat{l^s} = \argmax_{l_s\in L}s(l^s,\theta)$
训练
- 参数有$\theta = {E,E',\overrightarrow{GRU_{\theta}}, \overleftarrow{GRU_{\theta}},W^s,b^s,W^u,b^u,A}$
- 意图检测的损失函数是交叉熵函数,槽填充的max-margin损失函数
$$
\Delta(l^s,\hat{l}^s) = \displaystyle\sum_{t=1}^T1{l_t^s\neq\hat{l_t^s}}$$ - 槽填充的损失函数是
$$\displaystyle\mathcal{L}^s(\theta) = \max(0,s(\hat{l^s},\theta)+\Delta(l^s,\hat{l}^s)-s(l^s,\theta))
$$ - 最小化损失函数
$$
\mathcal{L}(\theta) = \sum_{(l^s,l^u,S)\in\mathcal{D}}(\alpha\mathcal{L}^s(\theta)+\mathcal{L}^u(\theta))
$$
实验
关于数据集
- airline travel information system (ATIS) corpus
- 18个意图类别,63个语义槽类别
- 有命名实体特征
- 在此数据集上做了两次实验:有和没有命名实体特征
- CQUD数据集
- 从百度知道收集了问题,人工标注
- 43个意图类别,20个语义槽类别
评估
- 意图识别:准确率
- 槽填充:F1-score
Baselines
将模型与SVM, CRF, RNN, R-CRF, Boosting, Sentence simplification, RecRNN比较
实验细节
- 预处理文本
- 将只出现一次的词改成,将数字改成“DIGIT*(数字位数)”
- 根据选出的一部分数据所得的平均分数选取超参数,模型在训练集所有数据上训练
- 用GloVe训练词向量,两个数据集的词向量维度都是200维,ATIS命名实体的维度是40,文本窗口d=c=1,双向隐层的维度都是300维,随机梯度下降,学习率初始化为0.01
结果与分析
- W,N,S表示词法的、命名实体和语法特征,W是CQUD集中的中文特征
- 在槽填充任务中:CRF表现优于SVM表明在句级别的优化中,CRF适合序列化标注的任务;RNN表现优于CRF因为RNN长于捕捉长期依赖;R-CRF结合了RNN和CRF,达到了最好的表现
- 意图识别任务中,sentence simplification达到了最好的效果,有一个独立分析单元去提取句子的关键词,两个独立的分类器分别去执行两个任务
- 使用了本文提出的模型,ATIS数据集的任务提升了1.34%的F1-score,槽填充任务的表现得到了提高;命名实体对意图识别任务的帮助并不大,但是与槽标签的高相关性使槽填充任务提升很多;由于RNN对序列建模的能力,综合的损失函数对两个任务权重的调节,本文模型明显超越了以前的RecNN模型
- CQUD数据集上的得分低于ATIS数据集,是因为CQUD难度更大,意图更多样,语义槽的表达包含更多的信息,且输入是中文字符
联合模型与分离模型的比较
- 分离式模型中先训练RNN模型预测意图,预测出的意图作为训练RNN进行槽填充的额外特征
- 联合式模型在速度上具有优势,表现优于分离式模型
- 联合是模型的损失函数中$\alpha$的设置对任务的表现有影响,并不总是权重越大表现越好,这也许是因为权重过大导致过快收敛,参数就不是最优的
Neural Belief Tracker: Data-Driven Dialogue State Tracking@ACL 2017
引言
- 对话系统的对话状态跟踪以用户输入更新系统内部的对话状态表示(下游对话处理器用于决定行为的概率分布)
- 对话状态跟踪取决于用户表述中一些词本身的出现,词汇的丰富性、上下文的多样性、语音识别输出中的噪音使之成为一个非检索类的任务
- 传统方法会使用分离的语言理解模型,但训练这样的模型这需要针对特定领域的标注
- 也有将语言理解模型和状态跟踪结合起来的模型,但这样的模型依赖于人工构造的语义字典,对于规模更大的或多领域对话就不适用了;词法丰富的语言给这个模型构成了更大的挑战
- 本文的模型NBT完全从预训练好的词向量中学习,以提高状态跟踪模型对语言的理解能力
背景
- 传统的对话系统管道模型:使用自然语言理解解码器找出语音识别出的与剧中的槽值对,下游状态跟踪器将其与此前的上下文结合以更新对话状态;鲁棒性和精确性仍可提高
- 联合型语言理解模型/对话状态跟踪模型:将语音识别的输出作为输入,将对话状态作为输出;槽值对被一般标签替代,在执行对话状态更新时,模型遍历每一个槽值对,依次做二分判别
- NBT旨在解决以前的状态跟踪器的限制因素
Neural Belief Tracker
- 输入是本轮对话用户输入之前系统的行为、用户的语言表达、一个单独的候选槽值对
- 在执行对话状态更新时,模型遍历每一个槽值对,找出哪一个是用户表达的
- 语言表达的向量表示(r),候选槽值对(c),系统行为(t_q,t_s,t_v),表示中间结果的向量(d_r,d_c,d)
表征学习
- 提升词向量对语义相似性的表征对于对话状态跟踪是至关重要的,所以使用Paragram-SL999词向量
- 测试的时候当遇到没见过的词时,会根据其在词向量空间中的位置分配槽值
- 两种模型用于表述u的向量化表示
- 语义解码
- 语义表示r和候选槽值对c直接和语义解码模型交互,以确定用户的表述和槽值对是否很好地对应
- 将槽名c_s和槽值c_v相加再经过sigmoid函数得到同样大小的槽值对表示c,d是r和c的点积,点积可以很好的衡量两者的相似性
- 上下文建模
- 解码器到目前为止不能提取意图. 要理解一个输入序列,需要结合上下文, 与当前最相关的是上一个系统表述, 其中系统可能已经执行过两个行为中的一个:
- system request:系统对用户提出关于特定槽的问题, 并对特定槽值进行修改
- system confirm:系统提问用户某槽对应的是不是某值,并更新对话状态
- 决定当前最后一个状态的系统状态, 可以将上下文建模与NBT结合起来. t_q是系统问题的词向量表示, (t_s, t_v)是系统确认里槽值的向量表示. 计算系统行为、候选槽值对(c_s,c_v)和用户表述表示的相似度.系统应当考虑表述、候选槽值对和系统提供的槽值对三者的交互. 当且仅当后两者相同时在做二分决策时才需要考虑用户表述的正负倾向
对话状态更新机制
- 对话系统中, 对状态的更新依赖自然语言识别的输出, 尽管识别已经有了很大提升, 但是由于对话系统处在有噪音的环境下, 故需要利用不完美的语音识别系统.
- 本文定义了一个基于规则的对话状态更新机制, 被提供语音识别的N个可能输出, h_i^t是语音识别在t时刻的第i个可能输出, sys^t是t时刻的系统输出, t时刻给定语音识别结果和t-1时刻系统输出, 对话状态为某槽值对的可能性是对给定t时刻识别结果的第i种可能和t-1时刻系统输出的概率平均,然后将其与前t-1轮的概率结合起来, 可以更新对话状态. t时刻的对话状态就是给定1到t时刻用户输入和1到t-1时刻系统输出, 概率大于0.5的槽值对.
实验
- 实验数据集:有关查找餐厅的对话语料, 对话状态的槽有食物、地点和价格, 当系统推荐一家餐厅时, 用户最多可以询问有关餐厅的八条信息
- DSTC2: 使用了对话文本、语音识别输出和轮级语义标签, 在对话文本上训练NBT模型,在语音识别的输出上测试模型
- WOZ 2.0: 用户是打字而不是说话, 因此可以更好地评价模型的语义理解能力, 且对语音识别错误的鲁棒性更强
- 训练样本: 针对两个数据集是两个独立的实验, 遍历训练集所有表述, 对每一个槽值对生成一个样例, 样例包括对话文本、上下文和候选槽值对
- 评估: 从两方面评估模型
- 目的:用户的所有搜索目标限制都被正确定义的占比
- 要求:用户的所有对信息的需求都被正确定义的占比
- 分别评估基于DNN和CNN的NBT模型;Adam优化器;交叉上损失函数;保持预训练词向量不变以应对在测试集里遇到没见过的词;针对不同的槽训练独立的模型;由于负样本占比过大, 故在每个batch里保持一定数量的正样本
- 针对以上两个数据集,本文分别将NBT与以下系统比较
- 一个应用了知名的、完备的,基于delexicalisation的模型(delexicalisation是指将句子中的slot-value用特定的token来替换, 相反的, lexicalisation是指将句子中的特定token还原回具体的value)
- 应用同样的模型和一个针对任务的语义字典的系统
- 以上两个系统都将定义的意图映射到one-hot的n-gram特征上,这说明预训练好的向量不能直接应用到这些模型上
实验结果
- NBT在评估标准中的两方面都超过了其他的模型,NBT可以处理语义关系(否则在语义字典中被编码)
- 对比NBT在两个数据集上的表现,可以分析它的能力. 相比之下,NBT在WOZ 2.0上的提升比在DSTC2要大,这证实了我们的猜想:NBT对于语言的理解能力对于含有更长的句子、更大的词典、没有语音识别错误的数据集是至关重要的
词向量空间的重要性
- NBT模型利用语义关系进行预训练词向量嵌入,生成高质量的中间过程表示. NBT-CNN模型分别使用了:1. 随机初始化的词向量;2. GloVe词向量;3. 基于语义的词向量SL999
- 使用SL999向量的模型比使用其他词向量的表现更好
- 推测是因为distributional模型(共现在同一文本区域中词(如同一语句)相关,在语料中的共现语句越多,越相关)始终保持相关,但是反义词靠得很近,抵消了这个词向量空间中的有用的语义上下文(?)
结论
NBT模型提供了自然语言理解和对话状态追踪二者的又是,而不依赖于人工于一标注来达到最好的表现. 当理解词向量的水平提高时,NBT模型的表现会提升. 最后,semantic specialisation对下游的任务也有很大的帮助.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.