本文结构:
今天的论文是 《Assigning Personality/Identity to a Chatting Machine for Coherent Conversation Generation》
https://arxiv.org/pdf/1706.02861.pdf
当我们在和聊天机器人互动时,最开始往往很好奇的就是对方到底是人还是机器人呢,所以会问到一些关于对方身份的问题,这对于机器人能否通过图灵测试还是很重要的问题之一。
这篇论文提前预设好机器人的身份档案,并且做到在相关的问答中做到与设置的一致,就可以让机器人在回答时能够有一定的身份特征。和其他的区别是不用从对话中慢慢学习出个性。
假设机器人的预设档案为:
本论文的模型与普通的 seq2seq 效果比较为:
整体:
提问:
, 被 Encoder 将 post 转化后的向量
- x = x1x2···xn
。x 的隐藏层状态由 GRU 获得
- x = x1x2 · · · xn
。
- h = (h1, h2, · · ·, hn)
回答:
- {< ki, vi > |i = 1, 2, · · · , K}
- y=y1y2···ym
问题建模:
1. 其中
是根据提问 x,看需要用档案来回答的概率,由 Profile Detector 计算出。
- P(z|x)
由训练的二分类器得到
,h~ 是所有 hj 的和,Wp 是分类器的参数。
- P (z|x) = P (z| h~) = σ(Wp h~)
,用来决定根据哪个关键字答复,其中 f 为 softmax 激活函数,选择概率最大的那一组 key-value。
- βi = MLP([ h~, ki, vi]) =f(W ·[ h~;ki;vi])
2.
是根据 x 生成 y,由通常的 forward decoder 生成。
- Pfr(y|x)
3.
是根据 x 和档案生成 y,由 Bidirectional Decoder 生成:
- Pbi(y|x, {< ki, vi >})
即
为生成的回复,v~ 是选中的 value:
- y = (yb, v~, yf )
先由 x,v~ 得到 yb,再由 x,v~,yb 得到 yf。
通过下式计算:
- Pb,Pf
其中
是 decoder 的相应状态,
- sj
是语境的向量:
- cj
和
- P fr
的参数不是共享的。
- P bi
因为用于训练的问答句是从社交网站上获得的,前面识别出来的 value 可能并不会出现在答复中,这样 bidirectional decoder 就会不知道从哪个位置开始,所以在这一步会做相关的处理。
例如,
- post x = "你 - 1有 - 2什么 - 3特长 - 4 ? -5 response y = "我 - 1非常 - 2擅长 - 3小提琴 - 4 a profile key value pair" < 特长,
- 钢琴 >
那么 "小 提 琴 - 4" 的位置会传递给 decoder,然后替换成 "钢 琴"。
用
来表示 yj 可以被 v 替换的概率。
- P (j|y1y2 · · · ym, < k, v > )), 1 ≤ j ≤ m
计算方法用两个单词的距离:
- P(j|y,< k,v >)) ∝ cos(yj,v)
由两部分组成:
- L = L1 + αL2
1. L1 是生成答复的,根据最开始的问题模型可以得到:
D(c) 是只有 post-response 对的,D(pr) 是 post,value-response 的。
2. L2 是 profile detector 预测是否用档案及用哪个关键词的,根据前面定义过的
和
- P(z|x)
:
- βi
z=0 不用,z=1 用, k^ 是锁定的 key。
推荐阅读
历史技术博文链接汇总
也许可以找到你想要的:
[入门问题][TensorFlow][深度学习][强化学习][神经网络][机器学习][自然语言处理][聊天机器人]
来源: http://blog.csdn.net/aliceyangxi1987/article/details/75276376