Query-Level Encoding
对于查询 Q m Q_m Qm={
w w w m _m m , , , 1 _1 1,…, w w w m _m m , , , N _N N m _m m}
h h h m _m m , , , 0 _0 0=0(初始0向量)
Session-Level Encoding
一个session中得查询集合 q 1 q_1 q1,…, q M q_M qM
s s s 0 _0 0=0(初始0向量)
Next-Query Decoding
根据先前得查询预测下一个查询:
解码RNN
每一个当前隐藏状态用于计算下一个词出现得概率:
o o o是一个真值向量。(可以是词得嵌入向量),这个 o o o与下面得 w w w m _m m n _n n − _- − 1 _1 1维度不同。
其中:
w w w m _m m , , , 0 _0 0=0,(初始0向量。)
Learning
通过最大化Session的log-likelihood(由公式6和公式9估计的概率定义)来学习这些:
整体思路
考虑一个用户提交查询:cleveland gallery → lake erie artist.。suggestion系统操作如下:
- 将(4)应用于每个查询,得到查询向量qcleveland gallery和qlake erie art。
- 然后,通过将(5)应用于查询向量来计算会话级的递归状态。如:得到了两个会话级的递归状态:cleveland gallery和slake erie art。
- 要生成上下文感知建议,首先映射最后一个session-level得隐藏状态——s ( _( ( l _l l a _a a k _k k e _e e e _e e r _r r i _i i e _e e a _a a r _r r t _t t ) _) ),使用公式(7),作为初始解码器得输入。
- 假设波束搜索大小为1,suggestion中第一个单词 w 1 w_1 w1的概率是通过 d 0 d_0 d0和 w 0 w_0 w0= 0 0 0(零向量)用等式(9)计算的。概率最高的词,即cleveland,被加到波束上。
- 使用 d 0 d_0 d0和 w 1 w_1 w1=cleveland ,通过(8)计算下一个解码器的循环状态 d 1 d_1 d1。使用 d 1 d_1 d1,可以选择 w 2 w_2 w2=indian作为第二个最有可能的单词。过程重复,模型依次选择“art”和“◦”(查询结束符号)。一旦查询结束符号被采样,上下文感知的suggesion: cleveland indian art 呈现给用户。
实验
数据集:AOL
模型训练
-
词汇 V V V:90 K K K。这是应用于语言的RNN的一个常见设置。
-
使用小批量RMSPROP]进行参数优化。
-
如果梯度的范数超过阈值c=1,通过规范化梯度来稳定学习。
-
如果验证集的likelihood在连续5次迭代中没有改善,则停止训练。
-
使用Theano library训练模型。查询-level的RNN维度设置为 d h d_h dh=1000。为了确保高容量的session-level的RNN,设置 d s d_s ds=1500。这对于记忆以前查询的复杂信息非常有用。输出词嵌入维度为300,即 d e d_e de=300。
An implementation of the model is available at https://github.com/sordonia/hed-qs.