专栏名称: AI开发者
AI研习社,雷锋网旗下关注AI开发技巧及技术教程订阅号。
目录
相关文章推荐
爱可可-爱生活  ·  “如何用ChatGPT做投资分析”提供了一系 ... ·  昨天  
宝玉xp  ·  回复@yaonanli:借助AI开发训练不足 ... ·  2 天前  
爱可可-爱生活  ·  为什么“AI ... ·  4 天前  
宝玉xp  ·  转发微博-20250101094114 ·  4 天前  
51好读  ›  专栏  ›  AI开发者

博客 | 任务型对话系统公式建模&&实例说明

AI开发者  · 公众号  · AI  · 2018-11-18 18:29

正文

本文原载于微信公众号:AI部落联盟(AI_Tribe),AI研习社获授权转载,欢迎关注 AI部落联盟 微信公众号、知乎专栏 AI部落、及 AI研习社博客专栏


任务型对话的框架图: 

SLU:把自然语言转换成机器可以处理的领域(domain)/意图(intention) 和槽植对(slot-value pairs),他的输入是代表用户输入Utterance的Xn,输出是Un。

Xn就是用户说的话,一般是几个到几十个词。

Un=(In, Zn), In是intention,Zn是槽植对。

In=f(Xn) , 就是意图分类,一般分类方法都行,也可采用DBN、DCN等方法。

Zn=f(Xn),Zn = {𝑧1,𝑧2,𝑧3…},是序列标准问题,传统的CRF、HMM都行,RNN、LSTM、GRU等也可以。

另外为了解决领域数据不足的问题,SLU还有很多迁移学习(Transfer Learning)方面的工作。比如实例迁移、模型适配、参数迁移、领域关系迁移等。


DST:作用是根据领域(domain)/意图(intention) 、曹植对(slot-value pairs)、之前的状态以及之前系统的Action等来追踪当前状态。它的输入是Un、An-1和Sn-1,输出是Sn。

S𝑛 = {Gn,Un,Hn},Gn是用户目标、Un同上、Hn是聊天的历史,Hn= {U0, A0, U1, A1, ... , U𝑛−1, A𝑛−1},S𝑛 =f(S𝑛−1,A𝑛−1,U𝑛)。

DST涉及到两方面内容:状态表示、状态追踪。具体方法和论文后续我会一一放出(其实早就整理好了,还在想用什么形式来出更容易理解,有好的建议的欢迎提出来)。

另外为了解决领域数据不足的问题,DST还有很多迁移学习(Transfer Learning)方面的工作。比如基于特征的迁移学习、基于模型的迁移学习等。


DPL( 也叫DPO)基于当前状态(state)决定系统需要采取action。它的输入是Sn,输出是An。

S𝑛 = {Gn,Un,Hn},An是系统的Action,A𝑛 ={Dn, {Ai, Vi}},Dn是对话类型,Ai、Vi是第i轮对话的attribute和其value。DST一般会建模成强化学习或深度强化学习(从不同维度区分的话有非常多的变种,后面一一介绍)。

另外为了解决领域数据不足的问题,DPL还有很多迁移学习(Transfer Learning)方面的工作。比如线性模型迁移学习、高斯过程迁移学习、BCM迁移学习等。


NLG:把系统的Action转换成用Yn表示的自然语言形式的系统response。它的输入是An,输出是Yn。NLG方法非常多,比如基于规则的、基于模板的、基于短语的、基于token的、基于句法树的( 变种也不少,不过大同小异,大多是trick层面的)、基于corpus的、基于神经网络的(变种很多,如RNN、RNN+CNN、RNN+LM、LSTM+SC等)、基于神经网络+句法树的等等,后续会一一介绍。

其中A𝑛 ={Dn, {Ai, Vi}},Yn = {y1,y2,y3…},yi是第i轮的系统回复(response)。

另外为了解决领域数据不足的问题,NLG还有很多迁移学习(Transfer Learning)方面的工作。比如线在 原始领域预训练然后在目标领域(Target domain)做fine-tuning、基于实例的迁移学习、基于参数的迁移学习等。


为了在抽象的建模的基础上加深理解,看个小例子:

𝑿1:I would like a cup of coffee.

𝒀1:What coffee would you like?

𝑿2:What coffee do you serve?

𝒀2:We serve Espresso, Americano, Latte, Mocha, etc.

𝑿3:I would like a cup of Latte.

𝒀3:Hot Latte or Iced Latte?

𝑿4:Hot Latte.

𝒀4:What cup size do you want?

𝑿5: Tall.


SLU:

输入:𝑿𝟑=“I would like a cup of Latte.”,

输出:U𝟑={L3, 𝒁3},其中L3: Intention=Order、𝒁3: {CoffeeType=Latte}


DST:

输入:

S2 ={G2, U2, H2}, 其中 :

G2= {CoffeeType=?, Size=?, Temp=?}

U2={Intention=Ask, {CoffeeType=?}}

H2 ={U1, A1}


A2={Action=Inform, {CoffeeType=Espresso, Americano, Latte, Mocha}}

U3 ={Intention=Order, {CoffeeType=Latte}}


输出:

S3 ={G3, U3, H3}, 其中 :

G3= {CoffeeType=Latte, Size=?, Temp=?}

U3={Intention=Order, {CoffeeType=Latte}}

H3 ={U1, A1, U2, A2}


DPL:

输入是S3,输出A3= {Action=Ask, {CoffeeType=Latte, Temp=?}} 


NLG:

输入A3,输出Y3=  "Hot Latte or Iced Latte?”。