1 引言
在机器翻译、图片描述、语义蕴涵、语音识别和文本摘要中,序列到序列的问题已经有太多大牛研究了,也取得了很多突破。谷歌的Attention is all you need[1],舍弃并超越了主流的rnn与cnn序列建模框架,刷出了新的state of the art,这种大胆创新的精神值得我们学习。后面相信会有更多的attention变体甚至和rnn/cnn结合的电路图涌现,当然我们更期待的不是这些,我们更向往大道至简。我们在follow的同时,也期望自己的每一个新的想法,新的尝试能够汇入深度学习的大浪,为人类的未来贡献自己的一份力量。
在电子商务搜索中,query作为表达用户意图的载体起到了非常重要的作用。如何根据用户的历史行为序列给用户推荐一个query,吸引用户发生搜索以及后续的成交是非常有意义的,比如淘宝的底纹推荐。如下图是一个在iphone上的引导图,欢迎大家多多使用底纹。
2 技术方案
在技术方案这部分,我们首先介绍一下整体思路,然后重点讨论一下序列embedding.
2.1 整体思路
总的来说,思路主要有两种:1)编码解码直接生成query;2)把user向量和query向量映射到同样的向量空间里,然后通过向量相似召回来获取query,候选query是日志中已经存在的。下面分别介绍下:
2.1.1 Sequence to sequence[2]
大体来说,这种思路一般是首先把source sequence通过一个encoder map成一个vector,然后用这个vector作为context向量去通过另一个decoder进行翻译得出output.后面有很多同行在这个基本思路上做了很多改进,我们尝试最基本的一种,没有把网络搞的很复杂。如下图所示,首先获取用户的行为序列,然后 encode成user-embedding向量,然后这个向量作为context向量来解码query,每一步解码一个词/字。在预测的阶段一般采取beam search搜索策略来获取最可能的topK个候选query的词序列。