rasa算法_Rasa 入门教程 Core 系列(五)

Rasa 入门教程 Core 系列包括十一个部分,前面介绍了Kevin陶民泽:Rasa 入门教程 Core 系列(四)​zhuanlan.zhihu.com

。本文主要介绍 Rasa 框架 Core 系列的第五部分:策略。

本文的目录结构:策略配置

动作选择

Keras 策略

Embedding 策略

Mapping 策略

Memoization 策略

Augmented Memoization 策略

Fallback 策略

Two-Stage Fallback 策略

Form 策略

1. 策略配置

类 rasa.core.policies.Policy 决定在对话的每个步骤中应采取的什么动作。有多种策略可供选择,您可以在 rasa.core.agent.Agent 中包含多个策略。

项目中的 config.yml 文件有关键字 policies,你可以使用该关键字来自定义助手使用的策略。在下面的示例中,最后两行显示了如何使用自定义策略类并将参数传递给它。

policies:

- name: "KerasPolicy"

featurizer:

- name: MaxHistoryTrackerFeaturizer

max_history: 5

state_featurizer:

- name: BinarySingleStateFeaturizer

- name: "MemoizationPolicy"

max_history: 5

- name: "FallbackPolicy"

nlu_threshold: 0.4

core_threshold: 0.3

fallback_action_name: "my_fallback_action"

- name: "path.to.your.policy.class"

arg1: "..."

1.1 最长历史记录

Rasa 核心策略的一个重要超参数是 max_history。这可以控制模型查看多少对话历史记录,以决定下一步应采取什么动作。

你可以在 yaml 文件中的配置策略里通过设置 max_history 值将其传递到 Featurizer。

例如:假设你有一个 out_of_scope 表示超纲的意图。如果你的机器人连续多次看到此意图,则可能要告诉用户你可以提供哪些帮助。因此你的 story 可能如下所示:

* out_of_scope

- utter_default

* out_of_scope

- utter_default

* out_of_scope

- utter_help_message

为了使 Rasa Core 学习这种模式,max_history 至少为 4。

如果增加 max_history,你的模型将变得更大,并且训练将花费更长的时间。如果你有会影响将来对话的一些信息,则应将其作为槽位存储,槽位信息可以用于每个特征提取器。

1.2 数据增强

训练模型时,默认情况下,Rasa Core 随机将 stories 文件中的 stories 粘合在一起来创建更长的 stories。stories 文件如下所示:

# thanks

* thankyou

- utter_youarewelcome

# bye

* goodbye

- utter_goodbye

实际上你想教自己的策略在不相关时忽略对话历史记录,而无论以前发生了什么,都只需以相同的动作进行响应即可。

你可以使用 --augmentation 标志更改此行为,允许你设置 augmentation_factor。augmentation_factor 决定在训练中有多少增强的 stories 是子采样。增强后的 stories 在训练之前会进行二次抽样,因为它们的数量会很快变得非常大,我们希望对其进行限制。样本 stories 的数量是augmentation_factorx10。默认情况下,增强设置为 20,最多可生成200个增强 stories。

--augmentation 0 表示禁用所有增强行为。基于 Memoization 策略不受增强影响(与 augmentation_factor 无关),并且会自动忽略所有增强的 stories。

2. 动作选择

在任何时候,配置中定义的每个策略都会以一定的置信度预测下一个动作。有关每个策略如何做出决策的更多信息,请阅读下面的策略说明。然后,该机器人的下一步动作将由具有最高置信度的预测策略决定。

在两个相同的置信度策略进行预测的情况下(例如:Memoization 和 Mapping 策略,始终以 0 或 1 的置信度进行预测),则将考虑策略的优先级。Rasa 策略有默认优先级,这些默认优先级用于在平局时的预期结果。如下所示,数字越高优先级越高:

5. FormPolicy

4. FallbackPolicy and TwoStageFallbackPolicy

3. MemoizationPolicy and AugmentedMemoizationPolicy

2. MappingPolicy

1. EmbeddingPolicy, KerasPolicy, and SklearnPolicy

上述优先级层次结构可确保,在 NLU 的置信度值在 nlu_threshold 之下(例如:如果有一个 mapped 动作),机器人仍将回退。通常,不建议每个优先级使用一个以上的策略,并且某些优先级相同的策略(例如两个 fallback 策略)严格不能一并使用。

如果创建自己的策略,请使用这些优先级作为确定策略优先级的指南。如果你的策略是机器学习策略,则它最有可能具有与 Rasa 机器学习策略相同的优先级 1。

3. Keras 策略

KerasPolicy 策略在 Ke

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值