每一轮对话,rasa的每一个策略会预测下一个action,并给出置信度,Rasa
Agent会选出最高置信度的action。当置信度相同的时候,rasa会通过优先级来决定选择的action。
如果设置了两个优先级相同的策略,当置信度相同的时候会导致结果是随机的,所以不建议同时使用多个优先级相同的策略。
rasa优先级(数字越高,优先级越高):
指引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
epochs数值越小训练速度越快,epochs值会影响训练出来的模型的质量,但并不是将值设置的越高训练的模型质量越高。
① 参数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"
通过计算对话特征和系统动作特征的相似度提取特征,应用 CRF 算法来预测每个用户文本输入的上下文实体,并通过特征来决定采取何种动作。
① 触发情况
意图识别的置信度值低于 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
这是针对具备固定行为的对话而设定的策略
配置信息
policies:
- name: "RulePolicy"
core_fallback_threshold: 0.3 # 应用“core_fallback_action_name”的置信度阈值
core_fallback_action_name: action_default_fallback # 如果没有其他动作被预测到,动作将应用
记住训练数据中的会话。如果训练数据中存在正确的对话(与stories相匹配),它会根据训练数据将置信度设置为 1.0 ,并预测下一个动作,否则置信度为 0.0 预测为 None。
与MemoizationPolicy的区别在于具有遗忘机制,可以遗忘历史对话记录中的某些步骤,并尝试在历史记录短的情况下找到匹配项。它会根据训练数据将置信度设置为 1.0 ,并预测下一个动作,否则置信度为 0.0 预测为 None。
FormPolicy 策略是 MemoizationPolicy 的扩展,用来处理表单填充。当 FormAction 被调用时,FormPolicy 策略将不断预测 FormAction,直到表单中的所有必需的槽位值被填充。
用于意图对应action之间点对点的直接联系,bot在收到触发意图消息后将运行映射的动作, 然后继续监听下一条消息。随着下一条用户消息,将恢复正常预测。
rasa官方文档
知乎:
Rasa 入门教程 Core 系列(五)- 桃子
RASA CORE Policy- 孟繁中