Neural Approaches to Conversational AI
Neural Approaches to Conversational AI
学姐介绍的一篇综述阅读笔记
SIGIR 2018
主要贡献:
提出一个综合的调查关于最近几年的应用在QA,任务导向和闲聊对话机器人的神经网络方法
描述了现在和传统方法之间的联系,允许我们更好的理解研究为什么并且如何进化并且散发光在我们前行的道路上
提出先进的方法去训练对话数据,使用监督学习和强化学习的方法
概述在搜索对话和工业中使用的标志性对话系统,研究我们已经达到的成就和仍需面对的挑战
对话:
task completion: agent need to accomplish user tasks
social chat: agent need to converse appropriately with users - like a human as measured by the Turing test - and provide useful recommendations
bots : task-oriented & chitchat
dialogue as optimal decision making
连续的决策制定过程。它有一个自然的结构:一个高层次的选择使得客服去激活某一种特别的子任务,和 一个低层次的过程,又被选择的客服控制,选择最初的动作去完成子任务。
这样的层次决定制定过程能被马尔科夫决策过程(MDPs)描述,这里的选择被定义为primitive actions to higher-level actions。这是对传统的MDP的扩展,原来的MDP设置为一个客服在每一个时间步只能选择一个primitive action,新的MDPs可以选择一个“multi-step” action。
如果我们将每一个option看作一个action,那么top- & low- level 都能够自然的被强化学习框架捕捉。对话agent在MDP中导航,通过一系列离散的step to interact with its environment。在每一个时间步,agent会observe the current state, and chooses an action 根据policy。agent之后会收到reward,然后observe a new state,继续这个循环直到阶段终点。goal of dialogue learning 是去发现最佳策略去最大化expected rewards。
sounding board: a social chatbots designed to maximize user engagement , measured by the expected reward function of conversation-turns per session (CPS)。
混合方法去组合不同ML方法的力量,例如,我们可能会使用仿造品或者监督学习方法。
the transition of NLP to Neural Approaches
NLP应用不同于其他数据处理系统,在语言知识应用的多样性方面,包括音系学,词态学,语法,语义和论述。这些组合任务可以被看作是自然语言的模糊性在不同程度上,通过匹配一个自然语言句子到一系列人为定义的清楚的符号表达,例如POS(part of speech),context free grammar, first-order predicate calculus.
代替的,端到端的系统聚焦在小心的裁剪增长的神经网络复杂度
机器学习背景
supervised learning (SL)
mean squared error (MSE)
stochastic gradient descent (SGD)
在未知领域,agent要学会通过和环境互动进而自己去学习如何进行下一步动作,这就是强化学习(RL)。1:agent必须要充分利用已经知道的知识为了去获得奖励,但同时也必须要去探索未知的领域和知识为了在未来有更好的行动选择。2:delay reward and temporal credit assignment:agent 直到session的结束都不知道一个对话是否是成功的完成了任务,因此他必须确定在sequence中的哪个动作会对最后的奖励获得有作用,这个问题就是temporal credit assignment。3:partially observed states:神经网络学习通过编码所有的在现在轮和过去步获得的信息去表示状态
和过去的技术相比,神经网络方法提供一个更有效的解决方案通过利用深度神经网络的表示学习力量。
deep learning
multi-layer perceptron (MLP) inputs/outputs/hidden layers
deep neural networks (DDN)
information retrieval (IR)
设计一个深度学习分类器的主要努力是在优化神经网络结构for effective representation learning。
convolutional layers for local words dependencies & recurrent for global word sequences
deep semantic similarity model (DSSM)
reinforcement learning
agent-environment interaction is modeled as a discrete-time Markov decision process (MDP), described by a five-tuple M=<S,A,P,R,Y>
s:环境能够存在的可能无限大的状态集合;a:agent可能存在的可能无限大的状态集合;p(s'|s,a) 在动作 a 后环境的状态从 s 转移到 s' 转移概率;r(s,a) 在agent再状态 s 执行完动作 a 后 agent 立刻接受到的平均奖励;y 属于 0 到 1,左开右闭
transition : (s,a,r,s'), action-selection policy denoted by π (确定或者随机)

Q-learning
第一种算法基于一个理论:一个优化策略能被立刻检索到如果优化 Q 功能是可获得的,优化策略被描述为:
$$
π^(s) = \mathop {argmax}_{a}Q^(s,a).
$$
因此,一大部分的强化学习的算法聚焦在学习$Q^*(s,a)$上,统称为value-function-based methods.
在实际中,用一个表格去表示 Q(s,a)是昂贵的,每一个 (s,a) 一条记录。因此我们通常使用压缩形式去表示 Q。特别的,我们假设 Q-function 有一个预定义好的参数形式,一个线性近似的例子是:
$$
Q(s,a;\theta) = \phi(s,a)^T \theta
$$
其中的$\phi (s,a)$是一个 d-dimensional hand-coded feature vector for state-action pair (s,a), $\theta$是从数据中学到的相关系数向量。一般来讲$Q(s,a;\theta)$有许多不同的表达形式。例如 deep Q-network(DQN)。进一步,Q-function的表达也可以使用非参数的形式,例如决策树或者是 Gaussian processes。在发现一个state transition (s,a,r,s')后$\theta$作如下更新

上面公式就是Q-learning,$\nabla$求梯度。
Q-learning通常是不稳定的且需要许多example在达到最优解Q*之前。两个修改可以帮助改善这个,第一个是 experience replay, 代替仅仅使用一次 observed transition to update $\theta$, one may store it in a reply buffer, and 周期性从中采样去执行Q-learning update。这种方法使得每个transaction都能多次利用,而且这也帮助学习过程更加稳定通过避免数据分布当更新参数的时候改变太过剧烈。
第二个就是 two-network implementation。这里,learner maintains an extra copy of the Q-function, called the target network, parameterized by $\theta_{target}$ .学习过程中,这个参数是fixed

周期的,$\theta_{target}$ 被更新为 $\theta$ ,the process continues. 这是固定值迭代算法的一个例子
dueling Q-network / double Q-learning / SBEED
POLICY Gradient
另一种算法是直接去优化policy,不用必须去学习Q-function。policy本身directly parameterized by $\theta \in \mathbb{R}^d$ ,$\pi(s;\theta)$ is often a distribution over actions.policy被它在H长度的轨道,$\tau = (s_1,a_1,r_1,...,s_H,a_H,r_H)$,中得到的平均的长期reward评估:
$$
J(\theta):=\mathbb{E}[\sum^{H}{t = 1}\gamma^{t-1}r_t|a_t\sim\pi(s_t;\theta)].
$$
从采样的trajectory中去估计$\nabla\theta J$是可能的,通过随机梯度下降去最大化J:
$$
\theta \leftarrow \theta+\alpha \nabla_\theta J(\theta),
$$
这个算法就是REINFORCE:

actor-critic算法:因为上式是直接求和,所以方差的变化可能会很剧烈,通过使用一种 estimated value function of the current policy. often referred to as the critic in 这个算法:

moreover,仍然有许多工作要做去研究怎么计算 $\nabla_\theta J $ 更有效,比起上式中的剧烈的下降 steepest descent.
exploration
update value function or policy, when transitions are given as input. 一个强化学习agent 也应该学会怎么去select actions to collect desired transitions for learning. 选择一个全新的action叫作 exploration。这是有风险的,所以exploration 和 exploitation 之间的平衡非常重要。
一种基础 exploration 策略是 $\epsilon - greedy$ . 主要思想是去选择一个看起来最好的高概率的 action (for exploitation),和一个随机的小概率的 action (for exploration)。DQN情况下,假设 $\theta$ 是现在 Q-function 的参数,然后状态的 action-selection 规则就是:
$$
a_t=\begin{cases}
\mathop {argmax}_{a}Q(s_t,a;\theta) & with probability\quad 1 - \epsilon \
random action &with probability\quad \epsilon
\end{cases}
$$
Question Answering and Machine Reading Comprehension
KB (knowledge base) QA / text-QA
Implicit ReasoNet (IRN) / M-walk - KBQA
machine reading comprehension (MRC) :
- encoding questions and passages as vectors in a neural space
- performing reasoning推理 in the neural space to generate the answer
TREC QA open benchmarks
knowledge base
DBPedia, Freebase, Yago
subject-predicate-object troples (s, r, t) -> knowledge graph (KG)
semantic parsing for KB-QA
paraphrasing in natural language : embedding-based methods
search complexity : multi-step reasoning
embedding-based methods
knowledge base completion (KBC) task:predicting the existence of a triple that is not seen in the KB. (whether a faxt is true or not)
bilinear model:the model scores how likely a triple holds using: $score(s,r,t;\theta)=x_s^T W_r x_t$ ,$x_e \in \mathbb{R}^d$ 是对于每个实体学到的vector,$W_r$矩阵是对于每个关系来说学到的。每个真实在KB库中的就是正样本,负样本由毁坏实体关系对中的任意一项得到。the margin-based(基于边际的)loss :
$$
L(\theta)=\sum_{(x+,x-)\in \mathcal{D}} [\gamma+score(x^-;\theta) - score(x^+;\theta)],
$$
$[x]_+:=max(0,x) $
path queries : an initial anchor entity s, a sequence of relations to be traversed $(r_1,...,r_k)$ ,how likely a path query $(q,t)$ holds, $q=(s,r_1,...,r_k)$ :
$$
score(q,t)=x_s^TW_{r_1} ...W_{r_k}x_t.
$$
multi-step reasoning on KB
knowledge base reasoning (KBR) :relational paths $\pi = (r_1,..,r_k)$, 下面介绍的三种方法不同之处在于推理执行在离散符号空间还是连续神经空间。
- symbolic methods
Neural Approaches to Conversational AI的更多相关文章
- DeepLearning.ai学习笔记汇总
第一章 神经网络与深度学习(Neural Network & Deeplearning) DeepLearning.ai学习笔记(一)神经网络和深度学习--Week3浅层神经网络 DeepLe ...
- [C1] Andrew Ng - AI For Everyone
About this Course AI is not only for engineers. If you want your organization to become better at us ...
- AI AND THE BOTTOM LINE: 15 EXAMPLES OF ARTIFICIAL INTELLIGENCE IN FINANCE
https://builtin.com/artificial-intelligence/ai-finance-banking-applications-companies f there's one ...
- 全球最牛的100家AI创企:有多少独角兽?
全球最牛的100家AI创企:有多少独角兽? 自2012年以来,在共计263笔交易中筹集了38亿美元.那么,这100家顶尖AI公司主要集中在哪些方向?其中有多少家独角兽公司?中国企业表现如何呢? 近期, ...
- 斯坦福NLP课程 | 第15讲 - NLP文本生成任务
作者:韩信子@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www. ...
- 【MT】牛津的MT教程
Preamble This repository contains the lecture slides and course description for the Deep Natural Lan ...
- Introducing Deep Reinforcement
The manuscript of Deep Reinforcement Learning is available now! It makes significant improvements to ...
- Saw a tweet from Andrew Liam Trask, sounds like Oxford DeepNLP 2017 class have all videos slides practicals all up. Thanks Andrew for the tip!
Saw a tweet from Andrew Liam Trask, sounds like Oxford DeepNLP 2017 class have all videos/slides/pra ...
- 自然语言15.1_Part of Speech Tagging 词性标注
QQ:231469242 欢迎喜欢nltk朋友交流 https://en.wikipedia.org/wiki/Part-of-speech_tagging In corpus linguistics ...
随机推荐
- 关于Ajax 的 cache 属性 (Day_34)
最近做项目,在某些页面显示,ajax刷新总是拿不到新内容,时常需要清除缓存,才能到达想要的效果. 经过再次查看文档,最后加了一行属性:cache:false 即可解决问题 我们先看下文档的说明: 可以 ...
- VMware ESXi 7.0 U2 SLIC & Unlocker Intel NUC 专用镜像
构建 Nano Datacenter 的两大平台 在测试环境或者家庭实验室(Home lab)中使用 VMware vSphere 作为虚拟化平台非常普遍,笔者更倾向使用 Nano Datacente ...
- 二:使用VS2019 + .net 6创建 webapi 项目
0.创建一个.net 6项目.由于目前.net 6还是预览版,所以需要添加预览版SDK功能.工具 -> 选项 -> 环境 -> 预览功能 ,勾选使用.net sdk预览版. 1.新建 ...
- 3. servlet 和 springmvc框架关系
在springmvc上我们会编写很多相关的配置 编写springmvc.xml 配置映射器 配置 处理适配器 ... web.xml 配置前端控制器 (DispatcherServlet) 官网: h ...
- Go语言流程控制02--选择结构之switch
package main import "fmt" /* @星座诊所2(switch) 根据用户输入的出生月份猜测其星座: ·白羊(4) 金牛(5) 双子(6) 巨蟹(7) 狮子( ...
- springboot 优雅的启动类
优雅的sprongboot启动类 package fama.cost.server; import fama.cost.common.IStoppable; import fama.cost.comm ...
- DeepLabV3+语义分割实战
DeepLabV3+语义分割实战 语义分割是计算机视觉的一项重要任务,本文使用Jittor框架实现了DeepLabV3+语义分割模型. DeepLabV3+论文:https://arxiv.org/p ...
- Python分析离散心率信号(下)
Python分析离散心率信号(下) 如何使用动态阈值,信号过滤和离群值检测来改善峰值检测. 一些理论和背景 到目前为止,一直在研究如何分析心率信号并从中提取最广泛使用的时域和频域度量.但是,使用的信号 ...
- python_reques接口测试框架,Excel作为案例数据源
一.框架菜单 1.1 common模块 1.2 其他 二.Excel接口测试案例编写 三.读取Excel测试封装(核心封装) excel_utils.py 读取Excel中的数据 import o ...
- 单点突破:MySQL之索引
前言 开发环境:MySQL5.7.31 什么是索引 在MySQL中,索引(Index)是帮助高效获取数据的数据结构. 我们可以将数据库理解为一本书,数据库中的各个数据列(column)就是目录中的章节 ...