16年
问题:
1)个性化系统难训练,因为从单个用户可以获得数据很少,而且数据集小的话容易过拟合;
2)从source到target迁移学习较难,之前方法没有考虑前到后的差异
背景:
Personalized:使得对话更好更快,学习用户的偏好(下次点单就可以优先推荐),
-
对话对应成一个POMDP 结构,使用元组{S, A, O, P, R, Z, γ}表示,
S是状态,A是action,O是utterance,P是状态转移概率函数,R是reward,Z是观察函数(?),y是reward的衰减因子,
假设,u表示某一个用户,i表示对话中轮数,相当于第几完整的问答。是隐含的对话状态,是用户的提问,是智能体给出的回答,是reward。
在每个i的时候我们只记录O,A,r。置信状态向量是我们定义的,。因为S是无法观察无法记录无法表示的,用b来代替他,(以前的方法中S是显性给出的)。将对话历史对应到b。
-
任务的输入是:
source,大量的对话,
target,少量对话
输出是一个策略,对于target用户。 -
任务目标 :我们选择,使得在给予对话历史H的情况下选择好的A,标准是是的累计reward达到最大。
-
首先,H对应到b的算法,用到矩阵M。
(1累计reward/Q要达到最大,我们使用value-based方法,不实用policy-based因为后者生成回复时逐字生成,需要大量训练数据
(2因为target数据很少,所以Q也不好收敛,所以先设置source_Q,然后个性化一个target_Q,
Pu是target独有的参数,整个过程使用到了迁移学习。
o是Utterance变来的,来了h是将之前左右的按衰减累加然后通过矩阵M想成得到,o是本次提问与矩阵M相乘。a同理。
方法:
1)模型不变,训练集发生变化。先source domain是多个用户的对话,target domain是单个用户的对话。
2)在target domain训练的时候,使用之前训练好的参数作为初始化状态。
3)训练的时候,source和 target是不一样的用户,所以喜好习惯就可能不同。在source学的是统一的对话知识X,在target 学习具体用户的喜好。
4)
具体技巧:
1.为Q-function设置个性化处理,设置好几个reward,但是有些在training的时候互相不能区分,policy也不一样。
target中的Q函数,是某一次对话句子i中用户u说的话,在请求咖啡种类选择集Ci(对话到第i句)中选择的第j个。是用户的常用喜好(包括target和source)。
C(函数)代表的概率,是一次多元分布,伯努利投n次骰子的简版。
是当Cj为1的时候取1,1到m是所有的action候选集元素。如果等于0,代表没有收集到个性化Q。
2。reward设置:对于某一turn中用户是接受还是拒绝agent的utterance,对话结束的长度,对话结束用户反馈,等
3 迁移学习算法
实验结果:
当user没有按照习惯点单的时候,agent也能及时反应(使用source domain中学到的知识)
而且和之前相比,硬性指标也有提高(AUC; average reward)