找回密码
 立即注册
查看: 516|回复: 0

5分钟读懂AI聊天机器人软件系统架构

[复制链接]

1

主题

0

回帖

4

积分

新手上路

积分
4
发表于 2023-8-8 14:43:27 | 显示全部楼层 |阅读模式
本文的目的是概述一个典型的聊天机器人系统架构,以成立一个对话式的人工智能聊天机器人。我们将详细回顾架构和各个组件(注意,本文中引用的架构和术语主要来自对rasa-核心开源软件的理解)。


01、它是一个聊天机器人

为了简单起见,本文假设用户将输入文本,而且机器人将以文本的形式返回适当的动静(因此,我们将不存眷诸如ASR、语音识别、语音到文本、文本到语音等方面的问题。,以下架构可以按照需要使用这些组件进行增强)。
02、它是会话聊天机器人!

这是什么意思?bot应该以某种方式维护会话的状态,并在当前上下文中响应用户请求(也就是说,它需要上下文感知)。例如,假设对话流程是这样的-

  • 用户-明天天气怎么样?
  • 聊天机器人-天气会多云少雨。
  • 用户-后天怎么样?(因此,当提出这个问题时,bot应该记住,这个对话的比来上下文是关于实体“weather”(而不是像交通堵塞或预订可用性之类的其他内容,假设它们在前面的对话中呈现过)。
03、它是一个AI/ML驱动的体系布局

模型按照所提供的训练数据学习动作(分歧于传统的基于状态机的体系布局,该体系布局基于为会话的每个可能状态编码所有可能的if-else条件)
下面是一个聊天机器人的这种架构的高级概述。


聊天机器人架构流程图
在我们浏览流程时,我将参考上图中的组件。首先,让我们看看,在会话流的任何给按时刻,我们需要做什么来确定一个适当的响应?

  • 我们需要知道用户的意图-我们将这些称为意图。意图的几个例子是 - ‘询问_天气’、‘询问_餐馆’等,上面例子中的意图是‘询问天气’。
  • 我们需要知道询问中的具体意图(我们将其称为实体),例如-问题的答案,如何时?,在哪里?,有多少?等,分袂对应于从用户请求中提取关于日期时间、位置、号码的信息。这里的日期时间,位置,数字是实体。引用上面的天气示例,实体可以是“datetime”(用户提供的信息)和位置(注意-位置不必是用户提供的显式输入,如果没有指定任何内容,则默认从用户位置确定)。
Intent和实体一起将有助于对天气处事进行相应的API调用并检索成果,我们将在后面看到。
此刻参考上图,暗示NLU组件(自然语言理解)的框有助于从用户请求中提取意图和实体。
NLU组成部门

  • 一种以各种句子为输入,以意图为方针的有监督意图分类模型。凡是,一个线性撑持向量机就足以作为意图分类模型。
  • 实体提取模型-这可以是一个预先训练的模型,如Spacy或StanfordNLP库(或)它可以训练使用一些概率模型,如CRF(条件随机场)。

  • 此刻,由于我们是一个对话型的人工智能机器人,我们需要跟踪到目前为止发生的对话,以预测适当的反映。为此,我们需要一个dictionary对象,该对象可以与当前意图、当前实体、用户向bot以前的问题提供的持久化信息、bot先前的操作、API调用的成果(如果有)相关的信息。这些信息将构成我们的输入X,特征向量。对话模型将要训练的方针y将是“下一个动作”(下一个动作可以是一个热编码向量,对应于我们在训练数据中定义的每个动作)。
然后,这就引出了下一个问题——我们如何得到特征向量input X的训练值?

  • 从NLU组件中可以看到,获取有关意图和实体的信息非常简单。
  • 获取残剩的值(用户将提供给bot以前的问题、bot以前的操作、API调用的成果等的信息)有点棘手,这里是对话打点器组件接管的处所。这些特征值需要从用户用户和bot之间的示例对话的形式定义的训练数据中提取。这些示例对话应该以这样一种方式筹备:它们在假装既是用户又是机器人的同时捕捉大大都可能的会话流。
注意: 如果打算是从头开始构建示例对话,那么保举的一种方式是使用称为交互式学习的方式
在这里我们将不讨论交互式学习的细节,但简单地说,它是一个用户界面应用法式,它将提示用户输入用户请求,然后对话打点器模型将给出预测最佳下一步操作的最佳选择,再次提示用户确认其学习选择的优先级。模型使用这个反馈来改良它的下一次的预测(这就像一种强化学习技术,此中模型因其正确的预测而得到奖励)。
在这里,我将不讨论提取每个特征值的细节。可以从我上面提供的rasa核心链接的文档中参考。
因此,假设我们以所需的格式从示例对话中提取出所有所需的特征值,然后我们可以训练一个人工智能模型(如LSTM),然后用softmax来预测下一个动作。参考上图,“对话打点”组件就是这样做的。为什么LSTM更合适?-如上所述,我们但愿我们的模型具有上下辞意识,并回顾会话历史,以预测下一步的步履。这类似于时间序列模型(因此可以最好地在LSTM模型的内存状态中捕捉。我们想要回顾的会话历史量可以是模型的一个可配置的超参数。(请参见第4节LSTM定义)
此刻,下一个动作的预测值可以是-

  • 以适当的应答信息响应用户
  • 从数据库中检索一些数据(如果有的话)
  • 进行一个API调用并获得一些与意图匹配的成果。
如果它碰巧是一个API调用/数据检索,那么控制流句柄将保留在“对话打点”组件中,该组件将再次使用/持久化此信息来预测下一个动作。对话打点器将按照此操作和检索到的成果更新其当前状态,以做出下一个预测。一旦下一个动作对应于对用户的响应,那么“动静生成器”组件就接管了。
动静生成器组件由几个用户定义的模板(模板只是带有一些占位符的句子,视情况而定)组成,这些模板映射到操作名称。因此,按照对话打点器预测的操作,调用相应的模板动静。如果模板需要填充一些占位符值,这些值也会由对话打点器传递给生成器。然后向用户显示适当的动静,bot进入等待模式,监听用户的输入。
04、LSTM 长短时记忆



长短时记忆(LSTM)是一种用于深度学习范围的人工递归神经网络(RNN)布局[1]。与尺度的前馈神经网络分歧,LSTM具有反馈连接。它不仅可以措置单个数据点(如图像),还可以措置整个数据序列(如语音或视频)。例如,LSTM适用于诸如未分段、连接的手写识别、[2]语音识别和网络流量或IDSs(入侵检测系统)中的异常检测等任务。
一个通用的LSTM单元由单元、输入门、输出门和遗忘门组成。细胞在任意的时间间隔内记忆数值,三个门调节进出细胞的信息流。
LSTM网络非常适合于基于时间序列数据的分类、措置和预测,因为时间序列中的重要事件之间可能存在未知持续时间的滞后。LSTMs是为了解决传统rnn训练中可能遇到的梯度消掉问题而开发的。在众多应用中,LSTM相对于RNN、隐马尔可夫模型和其他序列学习方式,对间隙长度相对不敏感是一个优势
操作LSTMs预测时间序列


有几种时间序列预测技术,如自回归(AR)模型、移动平均(MA)模型、Holt-winters、ARIMA等。那么,还有什么需要像LSTM-RNN这样的模型来预测时间序列呢?这是一个很有说服力的问题,下面是我可以提出的理由(如果你知道更多,请不才面回答,我很想知道)-

  • RNN(LSTM)非常擅长在输入特征空间中提取模式,在输入特征空间中,输入数据跨越长序列。考虑到LSTM的门控体系布局,该体系布局具有独霸内存状态的能力,因此它们是解决此类问题的抱负选择。
  • LSTMs几乎可以用多个输入变量对问题进行无缝建模。我们需要的是一个3D输入矢量,需要输入到LSTM的输入形状中。只要我们找到一种方式,把我们所有的输入变量转换成三维向量形式,我们就可以很好地使用LSTM。这为时间序列预测增加了很大的好处,传统的线性方式很难适应多变量或多输入预测问题(这里是多元预测的一个旁注-请记住,当我们使用多变量数据进行预测时,我们还需要“未来多变量”数据来预测未来的成果!)
  • 一般来说,在使用LSTM时,我发现它们在建模问题时提供了很大的灵活性,这意味着我们可以很好地控制时间序列的几个参数。出格是我们可以-
  • 灵活使用多种seq2seq LSTM模型组合预测时间序列-多对一模型(当我们但愿在给定所有先前输入的当前时间步长进行预测时非常有用),多对多模型(当我们想要同时预测多个未来的时间点时非常有用,给出了所有先前的输入)和其他几种分歧的模型。我们可以定制一些东西,例如:当出息序要预测的回溯窗口的大小,我们但愿预测未来的时间步数,将当前预测反馈到窗口中以不才一个时间步进行预测(这种技术也称为向前移动窗口),等等。
另一方面,在使用LSTM(或任何DNN体系布局)时,有一些常见的错误谬误需要注意——需要大量的数据、要调整的多个超参数等等,我还看到一些文章提到LSTM并不擅长于序列的自回归类型。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|T9AI - 深度人工智能平台 ( 沪ICP备2023010006号 )

GMT+8, 2024-11-22 14:05 , Processed in 0.056337 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表