当前位置: 首页 > 工具软件 > Rasa > 使用案例 >

rasa学习笔记3-rasa策略

吕自明
2023-12-01

策略

  • 每一轮对话,rasa的每一个策略会预测下一个action,并给出置信度,Rasa
    Agent会选出最高置信度的action。当置信度相同的时候,rasa会通过优先级来决定选择的action。

  • 如果设置了两个优先级相同的策略,当置信度相同的时候会导致结果是随机的,所以不建议同时使用多个优先级相同的策略。

  • rasa优先级(数字越高,优先级越高):

    1. FormPolicy
    2. FallbackPolicy and TwoStageFallbackPolicy
    3. MemoizationPolicy and AugmentedMemoizationPolicy
    4. MappingPolicy
    5. EmbeddingPolicy, KerasPolicy, and SklearnPolicy

1、策略的配置(自定义配置)

(1)核心参数max_history:

指引rasa根据多少轮对话记录,来决定下一步执行什么动作,max_history的越大,会使得你的模型变得越大,训练的时间越长。

eg、我们需要bot在识别一个意图达到3次的时候执行一个与原设定不一样的回复话术:
可以在对话策略(/stories)里进行如下调整:

stories:
    # 当识别到三次out_of_scope意图以后执行help_message回复话术
    # 为了使RasaCore获得这种行为,需要将max_history设置值最少为4
 - story: utter help after 2 fallbacks
    steps:
    - intent: out_of_scope
    - action: utter_default
    - intent: out_of_scope
    - action: utter_default
    - intent: out_of_scope
    - action: utter_help_message

(2)参数epochs:

epochs数值越小训练速度越快,epochs值会影响训练出来的模型的质量,但并不是将值设置的越高训练的模型质量越高。

(3)rasa文档提及的更多的policy参数:

	① 参数number_of_transformer_layers:
	设置序列转换器编码器层数,用于用户、动作和动作标签文本的序列转换器编码器以及对话转换器编码器
	② 参数transformer_size:
	设置序列转换器编码器层中的单元数,以用于用户、动作和动作标签文本的序列转换器编码器以及对话转换器编码器。
	③ weight_sparsity:
	定义了模型中所有前馈层设置为 0 的内核权重的比例,该值应为 0 到 1 之间的数字。如果设置weight_sparsity 为 0,则不会将内核权重设置为 0,如果将weight_sparsity设置为1,会导致模型无法学习。
	④ ...更多的参数参考rasa官网文档

(4)策略样例模板

policies:
  - name: "MemoizationPolicy"
    max_history: 5
  - name: "FallbackPolicy"
    nlu_threshold: 0.4
    core_threshold: 0.3
    fallback_action_name: "my_fallback_action"

2、策略种类

(1)TED policy:

通过计算对话特征和系统动作特征的相似度提取特征,应用 CRF 算法来预测每个用户文本输入的上下文实体,并通过特征来决定采取何种动作。

(2)Fallback policy:

① 触发情况
意图识别的置信度值低于 nlu_threshold;
排名最高意图的置信度与排名第二意图的置信度值相差小于 ambiguity_threshold;
没有一项对话政策预测高于置信度 core_threshold 的action
② 配置信息
默认动作action_default_fallback:需要先设置好回复话术utter_default
policies:
  - name: "FallbackPolicy"
    nlu_thrpolicies:
  - name: "FallbackPolicy"
    nlu_threshold: 0.3      # 接受NLU预测所需的最低置信度
    ambiguity_threshold: 0.1      # 最高意图的置信度必须超过第二高意图的置信度的最小值
    core_threshold: 0.3      # 接受Rasa Core的动作预测所需的最低置信度
    fallback_action_name: 'action_default_fallback'     # 当意图或动作的置信度低于阈值,将执行回退动作
③ 自定义action_default_fallback

(3)Rulepolicy:

这是针对具备固定行为的对话而设定的策略
配置信息
policies:
  - name: "RulePolicy"
    core_fallback_threshold: 0.3      # 应用“core_fallback_action_name”的置信度阈值
    core_fallback_action_name: action_default_fallback       # 如果没有其他动作被预测到,动作将应用

(4)MemoizationPolicy

记住训练数据中的会话。如果训练数据中存在正确的对话(与stories相匹配),它会根据训练数据将置信度设置为 1.0 ,并预测下一个动作,否则置信度为 0.0 预测为 None。

(5)AugmentedMemoizationPolicy

与MemoizationPolicy的区别在于具有遗忘机制,可以遗忘历史对话记录中的某些步骤,并尝试在历史记录短的情况下找到匹配项。它会根据训练数据将置信度设置为 1.0 ,并预测下一个动作,否则置信度为 0.0 预测为 None。

(6)FormPolicy

FormPolicy 策略是 MemoizationPolicy 的扩展,用来处理表单填充。当 FormAction 被调用时,FormPolicy 策略将不断预测 FormAction,直到表单中的所有必需的槽位值被填充。

(7)MappingPolicy

用于意图对应action之间点对点的直接联系,bot在收到触发意图消息后将运行映射的动作,		然后继续监听下一条消息。随着下一条用户消息,将恢复正常预测。

参考文档:

rasa官方文档
知乎:
Rasa 入门教程 Core 系列(五)- 桃子
RASA CORE Policy- 孟繁中

 类似资料: