当前位置: 首页 > news >正文

《Ai企业知识库》-模型实践-rasa开源学习框架-基础理论-02

rasa官网

Conversational AI Platform | Superior Customer Experiences Start Here

rasa简介:

Rasa是一个开源的机器学习框架,专门用于构建自动化的文本和语音对话系统,即聊天机器人。它允许开发者和企业创建定制化的对话体验,适用于各种领域,从客户服务、电子商务到教育和健康咨询等。Rasa的核心优势在于其灵活性和可扩展性,使得用户能够构建复杂且高度个性化的对话逻辑。

应用场景

Rasa的应用场景广泛多样,涵盖但不限于以下几个方面:

  • 客户服务: 自动化处理常见查询,提供24/7客户支持。
  • 智能助理: 在个人设备上提供日常生活辅助,如安排日程、提醒事项等。
  • 电子商务: 商品推荐、购物助手、订单追踪等。
  • 金融服务: 提供账户信息查询、交易操作、理财建议等。
  • 健康医疗: 远程医疗咨询、预约挂号、健康建议。
  • 教育培训: 学习资源推荐、问答助手、课程辅导。

主要模块

Rasa框架主要由以下几个核心模块组成:

  1. Rasa NLU (Natural Language Understanding): 这个模块负责理解和解析用户的输入消息。它能识别用户意图(intent recognition)、提取关键信息或实体(entity extraction),并将原始文本转化为机器可以理解的结构化数据,为后续的对话管理做准备。

  2. Rasa Core: 负责对话管理,依据从Rasa NLU获取的信息来决定机器人的响应。它维护对话的状态(dialogue state tracking),选择合适的回复策略,并执行相应的动作(actions),如回应用户、调用外部API获取信息或执行特定任务。

  3. Rasa X: 是一个交互式的开发和监控工具,为Rasa项目提供了图形界面。它让非技术用户也能参与机器人的训练过程,简化了机器人的迭代开发、测试、部署和监控工作。

通过这些模块的组合,Rasa提供了一个端到端的解决方案,使开发者能够设计、训练和部署功能丰富、上下文感知的对话机器人。

rasa三问:

所以rasa不是一个大模型?那为啥可以训练?

Rasa本身不是一个“大模型”(large language model)概念下的预训练模型,如GPT-3、BERT或T5等,这些模型通常是指经过大规模无监督数据训练得到的、具有广泛语言理解能力的模型。Rasa是一个框架,它提供工具和基础设施来构建、训练和部署对话系统,而不是一个单一的、预先训练好的模型。

尽管Rasa不是大模型,但它支持整合和利用预训练模型的能力。例如,用户可以在Rasa的NLU(自然语言理解)部分集成预训练的词嵌入模型或Transformer模型作为特征提取器,来提升意图识别和实体识别的性能。Rasa的DIET(Distributed Incremental Learning for Intent and Entity Recognition)模型就是一个例子,它展示了如何高效地结合预训练表示与可自由组合的特征,尽管DIET本身的设计目的之一就是减少对大型预训练模型的依赖。

因此,当提到“训练Rasa”,实际上是在使用Rasa框架提供的工具和流程来训练特定于你的应用领域的模型。这意味着你需要准备训练数据(如意图、实体标注的样本),然后使用Rasa命令(如rasa train)来训练这些模型,以便它们能够理解特定的对话上下文、识别意图和实体,并根据预定义的逻辑或通过学习(如强化学习)来管理对话流程。简而言之,Rasa作为一个框架,支持模型训练,但不是作为现成的、巨大的预训练模型存在。

所以可以使用rasa训练其他的大模型?以及微调其他的大模型?

Rasa本身是一个框架,主要用于构建和训练对话系统的模型,尤其是针对意图识别、实体提取和对话管理。虽然Rasa的核心并不是为了直接训练或微调那些非常大的预训练模型(如GPT系列、BERT等),但它提供了灵活性,让你能够整合和利用这些大模型的部分能力。

整合大模型的输出

Rasa允许你将来自大模型的特征或嵌入(如预训练的词向量、句子表示)整合进你的NLU管道中。例如,你可以使用Hugging Face Transformers库中的模型来提取文本特征,然后在Rasa的配置中指定这些模型作为特征提取器。这样,即使不直接训练这些大模型,也可以利用它们的高级表示来提升你的对话系统的性能。

微调大模型

直接在Rasa框架内微调像BERT这样的大型预训练模型并不典型,因为这通常涉及到更复杂的训练流程和大量的计算资源,超出了Rasa设计的初衷。然而,你可以先在外部环境中使用PyTorch或TensorFlow等深度学习框架,对大模型进行微调以适应特定任务(如新的意图分类或实体类型),然后将微调后的模型集成到Rasa中作为特征提取器或部分组件使用。

