【问题标题】:What is the difference between machine learning and deep learning in building a chatbot?在构建聊天机器人方面,机器学习和深度学习有什么区别?
【发布时间】:2020-06-26 03:38:45
【问题描述】:
更具体地说,传统的聊天机器人框架由 3 个组件组成:
- NLU(1.意图分类2.实体识别)
- 对话管理(1. DST 2. 对话政策)
- NLG。
我很困惑,如果我使用深度学习模型(seq2seq、lstm、transformer、attention、bert...)来训练聊天机器人,它是否涵盖了所有这 3 个组件?如果是这样,您能否更具体地解释它与这三个部分的关系?如果没有,我该如何组合它们?
比如我建了一个闭域聊天机器人,但它只是面向任务的,不能处理问候等其他部分……而且它不能处理共指解析的问题(似乎没有对话管理)。
【问题讨论】:
标签:
machine-learning
deep-learning
nlp
chatbot
nlu
【解决方案1】:
在使用传统机器学习模型和使用深度学习模型之间总是需要权衡取舍。
深度学习模型需要大量数据进行训练,训练时间和测试时间都会增加。但它会带来更好的结果。
传统 ML 模型在数据较少的情况下运行良好,但性能相对适中。推理时间也更短。
对于聊天机器人来说,延迟非常重要。延迟取决于应用程序/域。
如果域是banking or finance,人们可以等待几秒钟,但他们不能接受错误的结果。而在entertainment域中,则需要尽早交付结果。
决定取决于应用程序域 + 您拥有的数据大小 + 预期精度。
RASA 值得研究。
【解决方案2】:
您的问题似乎可以分成两个较小的问题:
- 机器学习和深度学习有什么区别?
- 深度学习如何影响聊天机器人框架的三个组件?
对于#1,深度学习是机器学习的一个例子。把你的任务想象成一个绘图问题。您转换数据,使其在绘图上具有 n 维表示。该算法的目标是创建一个函数,该函数表示在绘图上绘制的一条线,该线(理想情况下)将点彼此清晰地分开。图表的每个部分都代表您想要的任何输出(可以是类/标签、相关词等)。基本机器学习在“线性可分”问题上创建了一条线(即,很容易画一条清晰地分隔类别的线)。深度学习使您能够通过创建一个非常、非常、非常复杂的函数来解决线条可能不那么干净的问题。为此,您需要能够向映射函数引入多个维度(这是深度学习所做的)。这是对深度学习所做工作的非常肤浅的看法,但这应该足以处理您问题的第一部分。
对于#2,一个很好的快速回答是,深度学习可以成为聊天机器人框架每个组件的一部分,具体取决于您的任务有多复杂。如果这很容易,那么经典机器学习可能足以解决您的问题。如果这很难,那么您可以开始研究深度学习解决方案。
由于听起来您希望聊天机器人超越简单的输入输出匹配并处理诸如共指解析之类的复杂语义,因此您的任务似乎非常困难并且是深度学习解决方案的良好候选者。我不会太担心为每个聊天机器人框架步骤确定特定的解决方案,因为每个步骤中涉及的任务与深度学习相互融合(例如,深度学习解决方案不需要对意图进行分类然后管理对话,它会简单地从成千上万的类似情况中学习并应用最相似的响应的变体)。
我建议将此问题作为翻译问题来处理 - 但不是从一种语言翻译成另一种语言,而是从输入查询翻译成输出响应。翻译经常需要解决共指和人们用来解决的解决方案,这可能是您的理想行动方案。
这里有一些优秀的资源可供阅读,以便确定您的问题以及如何解决它: