diff --git a/DialogueSystem_study/DSTC.md b/DialogueSystem_study/DSTC.md deleted file mode 100644 index bbabaa4..0000000 --- a/DialogueSystem_study/DSTC.md +++ /dev/null @@ -1,7 +0,0 @@ -# 【关于 DSTC(Dialog System Technology Challenge) 】那些你不知道的事 - - - -## 参考 - -1. [一文看懂任务型对话系统中的状态追踪(DST)](https://zhuanlan.zhihu.com/p/51476362) diff --git a/DialogueSystem_study/DSTC/readme.md b/DialogueSystem_study/DSTC/readme.md new file mode 100644 index 0000000..588955a --- /dev/null +++ b/DialogueSystem_study/DSTC/readme.md @@ -0,0 +1,34 @@ +# 【关于 状态追踪(DST)】那些你不知道的事 + +> 笔者:杨夕 +> +> 项目地址:https://github.com/km1994/nlp_paper_study +> +> 个人介绍:大佬们好,我叫杨夕,该项目主要是本人在研读顶会论文和复现经典论文过程中,所见、所思、所想、所闻,可能存在一些理解错误,希望大佬们多多指正。 +> +> 致谢:感谢 [cstghitpku](https://www.zhihu.com/people/cangshengtage) 大佬 所写的文章 【一文看懂任务型对话系统中的状态追踪(DST)】(https://zhuanlan.zhihu.com/p/51476362),在学习该 文章时,边学习边总结重要信息。如有侵权,请通知本人删除博文! + +## 一、目录 + +- [【关于 状态追踪(DST)】那些你不知道的事](#关于-状态追踪dst那些你不知道的事) + - [一、目录](#一目录) + - [二、内容](#二内容) + - [什么是 DST中的状态建模和实例说明 ?](#什么是-dst中的状态建模和实例说明-) + - [参考](#参考) + + + +## 二、内容 + +### 什么是 DST中的状态建模和实例说明 ? + +何谓对话状态?其实状态St是一种包含0时刻到t时刻的对话历史、用户目标、意图和槽值对的数据结构,这种数据结构可以供DPL阶段学习策略(比如定机票时,是询问出发地还是确定订单?)并完成NLG阶段的回复。 + + + + + + +## 参考 + +1. [一文看懂任务型对话系统中的状态追踪(DST)](https://zhuanlan.zhihu.com/p/51476362) diff --git a/DialogueSystem_study/NLG/img/20200906153603.png b/DialogueSystem_study/NLG/img/20200906153603.png new file mode 100644 index 0000000..376a5d6 Binary files /dev/null and b/DialogueSystem_study/NLG/img/20200906153603.png differ diff --git a/DialogueSystem_study/NLG/img/20200906154001.png b/DialogueSystem_study/NLG/img/20200906154001.png new file mode 100644 index 0000000..789630e Binary files /dev/null and b/DialogueSystem_study/NLG/img/20200906154001.png differ diff --git a/DialogueSystem_study/NLG/img/20200906154551.png b/DialogueSystem_study/NLG/img/20200906154551.png new file mode 100644 index 0000000..b39ce73 Binary files /dev/null and b/DialogueSystem_study/NLG/img/20200906154551.png differ diff --git a/DialogueSystem_study/NLG/readme.md b/DialogueSystem_study/NLG/readme.md new file mode 100644 index 0000000..e64833e --- /dev/null +++ b/DialogueSystem_study/NLG/readme.md @@ -0,0 +1,78 @@ +# 【关于 NLG】那些你不知道的事 + +> 笔者:杨夕 +> +> 项目地址:https://github.com/km1994/nlp_paper_study +> +> 个人介绍:大佬们好,我叫杨夕,该项目主要是本人在研读顶会论文和复现经典论文过程中,所见、所思、所想、所闻,可能存在一些理解错误,希望大佬们多多指正。 +> +> 致谢:感谢 [cstghitpku](https://www.zhihu.com/people/cangshengtage) 大佬 所写的文章 【总结|对话系统中的自然语言生成技术(NLG)】(https://zhuanlan.zhihu.com/p/49197552),在学习该 文章时,边学习边总结重要信息。如有侵权,请通知本人删除博文! + +## 一、目录 + + +- [【关于 上下文LU】那些你不知道的事](#关于-上下文lu那些你不知道的事) + - [一、目录](#一目录) + - [二、内容](#二内容) + - [什么是上下文LU?](#什么是上下文lu) + + - [四、参考](#四参考) + +## 二、内容 + +### 什么是 NLG ? + +自然语言生成(NLG)是一种语言技术,其主要目的是构建能够“写”的软件系统的技术,即能够用汉语、英语等其他人类语言生成解释、摘要、叙述等。具体来说就是计算机的“编写语言”,它将结构化数据转换为文本,以人类语言表达。即能够根据一些关键信息及其在机器内部的表达形式,经过一个规划过程,来自动生成一段高质量的自然语言文本。NLG用于Email、手机短信,它可以为您自动创建答复;NLG用于图标说明时,可以根据公司数据自动生成图标说明。前段时间在一个有趣的用例中,美联社利用自然语言生成成功的从公司收益报表中生成了报告。这意味着他们不再需要人类消耗他们的时间和精力去解决这些问题。更重要的是,NLG一旦被完美设置就会自动生成数以千计的报告。 + +### NLG 的应用领域? + +- 应用领域 + - 摘要生成 + - VQA(视觉问答) + - 翻译 + - 写诗词 + - 写作文 + - 写新闻 + - NBA等赛事报道 + - 对话系统 + +### 对话系统划分? + +- 划分 + - 闲聊型 + - 任务型 + - 知识问答型 + - 推荐型 + +### 不同对话系统中 NLG 的特点? + +- 闲聊型对话中的NLG:**根据上下文进行意图识别、情感分析等,然后生成开放性回复**; +- 任务型对话中的NLG:在NLU(领域分类和意图识别、槽填充)、DST、DPL的基础上,根据学习到的策略来生成对话回复,一般回复包括澄清需求、引导用户、询问、确认、对话结束语等。 +- 知识问答型对话中的NLG:根据问句类型识别与分类、信息检索或文本匹配而生成用户需要的知识(知识、实体、片段等),这类回复相比单纯的信息检索一般用户体验会更好,因为一般信息检索还需要用户根据搜索结果自己找所需信息。 +- 推荐型对话系统中的NLG:根据用户的爱好来进行兴趣匹配以及候选推荐内容排序,然后生成给用户推荐的内容。 + +### NLG 发展史? + +![](img/20200906153603.png) + +### NLG 有哪些技术? + +### 传统方法【基于模版的NLG、基于树的NLG】 + +- 基于模版的NLG + - 介绍: 定义规则和模板,用于映射 自然语言; + - 问题:需要定义 大量 规则 和 模板 + +![](img/20200906154001.png) + +### 深度学习方法 + + +### 方法对比 + +![](img/20200906154551.png) + + +## 四、参考 + +1. [总结|对话系统中的自然语言生成技术(NLG)](https://zhuanlan.zhihu.com/p/49197552) diff --git a/DialogueSystem_study/contextLU/img/20200906144532.png b/DialogueSystem_study/contextLU/img/20200906144532.png new file mode 100644 index 0000000..5d15a82 Binary files /dev/null and b/DialogueSystem_study/contextLU/img/20200906144532.png differ diff --git a/DialogueSystem_study/contextLU/img/20200906144949.png b/DialogueSystem_study/contextLU/img/20200906144949.png new file mode 100644 index 0000000..bea9bb5 Binary files /dev/null and b/DialogueSystem_study/contextLU/img/20200906144949.png differ diff --git a/DialogueSystem_study/contextLU/img/20200906145823.png b/DialogueSystem_study/contextLU/img/20200906145823.png new file mode 100644 index 0000000..0778325 Binary files /dev/null and b/DialogueSystem_study/contextLU/img/20200906145823.png differ diff --git a/DialogueSystem_study/contextLU/img/20200906145850.png b/DialogueSystem_study/contextLU/img/20200906145850.png new file mode 100644 index 0000000..ca2281a Binary files /dev/null and b/DialogueSystem_study/contextLU/img/20200906145850.png differ diff --git a/DialogueSystem_study/contextLU/img/20200906145915.png b/DialogueSystem_study/contextLU/img/20200906145915.png new file mode 100644 index 0000000..75270ad Binary files /dev/null and b/DialogueSystem_study/contextLU/img/20200906145915.png differ diff --git a/DialogueSystem_study/contextLU/img/20200906150004.png b/DialogueSystem_study/contextLU/img/20200906150004.png new file mode 100644 index 0000000..c15a2ec Binary files /dev/null and b/DialogueSystem_study/contextLU/img/20200906150004.png differ diff --git a/DialogueSystem_study/contextLU/img/20200906150015.png b/DialogueSystem_study/contextLU/img/20200906150015.png new file mode 100644 index 0000000..b3742fd Binary files /dev/null and b/DialogueSystem_study/contextLU/img/20200906150015.png differ diff --git a/DialogueSystem_study/contextLU/img/20200906150548.png b/DialogueSystem_study/contextLU/img/20200906150548.png new file mode 100644 index 0000000..72724ea Binary files /dev/null and b/DialogueSystem_study/contextLU/img/20200906150548.png differ diff --git a/DialogueSystem_study/contextLU/img/20200906150641.png b/DialogueSystem_study/contextLU/img/20200906150641.png new file mode 100644 index 0000000..cb219d6 Binary files /dev/null and b/DialogueSystem_study/contextLU/img/20200906150641.png differ diff --git a/DialogueSystem_study/contextLU/img/20200906150716.png b/DialogueSystem_study/contextLU/img/20200906150716.png new file mode 100644 index 0000000..4d6c371 Binary files /dev/null and b/DialogueSystem_study/contextLU/img/20200906150716.png differ diff --git a/DialogueSystem_study/contextLU/img/20200906150843.png b/DialogueSystem_study/contextLU/img/20200906150843.png new file mode 100644 index 0000000..7fd2a88 Binary files /dev/null and b/DialogueSystem_study/contextLU/img/20200906150843.png differ diff --git a/DialogueSystem_study/contextLU/readme.md b/DialogueSystem_study/contextLU/readme.md index 4e15708..5a9dab4 100644 --- a/DialogueSystem_study/contextLU/readme.md +++ b/DialogueSystem_study/contextLU/readme.md @@ -10,9 +10,22 @@ ## 一、目录 -1. [什么是上下文LU?](#什么是上下文LU?) -2. [什么是结构化LU?](#什么是结构化LU?) +- [【关于 上下文LU】那些你不知道的事](#关于-上下文lu那些你不知道的事) + - [一、目录](#一目录) + - [二、内容](#二内容) + - [什么是上下文LU?](#什么是上下文lu) + - [上下文LU 的发展史?](#上下文lu-的发展史) + - [上下文LU 方法介绍](#上下文lu-方法介绍) + - [Context Sensitive Spoken Language Understanding using Role Dependent LSTM layers(Hori et al, 2015)](#context-sensitive-spoken-language-understanding-using-role-dependent-lstm-layershori-et-al-2015) + - [End-to-End Memory Networks with Knowledge Carryover for Multi-Turn Spoken Language Understanding(Chen et al., 2016)](#end-to-end-memory-networks-with-knowledge-carryover-for-multi-turn-spoken-language-understandingchen-et-al-2016) + - [Sequential Dialogue Context Modeling for Spoken Language Understanding(Bapna et.al., SIGDIAL 2017)](#sequential-dialogue-context-modeling-for-spoken-language-understandingbapna-etal-sigdial-2017) + - [什么是结构化LU?](#什么是结构化lu) + - [结构化LU 的发展史?](#结构化lu-的发展史) + - [结构化LU 方法介绍](#结构化lu-方法介绍) + - [Knowledge as a Teacher: Knowledge-Guided Structural Attention Networks(Chen et al., 2016)](#knowledge-as-a-teacher-knowledge-guided-structural-attention-networkschen-et-al-2016) + - [SLU各方法的对比](#slu各方法的对比) + - [四、参考](#四参考) ## 二、内容 @@ -27,15 +40,82 @@ ![](img/20200904222146.png) - +### 上下文LU 的发展史? ![](img/20200904213257.png) +### 上下文LU 方法介绍 + +#### [Context Sensitive Spoken Language Understanding using Role Dependent LSTM layers(Hori et al, 2015)](https://www.merl.com/publications/docs/TR2015-134.pdf) + +- 介绍: + - 基于Seq2Seq模型对上下文建模,一次输入一个词,每句结束时输出标签; + - 具有对话者角色相关的LSTM层,并使用角色状态控制门来决定角色是不是active,而且角色状态随时间而线性传播,agent和client的角色也被加以区分 +- 优点:对上下文比较敏感,能解决多轮对话的歧义问题 + +![](img/20200906144532.png) + +#### [End-to-End Memory Networks with Knowledge Carryover for Multi-Turn Spoken Language Understanding(Chen et al., 2016)](https://www.microsoft.com/en-us/research/wp-content/uploads/2016/06/IS16_ContextualSLU.pdf) + +- 类型: + - 基于端到端的记忆网络携带Knowledge来做多轮对话中的上下文理解,将RNN和Memory Networks结合起来应用于SLU模块; +- 思路: + - 在作slot tagging时加入上下文知识, 然后以一种潜在的方式进行对话状态的追踪; +- 思路: + - 记忆表示:为了存储前面对话轮中的知识,通过RNN将前面对话轮中的每个话语嵌入到连续的空间中,将每个话语转换成一个记忆向量; + - 知识注意力分布:在嵌入空间中,通过取内积然后softmax来计算当前输入和每个记忆向量间的匹配,该结果可以被看作是为了理解当前输入而建模知识传递的注意力分布; + - 知识编码表示:为了对来自历史的知识进行编码,历史向量是对由注意力分布加权的记忆嵌入的总和; + - 序列标注:提供携带的知识来提高序列标注的效果。 + +![](img/20200906144949.png) + +#### [Sequential Dialogue Context Modeling for Spoken Language Understanding(Bapna et.al., SIGDIAL 2017)](https://www.aclweb.org/anthology/W17-5514/) + +- 介绍: + - 使用RNN探索新的建模对话上下文的方法,提出了序列对话编码网络,它允许按时间顺序对来自对话历史的上下文编码。之前轮和当前轮的encodings被输入一个共享所有存储器权重的前馈网络。并将序列对话编码网络的性能与仅使用先前的上下文的模型、在memory网络中编码失去对话顺序的上下文的模型进行比较; +- 优点:在多域对话数据集上的实验表明,序列对话编码网络能减少歧义。 + +![](img/20200906145823.png) + +![](img/20200906145823.png) + +![](img/20200906145850.png) + +![](img/20200906145915.png) + +![](img/20200906150004.png) + +![](img/20200906150015.png) + + ### 什么是结构化LU? + +### 结构化LU 的发展史? + ![](img/20200904213405.png) +### 结构化LU 方法介绍 + +#### [Knowledge as a Teacher: Knowledge-Guided Structural Attention Networks(Chen et al., 2016)](https://arxiv.org/abs/1609.03286) + +- 介绍:提出了K-SAN:用先验知识当作引导,句子结构知识当作menory来存储。这是由先验知识引导的结构化注意力网络,其实就是RNN+attention+先验知识,但是跟RNN不同的是:该模型充分利用自然语言丰富的、结构化的信息而不再是线性扁平链。 +- 优势 + - 可从少量数据中获取重要的子结构,增强模型的泛化能力; + - 针对给定句子,可自动找出对其语义标签至关重要的显著子结构,从而缓解测试集中的unseen data,进一步提升NLU的效果。 +- 实验结果:并在ATIS数据上表明 K-SAN 可以使用注意力机制有效地从子结构中提取出显著的知识,达到SOTA的效果。 + +![](img/20200906150548.png) + +![](img/20200906150641.png) + +![](img/20200906150716.png) + +### SLU各方法的对比 + +![](img/20200906150843.png) + ## 四、参考 -1. ![总结|对话系统中的口语理解技术(SLU)(三)](https://zhuanlan.zhihu.com/p/50704090) +1. [总结|对话系统中的口语理解技术(SLU)(三)](https://zhuanlan.zhihu.com/p/50704090) diff --git a/DialogueSystem_study/readme.md b/DialogueSystem_study/readme.md index 569bf8a..2c10d6f 100644 --- a/DialogueSystem_study/readme.md +++ b/DialogueSystem_study/readme.md @@ -7,7 +7,246 @@ > 个人介绍:大佬们好,我叫杨夕,该项目主要是本人在研读顶会论文和复现经典论文过程中,所见、所思、所想、所闻,可能存在一些理解错误,希望大佬们多多指正。 > +## 目录 + +- [【关于 对话系统 】那些你不知道的事](#关于-对话系统-那些你不知道的事) + - [目录](#目录) + - [对话系统有哪几种?](#对话系统有哪几种) + - [这几类对话系统的区别是什么?](#这几类对话系统的区别是什么) + - [面向任务的对话系统目标是什么?](#面向任务的对话系统目标是什么) + - [对话系统的关键模块是什么?](#对话系统的关键模块是什么) + - [为什么要有多轮对话?](#为什么要有多轮对话) + - [对话系统如何获取 必要信息?](#对话系统如何获取-必要信息) + - [面向任务的对话系统任务的形式化符号定义](#面向任务的对话系统任务的形式化符号定义) + - [按照技术实现划分,对话系统可分为几类?](#按照技术实现划分对话系统可分为几类) + - [模块化的对话系统 由哪些 模块,分别做什么?](#模块化的对话系统-由哪些-模块分别做什么) + - [模块化的对话系统 NLU 模块介绍?](#模块化的对话系统-nlu-模块介绍) + - [意图识别定义是什么?](#意图识别定义是什么) + - [槽位值定义是什么?](#槽位值定义是什么) + - [能否举个例子说明一下呢?](#能否举个例子说明一下呢) + - [怎么将两种方式合并?](#怎么将两种方式合并) + - [评价指标是什么?](#评价指标是什么) + - [DST 是什么?](#dst-是什么) + - [DST 的 输入输出是什么?](#dst-的-输入输出是什么) + - [对话状态的表现(DST-State Representation)组成是什么?](#对话状态的表现dst-state-representation组成是什么) + - [DST 存在问题及解决方法?](#dst-存在问题及解决方法) + - [DST 实现方法是什么?](#dst-实现方法是什么) + - [DPL (对话策略优化)模块是什么?](#dpl-对话策略优化模块是什么) + - [DPL 的输入输出是什么?](#dpl-的输入输出是什么) + - [基于规则的 DPL 方法介绍?](#基于规则的-dpl-方法介绍) + - [文章目录](#文章目录) + - [优质文章学习](#优质文章学习) + - [优质代码学习](#优质代码学习) + + +## 对话系统有哪几种? + +- 类别: + - 面向开放域的对话系统 + - 支持类型:闲聊 + - 类别: + - 基于 海量 FAQ 的检索方式 + - 端到端方式 + - 面向任务的对话系统 + - 目标:通过对话系统能够找到用户完成一项特定任务 + - 类别: + - 基于规则 + - 基于数据 + +## 这几类对话系统的区别是什么? + +- 区别:是否有明确的目标和任务 +- 面向开放域的对话系统 + - 特点:有户一般具有不确定的目的性 + - 如何衡量质量:以用户的主观体验为主 +- 面向任务的对话系统 + - 特点:具有目前的目的性 + - 如何衡量质量:以任务的完成情况来衡量对话质量 + +## 面向任务的对话系统目标是什么? + +- 目标:完成用户所指定的一项特定任务(天气、订餐等) +- 机制:需要维护一个用户目标状态的表示,并且依赖于一个决策过程来完成指定任务,保证目标状态沿着能够完成任务的方向前进 +- 工作: + - 目标状态 + - 状态迁移 + +## 对话系统的关键模块是什么? +- 关键模块 + - 自然语言理解: + - 介绍:将机器接收到的用户输入的自然语言转化为语义表示 + - 子任务: + - 领域识别 + - 意图识别 + - 槽位填充 + - 对话管理: + - 介绍:根据语义表示、对话上下文、用户个性化信息等寻找合适的执行动作; + - 自然语言生成: + - 介绍:根据具体动作,生成一句自然语言,作为用户输入的回复 + +## 为什么要有多轮对话? + +- 动机:对于一项特定任务,需要多个不同的必要信息(eg:订餐任务:用户地址,用户电话等),单论请求无法提供用户满足条件的充足信息 + +## 对话系统如何获取 必要信息? + +- 方式:采用主动询问缺失信息的策略,以填充必要槽位(如下例子) + +> Q:今天天气怎么样? +> A:请告诉我查询的地点? +> Q:上海 +> A:上海今天多云 + +> 解释:由于对 地点槽位 不明确,所以 A 需要 采用 主动询问缺失信息的策略获取槽位信息 + +## 面向任务的对话系统任务的形式化符号定义 + +- Hx:用户的对话历史语句(Hx=[X1,X2,X3,...,Xn-1]) +- Hy:系统的对话历史语句(Hy=[Y1,Y2,Y3,...,Yn-1]) +- Xn:第n轮的用户对话语句 +- Yn:第n轮的系统对话语句 +- un:第n轮的用户动作 +- sn:第n轮的对话状态 +- an:第n轮的系统动作 + +## 按照技术实现划分,对话系统可分为几类? + +- 类别: + - 模块化的对话系统 + - 介绍:分模块串行处理对话任务,每一个模块负责特定任务,并将结果传递给下一个模块 + - 实现方式:针对任一模块采用基于规则的人工设计方式,或基于数据驱动的模型方式 + - 端到端的对话系统 + - 介绍:由输入直接到输出,忽略中间过程,采用数据驱动模型实现 + +## 模块化的对话系统 由哪些 模块,分别做什么? + +- 组成成分: + - NLU: + - 介绍:将用户输入的自然语言语句映射为机器可读的结构化语义表述; + - 结构化语义: + - 意图识别: + - 槽值: + - DST(对话状态跟踪) + - 目标:跟踪用户需求并判断当前的对话状态 + - 工作原理:以多轮对话历史、当前用户动作为输入,通过总结和推理理解在上下文环境下用户当前输入自然语言的具体含义 + - DPL(对话策略学习) + - 工作原理:根据当前的对话状态,对话策略决定下一步执行什么系统动作 + - NLG(自然语言生成) + - 工作原理:负责将对话策略模块选择的系统动作转化到自然语言,最终反馈给用户 + +## 模块化的对话系统 NLU 模块介绍? + +- 主要任务:将用户输入的自然语言映射为用户的意图和对应的槽位值 +- 输入:用户对话语句 Xn +- 输出:解析 Xn 后得到的用户动作 un; +- 主要技术: + - 意图识别->意图 + - 槽位填充->槽位 + +### 意图识别定义是什么? + +- 介绍:将用户输入的自然语言会谈划分为不同用户意图; +- 举例: + - query: 今天天气怎么样? + - 意图 : 询问天气 + +### 槽位值定义是什么? + +- 介绍:意图所带的参数,一个意图可以携带若干个相应槽位 +- 举例: + - 咨询公交路线 + - 槽位:出发地,目的地,时间等 +- 槽位填充的目的:在已知特定领域或意图的语义框架下,从输入语句中抽取处该语义框架中余弦定义好的语义槽的值 +- 标注法:IOB + +### 能否举个例子说明一下呢? + +- query:今天上海天气怎么样? +- 用户意图:询问天气 +- 槽位定义: + - 槽位1:时间 + - 槽位2:地点 + +### 怎么将两种方式合并? + +- 合并方式:串行执行 +- 缺点: + - 误差传递 + - 限定领域后,不同领域需要不同的方法和模型进行处理,各个领域不共享;虽然很多时候槽位一致(eg:火车和飞机) + +### 评价指标是什么? + +- 评价指标 + - 意图识别准确率 + - 槽位填充 F1 + +## DST 是什么? + +- 目标:跟踪用户需求并判断当前的对话状态 + +### DST 的 输入输出是什么? + +- 工作原理: + - 输入:以多轮对话历史(Hx、Hy)、当前用户动作 un ; + - 输出: DST 模块判定得到的当前对话状态 sn; + +### 对话状态的表现(DST-State Representation)组成是什么? + +- 对话状态的表现(DST-State Representation)组成: + - 目前为止的槽位填充情况(最主要指标); + - 本轮对话过程中的用户动作; + - 对话历史; + +### DST 存在问题及解决方法? + +- 存在问题:由于 语音识别不准确 或 自然语言 本身存在 歧义问题,导致 NLU 的识别结果 往往 和真实结果间存在误差,所以 NLU 的 输出 是带概率的,及每一种可能的结果由一个相应的置信程度; +- DST 在判断当前对话存在两种选择: + - 第一种选择所对应的处理方法:1-Best + - 介绍:DSt 判断当前对话状态时只考虑置信程度最高的情况,维护对话状态的表示时,只需要等同于槽位数量的空间; + - 第二种选择所对应的处理方法:N-Best + - 介绍:DST 判断当前对话时会综合考虑所有槽位的置信程度,每一个槽位的N-best 结构都要考虑和维护,且最终还需要维护一个槽位组合在一起的整体置信程度,作为最终的对话状态判断依据 + +### DST 实现方法是什么? + +- 实现方法: + - 基于CRF的系列跟踪模型 + - 基于 RNN 或 LSTM 的序列跟踪模型 + +## DPL (对话策略优化)模块是什么? + +### DPL 的输入输出是什么? + +- 工作原理 + - 输入:DST 模块输出的当前对话状态 sn; + - 输出:通过预设的对话策略,选择系统动作 an 作为输出; + +### 基于规则的 DPL 方法介绍? + +- 实现方式:通过 人工设计有限状态自动机方法实现; +- 方案: + - 方案一:以点表示数据,以边表示操作; + - 方案二:以边表示数据,以点表示操作; + + ## 文章目录 -1. 【[【关于 Domain/Intent Classification 】那些你不知道的事](IntentClassification/)】 -2. [【关于 槽位填充 (Slot Filling)】那些你不知道的事](SlotFilling/) \ No newline at end of file +1. [【关于 Domain/Intent Classification 】那些你不知道的事](IntentClassification/) +2. [【关于 槽位填充 (Slot Filling)】那些你不知道的事](SlotFilling/) +3. [【关于 上下文LU】那些你不知道的事](contextLU/) + + +## 优质文章学习 + +1. [微软和清华开源ConvLab: 多领域端到端对话系统平台](https://zhuanlan.zhihu.com/p/63338937) +2. [认真的聊一聊对话系统(任务型、检索式、生成式对话论文与工具串讲)](https://zhuanlan.zhihu.com/p/83825070) +3. [大厂对话系统实践文章链接](https://zhuanlan.zhihu.com/p/90776077) +4. [第58届国际计算语言学协会会议(ACL 2020)有哪些值得关注的论文?](https://www.zhihu.com/question/385259014/answer/1189140886) +5. [重磅|一文彻底读懂智能对话系统!当前研究综述和未来趋势](https://zhuanlan.zhihu.com/p/33300418) +6. [从对话系统到智能问答产品(一):对话系统简介](https://zhuanlan.zhihu.com/p/85790719) +7. [计算未来轻沙龙:对话系统研究进展(视频 + PPT分享)](https://zhuanlan.zhihu.com/p/43614603) +8. [如何做一个完全端到端的任务型对话系统?](https://zhuanlan.zhihu.com/p/108095526) + +## 优质代码学习 + +1. [Dialogue_System](https://github.com/Vincent131499/Dialogue_System) + diff --git a/interview/img/20200906192126.png b/interview/img/20200906192126.png new file mode 100644 index 0000000..c4d6678 Binary files /dev/null and b/interview/img/20200906192126.png differ diff --git a/interview/img/20200906192221.png b/interview/img/20200906192221.png new file mode 100644 index 0000000..21e2bba Binary files /dev/null and b/interview/img/20200906192221.png differ diff --git a/interview/img/20200906192249.png b/interview/img/20200906192249.png new file mode 100644 index 0000000..22b4175 Binary files /dev/null and b/interview/img/20200906192249.png differ diff --git a/interview/readme.md b/interview/readme.md index 592f2f7..f4ee578 100644 --- a/interview/readme.md +++ b/interview/readme.md @@ -1,4 +1,4 @@ -# 个人面经汇总 +# 【关于 AI 面试】那些你不知道的事 > 作者:杨夕 > @@ -6,10 +6,40 @@ > > 个人介绍:大佬们好,我叫杨夕,该项目主要是本人在研读顶会论文和复现经典论文过程中,所见、所思、所想、所闻,可能存在一些理解错误,希望大佬们多多指正。 +## 目录 + + +- [【关于 AI 面试】那些你不知道的事](#关于-ai-面试那些你不知道的事) + - [目录](#目录) + - [一、基础算法篇](#一基础算法篇) + - [1.1.1. 二分查找递归 和 非递归的时间复杂度 和 空间复杂度](#111-二分查找递归-和-非递归的时间复杂度-和-空间复杂度) + - [1.1.2. 稳定和非稳定排序算法](#112-稳定和非稳定排序算法) + - [二、机器算法优化篇](#二机器算法优化篇) + - [1.2.1. 如何判断过拟合,欠拟合,怎么防止过拟合,欠拟合?](#121-如何判断过拟合欠拟合怎么防止过拟合欠拟合) + - [1.2.2. 欠拟合 和 过拟合 的解决方法](#122-欠拟合-和-过拟合-的解决方法) + - [1.2.2.1. 解决 欠拟合 的方法](#1221-解决-欠拟合-的方法) + - [1.2.2.2. 解决过拟合 的方法](#1222-解决过拟合-的方法) + - [1.2.3. 正则化](#123-正则化) + - [1.2.3.1. 什么是正则化](#1231-什么是正则化) + - [1.2.3.2. L0、L1、L2 介绍及区别?](#1232-l0l1l2-介绍及区别) + - [1.2.3.3. Dropout 介绍?](#1233-dropout-介绍) + - [1.2.4. 归一化](#124-归一化) + - [1.2.4.1. 为什么要归一化](#1241-为什么要归一化) + - [1.2.4.2. 归一化 有 哪些方法?](#1242-归一化-有-哪些方法) + - [1.2.4.3. 归一化 各方法 特点?](#1243-归一化-各方法-特点) + - [1.2.4.4. 归一化 的 意义?](#1244-归一化-的-意义) + - [1.2.4.5. 哪些机器学习算法 需要做 归一化?](#1245-哪些机器学习算法-需要做-归一化) + - [1.2.4.6. 哪些机器学习算法 不需要做 归一化?](#1246-哪些机器学习算法-不需要做-归一化) + - [三、机器算法篇](#三机器算法篇) + - [3.1 什么是支持向量机(support vector machine,SVM)?](#31-什么是支持向量机support-vector-machinesvm) + - [3.1.1 支持向量机(support vector machine,SVM)的原理?](#311-支持向量机support-vector-machinesvm的原理) + - [3.2 逻辑回归(Logistic Regression) 是什么?](#32-逻辑回归logistic-regression-是什么) + - [3.2.1 逻辑回归(Logistic Regression) 的原理是什么?](#321-逻辑回归logistic-regression-的原理是什么) + - [参考](#参考) ## 一、基础算法篇 -### 1. 二分查找递归 和 非递归的时间复杂度 和 空间复杂度 +### 1.1.1. 二分查找递归 和 非递归的时间复杂度 和 空间复杂度 1. 递归 @@ -23,7 +53,7 @@ - 时间复杂度:O(logN) - 空间复杂度:O(1) -### 2. 稳定和非稳定排序算法 +### 1.1.2. 稳定和非稳定排序算法 @@ -43,9 +73,9 @@
-## 二、机器算法篇 +## 二、机器算法优化篇 -### 1. 如何判断过拟合,欠拟合,怎么防止过拟合,欠拟合? +### 1.2.1. 如何判断过拟合,欠拟合,怎么防止过拟合,欠拟合? (1) 欠拟合问题及解决方法 @@ -69,16 +99,16 @@ - 通过特征选择减少特征数; - 举例:应试能力很强,实际应用能力很差。擅长背诵知识,却不懂得灵活利用知识 -### 2. 欠拟合 和 过拟合 的解决方法 +### 1.2.2. 欠拟合 和 过拟合 的解决方法 -#### 2.1. 解决 欠拟合 的方法 +#### 1.2.2.1. 解决 欠拟合 的方法 1. 增加新特征,可以考虑加入进特征组合、高次特征,来增大假设空间; 2. 尝试非线性模型,比如核SVM 、决策树、DNN等模型; 3. 如果有正则项可以较小正则项参数 $\lambda$; 4. Boosting ,Boosting 往往会有较小的 Bias,比如 Gradient Boosting 等. -#### 2.2. 解决过拟合 的方法 +#### 1.2.2.2. 解决过拟合 的方法 1. 交叉检验,通过交叉检验得到较优的模型参数; 2. 特征选择,减少特征数或使用较少的特征组合,对于按区间离散化的特征,增大划分的区间; @@ -89,11 +119,13 @@ 7. 早停策略。本质上是交叉验证策略,选择合适的训练次数,避免训练的网络过度拟合训练数据; 8. DropOut策略。所谓的Dropout指的是在用前向传播算法和反向传播算法训练DNN模型时,一批数据迭代时,随机的从全连接DNN网络中去掉一部分隐藏层的神经元。 在对训练集中的一批数据进行训练时,我们随机去掉一部分隐藏层的神经元,并用去掉隐藏层的神经元的网络来拟合我们的一批训练数据。使用基于dropout的正则化比基于bagging的正则化简单,这显而易见,当然天下没有免费的午餐,由于dropout会将原始数据分批迭代,因此原始数据集最好较大,否则模型可能会欠拟合。 -### 3. 正则化 +### 1.2.3. 正则化 + +#### 1.2.3.1. 什么是正则化 正则化方法是指**在进行目标函数或代价函数优化时,在目标函数或代价函数后面加上一个正则项**,一般有L1正则与L2正则等。 -### 3.1 L0、L1、L2 介绍及区别? +#### 1.2.3.2. L0、L1、L2 介绍及区别? (1) L0 @@ -179,7 +211,7 @@ > > 将模型空间限制在w的一个L1-ball 中。为了便于可视化,我们考虑两维的情况,在(w1, w2)平面上可以画出目标函数的等高线,而约束条件则成为平面上半径为C的一个 norm ball 。等高线与 norm ball 首次相交的地方就是最优解: -### 3.2 Dropout 介绍? +#### 1.2.3.3. Dropout 介绍? - 方式:Dropout 通过 修改ANN中隐藏层的神经元个数 来 防止过拟合 - 操作:训练时,随机删除一些隐藏层神经元,即让他们以一定概率不工作 @@ -191,7 +223,72 @@ - 原因:由于每一轮都相当于在一个 新的 子网络上训练。那么最终得到的模型便是 无数个 子网络 共同训练 的成果,效果自然会更好 +### 1.2.4. 归一化 + +#### 1.2.4.1. 为什么要归一化 + +因为 每一列 数据的量纲不同,导致 数据分布区间存在差异。(人的身高可以是 180cm,也可以是 1.8m,这两个虽然表示意义相同,但是由于单位的不同,导致 机器学习在计算过程中也容易出现差异,所以就需要对数据进行归一化)。 + +#### 1.2.4.2. 归一化 有 哪些方法? + +- 线性比例变换法: + +![](img/20200906192126.png) + +- 极差变换法: + +![](img/20200906192221.png) + +- 0 均值标准化(z-score 方法): + +![](img/20200906192249.png) + +#### 1.2.4.3. 归一化 各方法 特点? + +- 线性比例变换法 and 极差变换法 + - 特点:将原始数据线性化的方法转换到[0 1]的范围,该方法实现对原始数据的等比例缩放。通过利用变量取值的最大值和最小值(或者最大值)将原始数据转换为界于某一特定范围的数据,从而消除量纲和数量级影响,改变变量在分析中的权重来解决不同度量的问题。由于极值化方法在对变量无量纲化过程中仅仅与该变量的最大值和最小值这两个极端值有关,而与其他取值无关,这使得该方法在改变各变量权重时过分依赖两个极端取值。 +- 0 均值标准化(z-score 方法) + - 特点:即每一变量值与其平均值之差除以该变量的标准差。虽然该方法在无量纲化过程中利用了所有的数据信息,但是该方法在无量纲化后不仅使得转换后的各变量均值相同,且标准差也相同,即无量纲化的同时还消除了各变量在变异程度上的差异,从而转换后的各变量在聚类分析中的重要性程度是同等看待的。而实际分析中,经常根据各变量在不同单位间取值的差异程度大小来决定其在分析中的重要性程度,差异程度大的其分析权重也相对较大。 + +#### 1.2.4.4. 归一化 的 意义? + +每个维度都是去量纲化的,避免了不同量纲的选取对距离计算产生的巨大影响。 + +#### 1.2.4.5. 哪些机器学习算法 需要做 归一化? + +- 机器学习算法算法: + - 基于距离计算的模型:KNN; + - 通过梯度下降法求解的模型:线性回归、逻辑回归、支持向量机、神经网络 + +#### 1.2.4.6. 哪些机器学习算法 不需要做 归一化? + +- 机器学习算法算法: + - 树形模型:决策树、随机森林(Random Forest) +- 为什么: + - 原因1:因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率; + - 原因2:因为数值缩放不影响分裂点位置,对树模型的结构不造成影响。按照特征值进行排序的,排序的顺序不变,那么所属的分支以及分裂点就不会有不同。而且,树模型是不能进行梯度下降的,因为构建树模型(回归树)寻找最优点时是通过寻找最优分裂点完成的,因此树模型是阶跃的,阶跃点是不可导的,并且求导没意义,也就不需要归一化。 + +## 三、机器算法篇 + +### 3.1 什么是支持向量机(support vector machine,SVM)? + +#### 3.1.1 支持向量机(support vector machine,SVM)的原理? + +- 介绍:支持向量机,因其英文名为support vector machine,故一般简称SVM; +- 类型:一种二类分类模型; +- 基本模型定义:特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。 + +### 3.2 逻辑回归(Logistic Regression) 是什么? + +#### 3.2.1 逻辑回归(Logistic Regression) 的原理是什么? + + + + +## 参考 +1. [机器学习面试150题:不只是考SVM xgboost 特征工程(1-50)](https://zhuanlan.zhihu.com/p/213774840) +2. [机器学习面试150题:不只是考SVM xgboost 特征工程(51-100)](https://zhuanlan.zhihu.com/p/217494137)