总结

Rasa本身不是用来直接训练或微调大型预训练模型的工具,但它提供了接口和机制,使得开发者能够间接利用这些大模型的威力,通过整合它们的输出或微调后模型的特性,来增强对话系统的理解能力和表现。这要求开发者具备一定的技术知识,包括如何使用外部工具对大模型进行微调,以及如何在Rasa中正确配置和利用这些模型。

Rasa框架主要是由两大部分组成:Rasa NLU(自然语言理解)和Rasa Core(对话管理)。这两部分可以使用不同的模型和技术来实现其功能。

rasa框架中使用的什么模型?或者说我可以更换rasa中的模型吗?

Rasa NLU中使用的模型:

  • Intent Classification(意图分类):用于识别用户输入的意图。Rasa支持多种分类器,如sklearntensorflow_embeddingMitieSpacySklearn等。用户可以根据需求选择或自定义模型。
  • Entity Recognition(实体识别):用于从用户输入中抽取出关键信息。Rasa NLU可以使用Spacy、MITIE或自定义组件来进行实体识别。

Rasa Core中使用的模型:

  • Dialogue Management(对话管理):Rasa Core利用强化学习(如PPO)或基于规则的系统来管理对话流程,预测下一个最佳的动作(response或API调用等)。用户可以训练自己的策略模型来适应特定的对话场景。

更换模型:

Rasa设计得相当灵活,允许用户根据需要更换或自定义模型。例如,你可以:

  • 替换NLU分类器:通过修改配置文件(通常是config.yml),你可以指定使用不同的分类器或调整现有模型的参数。
  • 实体抽取器的选择:可以通过配置选择不同的实体抽取模型,比如从Spacy切换到MITIE,或使用自定义的实体识别逻辑。
  • 对话策略的定制:Rasa Core允许你更换对话管理的策略,比如从基于模板的规则策略切换到使用强化学习的策略,或者自定义策略逻辑。

总之,Rasa框架的架构支持高度的可定制性,意味着开发者可以根据项目需求选择最适合的模型和技术栈,并且随着项目的进展,可以方便地调整或升级这些模型。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Vue3(TypeScript)-CSSProperties代码示例及用法详解
  • ubuntu22.04安装cuda10.2
  • matlab 2023b 不要升级,升级用不了
  • android pdf文件预览
  • 【React】二次封装Antd的Table组件
  • SQL注释方法 -- 单行注释/多行注释
  • 数据结构(三)循环链表
  • 【数据结构】排序算法大全(快速、堆、归并、插入、折半、希尔、冒泡、计数、基数)各算法比较、解析+完整代码
  • UE4/UE5像素流送云推流:多人访问不稳定、画面糊、端口占用多等
  • 3D Slicer:从入门到精通——数据模块之DICOM
  • 【C语言】结构体内存对齐:热门面试话题
  • day15
  • 百度 提前批 国际化广告部 (深圳-机器学习/数据挖掘/自然语言处理工程师) 一面+二面面经
  • 记录centos中操作(查找、结束、批量)进程以及crontab定时写法的知识
  • 数据库SQL语言实战(十)(最后一篇)
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • HTTP中GET与POST的区别 99%的错误认识
  • jquery cookie
  • js对象的深浅拷贝
  • Python学习笔记 字符串拼接
  • SQLServer之索引简介
  • V4L2视频输入框架概述
  • 开源地图数据可视化库——mapnik
  • 排序算法学习笔记
  • 前端知识点整理(待续)
  • 事件委托的小应用
  • 数据仓库的几种建模方法
  • 为什么要用IPython/Jupyter?
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 想使用 MongoDB ,你应该了解这8个方面!
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​数据结构之初始二叉树(3)
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • # 数据结构
  • #{}和${}的区别是什么 -- java面试
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • (2.2w字)前端单元测试之Jest详解篇
  • (2022 CVPR) Unbiased Teacher v2
  • (NSDate) 时间 (time )比较
  • (二)pulsar安装在独立的docker中,python测试
  • (算法)Travel Information Center
  • (译)计算距离、方位和更多经纬度之间的点
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .NET 4.0中的泛型协变和反变
  • .net framework 4.0中如何 输出 form 的name属性。
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .NET面试题(二)
  • .NET实现之(自动更新)
  • [ai笔记9] openAI Sora技术文档引用文献汇总
  • [Algorithm][动态规划][两个数组的DP][正则表达式匹配][交错字符串][两个字符串的最小ASCII删除和][最长重复子数组]详细讲解
  • [Algorithm][综合训练][拜访][买卖股票的最好时机(四)]详细讲解
  • [Angular] 笔记 8:list/detail 页面以及@Input